import {
|
parseRedirectInfo
|
} from './utils'
|
|
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) {
|
const isTabBar = tabBarList.indexOf(pagePath) !== -1
|
const isQuit = isTabBar || (config.pages[0] === pagePath)
|
const isNVue = !!config.page[pagePath].nvue
|
__uniRoutes.push({
|
path: '/' + pagePath,
|
meta: {
|
isQuit,
|
isTabBar,
|
isNVue
|
},
|
window: config.page[pagePath].window || {}
|
})
|
})
|
}
|
|
export function registerConfig (config, Vue) {
|
Object.assign(__uniConfig, config)
|
|
__uniConfig.viewport = ''
|
__uniConfig.defaultFontSize = ''
|
|
if (__uniConfig.nvueCompiler === 'uni-app') {
|
__uniConfig.viewport = plus.screen.resolutionWidth
|
__uniConfig.defaultFontSize = 16
|
}
|
|
parseRoutes(__uniConfig)
|
|
if (process.env.NODE_ENV !== 'production') {
|
console.log('[uni-app] registerConfig', __uniConfig)
|
}
|
}
|
|
let isInitEntryPage = false
|
|
export function initEntryPage () {
|
if (isInitEntryPage) {
|
return
|
}
|
isInitEntryPage = true
|
|
let entryPagePath
|
let entryPageQuery
|
|
const weexPlus = weex.requireModule('plus')
|
|
if (weexPlus.getRedirectInfo) {
|
const {
|
path,
|
query,
|
referrerInfo
|
} = parseRedirectInfo()
|
if (path) {
|
entryPagePath = path
|
entryPageQuery = query
|
}
|
__uniConfig.referrerInfo = referrerInfo
|
} else {
|
const argsJsonStr = plus.runtime.arguments
|
if (!argsJsonStr) {
|
return
|
}
|
try {
|
const args = JSON.parse(argsJsonStr)
|
entryPagePath = args.path || args.pathName
|
entryPageQuery = args.query ? ('?' + args.query) : ''
|
} catch (e) {}
|
}
|
|
if (!entryPagePath || entryPagePath === __uniConfig.entryPagePath) {
|
if (entryPageQuery) {
|
__uniConfig.entryPageQuery = entryPageQuery
|
}
|
return
|
}
|
|
const entryRoute = '/' + entryPagePath
|
const routeOptions = __uniRoutes.find(route => route.path === entryRoute)
|
if (!routeOptions) {
|
console.error(`[uni-app] ${entryPagePath} not found...`)
|
return
|
}
|
|
if (!routeOptions.meta.isTabBar) {
|
__uniConfig.realEntryPagePath = __uniConfig.realEntryPagePath || __uniConfig.entryPagePath
|
}
|
|
__uniConfig.entryPagePath = entryPagePath
|
__uniConfig.entryPageQuery = entryPageQuery
|
|
if (process.env.NODE_ENV !== 'production') {
|
console.log(`[uni-app] entryPagePath(${entryPagePath + entryPageQuery})`)
|
}
|
}
|