diff --git a/build/rollup.config.service.js b/build/rollup.config.service.js index f6ab512ad40bf9e9b82025e03ea6a6d4ab453f99..32e9e6bfdcfe24f4116ebde288d5c223bf4162da 100644 --- a/build/rollup.config.service.js +++ b/build/rollup.config.service.js @@ -16,7 +16,8 @@ if (process.env.UNI_SERVICE === 'legacy') { } else if (process.env.UNI_SERVICE === 'uni') { input = 'src/platforms/app-plus/service/uni/index.js' output.file = 'packages/uni-app-plus-nvue/dist/uni.js' - output.banner = 'export function createUniInstance(plus){\n' + output.banner = + 'export function createUniInstance(weex, plus, __uniConfig, __uniRoutes, getApp, getCurrentPages){\n' output.footer = '\n return uni$1 \n}' } diff --git a/packages/uni-app-plus-nvue/dist/index.js b/packages/uni-app-plus-nvue/dist/index.js index 30b4d7d4c203cb4587b6d229d138f0827834caa0..1e82232cca2bb4c36105b5599ec4736cef654233 100644 --- a/packages/uni-app-plus-nvue/dist/index.js +++ b/packages/uni-app-plus-nvue/dist/index.js @@ -61,28 +61,77 @@ const pageVms = []; function getCurrentPages () { return pageVms +} +/** + * @param {Object} pageVm + * + * page.beforeCreate 时添加 page + * page.beforeDestroy 时移出 page + * + * page.viewappear onShow + * page.viewdisappear onHide + * + * navigateTo + * redirectTo + * + * + * + * + * + * + */ +function registerPage (pageVm) { + pageVms.push(pageVm); } -const __uniConfig = Object.create(null); -const __uniRoutes = []; +const uniConfig = Object.create(null); +const uniRoutes = []; + +function parseRoutes (config) { + uniRoutes.length = 0; + /* eslint-disable no-mixed-operators */ + const tabBarList = (config.tabBar && config.tabBar.list || []).map(item => item.pagePath); + + Object.keys(config.page).forEach(function (pagePath) { + uniRoutes.push({ + path: '/' + pagePath, + meta: { + isTabBar: tabBarList.indexOf(pagePath) !== -1 + } + }); + }); +} +function registerConfig (config) { + Object.assign(uniConfig, config); + parseRoutes(uniConfig); +} + function createInstanceContext ({ weex, WeexPlus }) { const plus = new WeexPlus(weex); return { - __uniConfig, - __uniRoutes, - __registerApp (appVm, { - uniConfig, - uniRoutes - }) { - Object.assign(__uniConfig, uniConfig); - uniRoutes.forEach(route => __uniRoutes.push(route)); - registerApp(appVm, __uniRoutes, plus); + __uniConfig: uniConfig, + __uniRoutes: uniRoutes, + __registerConfig (config) { + registerConfig(config); + }, + __registerApp (appVm) { + registerApp(appVm, uniRoutes, plus); + }, + __registerPage (pageVm) { + registerPage(pageVm); }, - uni: createUniInstance(plus), + uni: createUniInstance( + weex, + plus, + __uniConfig, + __uniRoutes, + getApp, + getCurrentPages + ), getApp, getCurrentPages } diff --git a/packages/uni-app-plus-nvue/dist/uni.js b/packages/uni-app-plus-nvue/dist/uni.js index 554551d9dacfee6193e361b615e455ceabf94483..bac3cfae56cf1841dd328dc8b55bfd727acf776c 100644 --- a/packages/uni-app-plus-nvue/dist/uni.js +++ b/packages/uni-app-plus-nvue/dist/uni.js @@ -1,4 +1,4 @@ -export function createUniInstance(plus){ +export function createUniInstance(weex, plus, __uniConfig, __uniRoutes, getApp, getCurrentPages){ const _toString = Object.prototype.toString; const hasOwnProperty = Object.prototype.hasOwnProperty; diff --git a/src/platforms/app-plus-nvue/service/router.js b/src/platforms/app-plus-nvue/service/uni/router.js similarity index 100% rename from src/platforms/app-plus-nvue/service/router.js rename to src/platforms/app-plus-nvue/service/uni/router.js diff --git a/src/platforms/app-plus-nvue/service/app.js b/src/platforms/app-plus/service/uni/app.js similarity index 73% rename from src/platforms/app-plus-nvue/service/app.js rename to src/platforms/app-plus/service/uni/app.js index a63cb89c40d0719806263a765c5b36faafd5ac38..123bd2be89d1c2db65ecd6081f40650063e0aea0 100644 --- a/src/platforms/app-plus-nvue/service/app.js +++ b/src/platforms/app-plus/service/uni/app.js @@ -1,4 +1,4 @@ -import Router from './router' +import Router from 'uni-platform/service/uni/router' let appCtx diff --git a/src/platforms/app-plus/service/uni/config.js b/src/platforms/app-plus/service/uni/config.js new file mode 100644 index 0000000000000000000000000000000000000000..f5287356fee4bb97d7307247b1011d4c1241ed94 --- /dev/null +++ b/src/platforms/app-plus/service/uni/config.js @@ -0,0 +1,22 @@ +export const uniConfig = Object.create(null) +export const uniRoutes = [] + +function parseRoutes (config) { + uniRoutes.length = 0 + /* eslint-disable no-mixed-operators */ + const tabBarList = (config.tabBar && config.tabBar.list || []).map(item => item.pagePath) + + Object.keys(config.page).forEach(function (pagePath) { + uniRoutes.push({ + path: '/' + pagePath, + meta: { + isTabBar: tabBarList.indexOf(pagePath) !== -1 + } + }) + }) +} + +export function registerConfig (config) { + Object.assign(uniConfig, config) + parseRoutes(uniConfig) +} diff --git a/src/platforms/app-plus/service/uni/create-instance-context.js b/src/platforms/app-plus/service/uni/create-instance-context.js index ca2ab7641ec01b6abc3ffe239de83eaaa764250b..02c0d1150bce91dcb99e7f57bada1c3d4d541c9f 100644 --- a/src/platforms/app-plus/service/uni/create-instance-context.js +++ b/src/platforms/app-plus/service/uni/create-instance-context.js @@ -1,36 +1,48 @@ import { getApp, registerApp -} from 'uni-platform/service/app' +} from './app' import { + registerPage, getCurrentPages -} from 'uni-platform/service/page' +} from './page' + +import { + uniConfig, + uniRoutes, + registerConfig +} from './config' import { createUniInstance } from './uni' -const __uniConfig = Object.create(null) -const __uniRoutes = [] - export function createInstanceContext ({ weex, WeexPlus }) { const plus = new WeexPlus(weex) return { - __uniConfig, - __uniRoutes, - __registerApp (appVm, { - uniConfig, - uniRoutes - }) { - Object.assign(__uniConfig, uniConfig) - uniRoutes.forEach(route => __uniRoutes.push(route)) - registerApp(appVm, __uniRoutes, plus) + __uniConfig: uniConfig, + __uniRoutes: uniRoutes, + __registerConfig (config) { + registerConfig(config) + }, + __registerApp (appVm) { + registerApp(appVm, uniRoutes, plus) + }, + __registerPage (pageVm) { + registerPage(pageVm) }, - uni: createUniInstance(plus), + uni: createUniInstance( + weex, + plus, + __uniConfig, + __uniRoutes, + getApp, + getCurrentPages + ), getApp, getCurrentPages } diff --git a/src/platforms/app-plus-nvue/service/page.js b/src/platforms/app-plus/service/uni/page.js similarity index 87% rename from src/platforms/app-plus-nvue/service/page.js rename to src/platforms/app-plus/service/uni/page.js index 12f1eca46f6f079d246d6877ab632af8d81a36e7..4adb1d0b43e1dc190ac060e0aad7d15cef086d02 100644 --- a/src/platforms/app-plus-nvue/service/page.js +++ b/src/platforms/app-plus/service/uni/page.js @@ -11,7 +11,7 @@ export function getCurrentPages () { * * page.viewappear onShow * page.viewdisappear onHide - * + * * navigateTo * redirectTo * @@ -22,5 +22,5 @@ export function getCurrentPages () { * */ export function registerPage (pageVm) { - + pageVms.push(pageVm) }