page.js 1.2 KB
Newer Older
fxy060608's avatar
fxy060608 已提交
1 2 3
import {
  initWebview,
  createWebview
fxy060608's avatar
fxy060608 已提交
4 5
} from './webview/index'

fxy060608's avatar
fxy060608 已提交
6
const pages = []
fxy060608's avatar
fxy060608 已提交
7 8

export function getCurrentPages () {
fxy060608's avatar
fxy060608 已提交
9
  return pages
fxy060608's avatar
fxy060608 已提交
10 11 12 13 14 15 16 17 18
}
/**
 * @param {Object} pageVm
 *
 * page.beforeCreate 时添加 page
 * page.beforeDestroy 时移出 page
 *
 * page.viewappear  onShow
 * page.viewdisappear onHide
19
 *
fxy060608's avatar
fxy060608 已提交
20 21 22 23 24 25 26 27
 * navigateTo
 * redirectTo
 *
 *
 *
 *
 *
 *
fxy060608's avatar
fxy060608 已提交
28
 */
fxy060608's avatar
fxy060608 已提交
29

fxy060608's avatar
fxy060608 已提交
30 31 32
/**
 * 首页需要主动registerPage,二级页面路由跳转时registerPage
 */
fxy060608's avatar
fxy060608 已提交
33 34
export function registerPage ({
  path,
fxy060608's avatar
fxy060608 已提交
35
  query,
fxy060608's avatar
fxy060608 已提交
36
  webview
fxy060608's avatar
fxy060608 已提交
37 38
}) {
  const routeOptions = JSON.parse(JSON.stringify(__uniRoutes.find(route => route.path === path)))
fxy060608's avatar
fxy060608 已提交
39 40

  if (!webview) {
fxy060608's avatar
fxy060608 已提交
41
    webview = createWebview(path, routeOptions)
fxy060608's avatar
fxy060608 已提交
42 43
  }

fxy060608's avatar
fxy060608 已提交
44 45 46
  if (process.env.NODE_ENV !== 'production') {
    console.log(`[uni-app] registerPage`, path, webview.id)
  }
fxy060608's avatar
fxy060608 已提交
47

fxy060608's avatar
fxy060608 已提交
48 49 50
  initWebview(webview, webview.id === '1' && routeOptions)

  const route = path.slice(1)
fxy060608's avatar
fxy060608 已提交
51

fxy060608's avatar
fxy060608 已提交
52
  webview.__uniapp_route = route
fxy060608's avatar
fxy060608 已提交
53

fxy060608's avatar
fxy060608 已提交
54
  pages.push({
fxy060608's avatar
fxy060608 已提交
55
    route,
fxy060608's avatar
fxy060608 已提交
56
    options: Object.assign({}, query || {}),
fxy060608's avatar
fxy060608 已提交
57 58 59
    $getAppWebview () {
      return webview
    },
fxy060608's avatar
fxy060608 已提交
60 61 62 63 64
    $page: {
      id: parseInt(webview.id),
      meta: routeOptions.meta,
      path,
      route
fxy060608's avatar
fxy060608 已提交
65
    }
fxy060608's avatar
fxy060608 已提交
66
  })
fxy060608's avatar
fxy060608 已提交
67 68

  return webview
fxy060608's avatar
fxy060608 已提交
69
}