提交 e8cf7689 编写于 作者: fxy060608's avatar fxy060608

feat(app-plus-nvue): add registerConfig

上级 dd8d2210
......@@ -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}'
}
......
......@@ -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
}
......
export function createUniInstance(plus){
export function createUniInstance(weex, plus, __uniConfig, __uniRoutes, getApp, getCurrentPages){
const _toString = Object.prototype.toString;
const hasOwnProperty = Object.prototype.hasOwnProperty;
......
import Router from './router'
import Router from 'uni-platform/service/uni/router'
let appCtx
......
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)
}
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
}
......
......@@ -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)
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册