UNPKG

1.4 kBJavaScriptView Raw
1// @flow
2import type {
3 VUE_INSTANCE,
4 ROUTER_OBJECT
5} from './type'
6
7// 配置vue router 实例
8export default function (vueInstance: VUE_INSTANCE): ROUTER_OBJECT {
9 const TYPE = process.env.COMPILE_ENV
10 let router = {}
11 let pushHandler = {}
12 let popHandler = {}
13 if (TYPE === 'vue') {
14 if (!vueInstance.$route || !vueInstance.$router) throw new Error('vue路由api依赖 vue-router')
15 pushHandler = {
16 get: _ => Object.assign(vueInstance.$router, vueInstance.$route) // 将vue router中的router route对象 混合
17 }
18 popHandler = {
19 get: _ => _ => history.back()
20 }
21 } else if (TYPE === 'weex') {
22 var navigator = weex.requireModule('navigator')
23 if (!navigator) throw new Error('weex路由api依赖 weex navigator')
24 pushHandler = {
25 get: _ => path => {
26 var navigator = weex.requireModule('navigator')
27 if (!navigator) throw new Error('weex路由api依赖 weex navigator')
28 const url = weex.config.bundleUrll.split('/').slice(0,-1).join('/') + path + '.js'; //獲取b.js | vue編譯後的b.js的相對路徑
29 navigator.push({ url, animated: "true" })
30 }
31 }
32 popHandler = {
33 get: _ => _ => navigator.pop({ animated: 'true' })
34 }
35 }
36 // 添加push对象
37 Reflect.defineProperty(router, 'push', pushHandler)
38 // 添加pop对象
39 Reflect.defineProperty(router, 'pop', popHandler)
40 return router
41}
\No newline at end of file