1 |
|
2 | import type {
|
3 | VUE_INSTANCE,
|
4 | ROUTER_OBJECT
|
5 | } from './type'
|
6 |
|
7 |
|
8 | export 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';
|
29 | navigator.push({ url, animated: "true" })
|
30 | }
|
31 | }
|
32 | popHandler = {
|
33 | get: _ => _ => navigator.pop({ animated: 'true' })
|
34 | }
|
35 | }
|
36 |
|
37 | Reflect.defineProperty(router, 'push', pushHandler)
|
38 |
|
39 | Reflect.defineProperty(router, 'pop', popHandler)
|
40 | return router
|
41 | } |
\ | No newline at end of file |