diff --git a/packages/uni-app-plus/dist/index.v3.js b/packages/uni-app-plus/dist/index.v3.js index af0ef8118133f70915a4cad471f59beeab2a7a54..157975fb96aa51f756c0c000868b4c966f345154 100644 --- a/packages/uni-app-plus/dist/index.v3.js +++ b/packages/uni-app-plus/dist/index.v3.js @@ -7414,7 +7414,7 @@ var serviceContext = (function () { console.log(`[restoreGlobal][${Date.now()}]`); } weex = newWeex; - plus = newPlus; + plus = newPlus; plus.navigator.setStatusBarStyle = newSetStatusBarStyle; /* eslint-disable no-global-assign */ setTimeout = newSetTimeout; @@ -7422,6 +7422,7 @@ var serviceContext = (function () { setInterval = newSetInterval; clearInterval = newClearInterval; } + __uniConfig.serviceReady = true; } function wrapper$1 (webview) { @@ -7523,17 +7524,119 @@ var serviceContext = (function () { return weex.requireModule('plus').sendNativeEvent(event, data, callback) } + const loadedSubPackages = []; + + /** + * 指定路由 ready 后,检查是否触发分包预加载 + * @param {Object} route + */ + 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) + // } + } + + 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$1(subPackage.root, callback); + } + } + if (!isInSubPackage) { + callback(); + } + } + + function loadSubPackage$1 (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); + }); + } + + const SUB_FILENAME$1 = 'app-sub-service.js'; + function evaluateScriptFile (file, callback) { - // TODO 有可能当前 instance 是非 app-service - weex.requireModule('plus').evalJSFiles([file], callback); + __uniConfig.onServiceReady(() => { + weex.requireModule('plus').evalJSFiles([file], callback); + }); } - function loadSubPackage$1 ({ + function loadSubPackage$2 ({ root }, callbackId) { - evaluateScriptFile(root + '/' + SUB_FILENAME, res => { + if (loadedSubPackages.indexOf(root) !== -1) { + return { + errMsg: 'loadSubPackage:ok' + } + } + loadedSubPackages.push(root); + if (process.env.NODE_ENV !== 'production') { + console.log('UNIAPP[loadSubPackage]:' + root); + } + const startTime = Date.now(); + evaluateScriptFile(root + '/' + SUB_FILENAME$1, res => { + if (process.env.NODE_ENV !== 'production') { + console.log('UNIAPP[loadSubPackage]:耗时(' + (Date.now() - startTime) + ')'); + } invoke$1(callbackId, { errMsg: 'loadSubPackage:ok' }); @@ -8430,91 +8533,6 @@ var serviceContext = (function () { return pageVm } - const loadedSubPackages = []; - - /** - * 指定路由 ready 后,检查是否触发分包预加载 - * @param {Object} route - */ - 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 - } - 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); - } - } - - 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$2(subPackage.root, callback); - } - } - if (!isInSubPackage) { - callback(); - } - } - - function loadSubPackage$2 (root, callback) { - if (loadedSubPackages.indexOf(root) !== -1) { - return callback() - } - loadSubPackages([root], () => { - callback(); - }); - } - - const SUB_FILENAME$1 = 'app-sub-service.js'; - - function evaluateScriptFiles (files, callback) { - // TODO 有可能当前 instance 是非 app-service - 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$1 - }), res => { - if (process.env.NODE_ENV !== 'production') { - console.log('UNIAPP[loadSubPackages]:' + (Date.now() - startTime)); - } - callback && callback(true); - }); - } - const pages = []; function getCurrentPages$1 (returnAll) { @@ -9933,7 +9951,7 @@ var serviceContext = (function () { getCurrentSubNVue: getCurrentSubNVue, onNativeEventReceive: onNativeEventReceive, sendNativeEvent: sendNativeEvent, - loadSubPackage: loadSubPackage$1, + loadSubPackage: loadSubPackage$2, navigateBack: navigateBack$1, navigateTo: navigateTo$1, reLaunch: reLaunch$1, diff --git a/packages/webpack-uni-pages-loader/lib/platforms/app-plus/app-config-service.js b/packages/webpack-uni-pages-loader/lib/platforms/app-plus/app-config-service.js index 9585cbf21bed428a5a42bbefd925209b0b19afce..1b366849ace4803c5eb538653279650f43536617 100644 --- a/packages/webpack-uni-pages-loader/lib/platforms/app-plus/app-config-service.js +++ b/packages/webpack-uni-pages-loader/lib/platforms/app-plus/app-config-service.js @@ -67,10 +67,12 @@ module.exports = function definePages (appJson) { return { name: 'app-config-service.js', content: ` -var isReady=false;var onReadyCallbacks=[]; +var isReady=false;var onReadyCallbacks=[]; +var isServiceReady=false;var onServiceReadyCallbacks=[]; var __uniConfig = ${JSON.stringify(appJson, null)}; var __uniRoutes = ${JSON.stringify(__uniRoutes)}; -__uniConfig.onReady=function(callback){if(__uniConfig.ready){callback()}else{onReadyCallbacks.push(callback)}};Object.defineProperty(__uniConfig,"ready",{get:function(){return isReady},set:function(val){isReady=val;if(!isReady){return}const callbacks=onReadyCallbacks.slice(0);onReadyCallbacks.length=0;callbacks.forEach(function(callback){callback()})}}); +__uniConfig.onReady=function(callback){if(__uniConfig.ready){callback()}else{onReadyCallbacks.push(callback)}};Object.defineProperty(__uniConfig,"ready",{get:function(){return isReady},set:function(val){isReady=val;if(!isReady){return}const callbacks=onReadyCallbacks.slice(0);onReadyCallbacks.length=0;callbacks.forEach(function(callback){callback()})}}); +__uniConfig.onServiceReady=function(callback){if(__uniConfig.serviceReady){callback()}else{onServiceReadyCallbacks.push(callback)}};Object.defineProperty(__uniConfig,"serviceReady",{get:function(){return isServiceReady},set:function(val){isServiceReady=val;if(!isServiceReady){return}const callbacks=onServiceReadyCallbacks.slice(0);onServiceReadyCallbacks.length=0;callbacks.forEach(function(callback){callback()})}}); service.register("uni-app-config",{create(a,b,c){if(!__uniConfig.viewport){var d=b.weex.config.env.scale,e=b.weex.config.env.deviceWidth,f=Math.ceil(e/d);Object.assign(__uniConfig,{viewport:f,defaultFontSize:Math.round(f/20)})}return{instance:{__uniConfig:__uniConfig,__uniRoutes:__uniRoutes,${globalStatement}}}}}); ` } diff --git a/src/platforms/app-plus/service/api/plugin/load-sub-package.js b/src/platforms/app-plus/service/api/plugin/load-sub-package.js index 387f56b761e006c1dcde7cabe11303c5a3d6db9c..1af1d6445ab712c9e8e1536e0e7b74c6ba677473 100644 --- a/src/platforms/app-plus/service/api/plugin/load-sub-package.js +++ b/src/platforms/app-plus/service/api/plugin/load-sub-package.js @@ -2,17 +2,35 @@ import { invoke } from '../../bridge' +import { + loadedSubPackages +} from '../../framework/load-sub-package' + const SUB_FILENAME = 'app-sub-service.js' function evaluateScriptFile (file, callback) { - // TODO 有可能当前 instance 是非 app-service - weex.requireModule('plus').evalJSFiles([file], callback) + __uniConfig.onServiceReady(() => { + weex.requireModule('plus').evalJSFiles([file], callback) + }) } export function loadSubPackage ({ root }, callbackId) { + if (loadedSubPackages.indexOf(root) !== -1) { + return { + errMsg: 'loadSubPackage:ok' + } + } + loadedSubPackages.push(root) + if (process.env.NODE_ENV !== 'production') { + console.log('UNIAPP[loadSubPackage]:' + root) + } + const startTime = Date.now() evaluateScriptFile(root + '/' + SUB_FILENAME, res => { + if (process.env.NODE_ENV !== 'production') { + console.log('UNIAPP[loadSubPackage]:耗时(' + (Date.now() - startTime) + ')') + } invoke(callbackId, { errMsg: 'loadSubPackage:ok' }) diff --git a/src/platforms/app-plus/service/api/plugin/restore-global.js b/src/platforms/app-plus/service/api/plugin/restore-global.js index 25d47c5621ed25d1bbf63aaf89f5e78e467a0a82..e830261e8faa258e81c041c8654f3855011440ce 100644 --- a/src/platforms/app-plus/service/api/plugin/restore-global.js +++ b/src/platforms/app-plus/service/api/plugin/restore-global.js @@ -1,7 +1,7 @@ import { newSetStatusBarStyle -} from '../../bridge' - +} from '../../bridge' + export function restoreGlobal ( newWeex, newPlus, @@ -19,7 +19,7 @@ export function restoreGlobal ( console.log(`[restoreGlobal][${Date.now()}]`) } weex = newWeex - plus = newPlus + plus = newPlus plus.navigator.setStatusBarStyle = newSetStatusBarStyle /* eslint-disable no-global-assign */ setTimeout = newSetTimeout @@ -27,4 +27,5 @@ export function restoreGlobal ( setInterval = newSetInterval clearInterval = newClearInterval } + __uniConfig.serviceReady = true } diff --git a/src/platforms/app-plus/service/framework/load-sub-package.js b/src/platforms/app-plus/service/framework/load-sub-package.js index 3e70146976845d74d3ef745a6c8affe98f156e6a..b4edfd931d85ad466fd5b8bcf5083ecf6c2dd819 100644 --- a/src/platforms/app-plus/service/framework/load-sub-package.js +++ b/src/platforms/app-plus/service/framework/load-sub-package.js @@ -1,4 +1,4 @@ -const loadedSubPackages = [] +export const loadedSubPackages = [] /** * 指定路由 ready 后,检查是否触发分包预加载 @@ -16,24 +16,26 @@ export function preloadSubPackages (route) { if (!packages.length) { return } - 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) - } + 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) { @@ -63,8 +65,9 @@ function loadSubPackage (root, callback) { const SUB_FILENAME = 'app-sub-service.js' function evaluateScriptFiles (files, callback) { - // TODO 有可能当前 instance 是非 app-service - weex.requireModule('plus').evalJSFiles(files, callback) + __uniConfig.onServiceReady(() => { + weex.requireModule('plus').evalJSFiles(files, callback) + }) } function loadSubPackages (packages, callback) { @@ -77,7 +80,7 @@ function loadSubPackages (packages, callback) { return root + '/' + SUB_FILENAME }), res => { if (process.env.NODE_ENV !== 'production') { - console.log('UNIAPP[loadSubPackages]:' + (Date.now() - startTime)) + console.log('UNIAPP[loadSubPackages]:耗时(' + (Date.now() - startTime) + ')') } callback && callback(true) })