'a'
mh-two-thousand-and-two
2024-04-12 44d2c92345cd156a59fc327b3060292a282d2893
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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
export const loadedSubPackages = []
 
/**
 * 指定路由 ready 后,检查是否触发分包预加载
 * @param {Object} route
 */
export function preloadSubPackages (route) {
  if (!__uniConfig.preloadRule) {
    return
  }
  const options = __uniConfig.preloadRule[route]
  if (!options || !Array.isArray(options.packages)) {
    return
  }
  const packages = options.packages.filter(root => loadedSubPackages.indexOf(root) === -1)
  if (!packages.length) {
    return
  }
  loadSubPackages(options.packages)
  // 暂不需要网络下载
  // const network = options.network || 'wifi'
  // if (network === 'wifi') {
  //   uni.getNetworkType({
  //     success (res) {
  //       if (process.env.NODE_ENV !== 'production') {
  //         console.log('UNIAPP[preloadRule]:' + res.networkType + ':' + JSON.stringify(options))
  //       }
  //       if (res.networkType === 'wifi') {
  //         loadSubPackages(options.packages)
  //       }
  //     }
  //   })
  // } else {
  //   if (process.env.NODE_ENV !== 'production') {
  //     console.log('UNIAPP[preloadRule]:' + JSON.stringify(options))
  //   }
  //   loadSubPackages(options.packages)
  // }
}
 
export function loadPage (route, callback) {
  let isInSubPackage = false
  const subPackages = __uniConfig.subPackages
  if (Array.isArray(subPackages)) {
    const subPackage = subPackages.find(subPackage => route.indexOf(subPackage.root) === 0)
    if (subPackage) {
      isInSubPackage = true
      loadSubPackage(subPackage.root, callback)
    }
  }
  if (!isInSubPackage) {
    callback()
  }
}
 
function loadSubPackage (root, callback) {
  if (loadedSubPackages.indexOf(root) !== -1) {
    return callback()
  }
  loadSubPackages([root], () => {
    callback()
  })
}
 
const SUB_FILENAME = 'app-sub-service.js'
 
function evaluateScriptFiles (files, callback) {
  __uniConfig.onServiceReady(() => {
    weex.requireModule('plus').evalJSFiles(files, callback)
  })
}
 
function loadSubPackages (packages, callback) {
  if (process.env.NODE_ENV !== 'production') {
    console.log('UNIAPP[loadSubPackages]:' + JSON.stringify(packages))
  }
  const startTime = Date.now()
  evaluateScriptFiles(packages.map(root => {
    loadedSubPackages.push(root)
    return root + '/' + SUB_FILENAME
  }), res => {
    if (process.env.NODE_ENV !== 'production') {
      console.log('UNIAPP[loadSubPackages]:耗时(' + (Date.now() - startTime) + ')')
    }
    callback && callback(true)
  })
}