'f'
mh-two-thousand-and-two
2024-04-12 26f2711ef9461961fb953e2b497bd314ef95e345
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
import Vue from 'vue'
 
import baseMixin from 'uni-mixins/base'
import animation from 'uni-mixins/animation'
 
const requireComponents = [
  // baseComponents
  require.context('./', true, /index\.vue$/),
  require.context('../../../platforms/' + __PLATFORM__ + '/view/components', true, /index\.vue$/)
]
 
let elements = {}
 
if (__PLATFORM__ === 'app-plus') {
  // TODO use full polyfill
  require('uni-core/helpers/custom-elements-define')
  const module = require('../../../platforms/app-plus/view/elements/index.js')
  elements = module.default || module
  for (const key in elements) {
    // TODO use kebabCase
    customElements.define(`uni-${key.toLowerCase()}`, elements[key])
  }
}
 
requireComponents.forEach((components, index) => {
  components.keys().forEach(fileName => {
    // 获取组件配置
    const componentModule = components(fileName)
 
    const componentConfig = componentModule.default || componentModule
 
    componentConfig.mixins = componentConfig.mixins ? [].concat(baseMixin, componentConfig.mixins) : [baseMixin]
 
    if (!componentConfig.functional) {
      componentConfig.mixins.push(animation)
    }
 
    componentConfig.name = 'VUni' + componentConfig.name
 
    componentConfig.isReserved = true
 
    // 全局注册组件
    Vue.component(componentConfig.name, componentConfig)
  })
})