接口

我们约定下一些特殊的命名:

  • wox 表示require('@wox/wox)返回的对象,即全局对象。
  • app 表示new wox()后的对象,即实例化对象,或应用对象。
  • ctx 表示虚拟请求对象上下文。

全局API

wox.Wox

wox.Wox(configs: object)

它是应用对象的母体

参数:

const app = new wox.Wox(configs);
1

注意:一般我们不会直接使用这个对象,供后期TypeScript化时候引用。

wox.DecorateInterface

它是注解的基本类,主要提供setget方法。 参考:这里

wox.Methods

虚拟请求的方法名,默认['Get', 'Post', 'Put', 'Delete']四种。

wox.Http

虚拟请求注解方法集合:

  • wox.Http.Get(url) get请求
  • wox.Http.Post(url) post请求
  • wox.Http.Put(url) put请求
  • wox.Http.delete(url) delete请求
@Http.Get('/api')
1

wox.Interface

自定义注解集合体,参考:这里 自定义注解

wox.Controller

wox.Controller(prefix: string)

注解Controller。

参数:

  • prefix prefix前缀路由
@Controller('/api')
1

wox.Index

wox.Index(i: number)

注解索引,用来调整每个Controller加载的顺序,按顺序排列。

参数:

  • i 索引数值默认99。
@Index(1)
@Index(2)
1
2

wox.Middleware

wox.Middleware(...midwares: Middleware)

中间件集合,表示这个路由所需要进过的中间件。

参数:

@Http.Get
@Middleware(Mid1)
@Middleware(Mid2)
@Middleware(Mid3, Mid4)
1
2
3
4

中间件可以无限堆叠,按上下文写入顺序执行。

wox.Param

wox.Param(name: string, midw: Middleware)

param是中间件的特殊用法。具体看这里

@Controller
@Param('id', MID1)
...
// 获取
this.ctx.params.id
1
2
3
4
5

注意:只能使用在Controller上

Vue扩展对象

vm.$app

this.$app返回app对象

vm.$get

this.$get 调用虚拟请求

vm.$post

this.$post 调用虚拟请求

vm.$put

this.$put 调用虚拟请求

vm.$del

this.$del 调用虚拟请求

vm.$redirect

vm.$redirect(url: string, sync: boolean)

参数:

  • url 跳转地址
  • sync 是否同步跳转

vm.$repalce

vm.$repalce(url: string, sync: boolean)

参数:

  • url 替换地址
  • sync 是否同步跳转

vm.$reload

vm.$reload()

重载路由。

Vue 扩展指令

v-redirect

v-redirect:sync="url" 或者 v-redirect="url"

跳转地址

v-replace

v-replace:sync="url" 或者 v-replace="url"

替换地址

v-reload

v-replace

重载路由。

Vue 扩展生命周期

enter

在webview中注入了enter生命周期










 
 
 







<template>
  <div>
    <h1>Welcome</h1>
    <p>{{abc}} - {{test}}</p>
  </div>
</template>
<script>
  export default {
    name: 'IndexPage',
    enter(ctx) {
      console.log('enter', ctx)
    },
    props: {
      abc: Number,
      test: String
    }
  }
</script>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

leave

在webview中注入了leave生命周期










 
 
 







<template>
  <div>
    <h1>Welcome</h1>
    <p>{{abc}} - {{test}}</p>
  </div>
</template>
<script>
  export default {
    name: 'IndexPage',
    leave(ctx) {
      console.log('leave', ctx)
    },
    props: {
      abc: Number,
      test: String
    }
  }
</script>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

虚拟服务对象

app.$parser

我们只需要关注一个对象configs,用来提起.wox.js中的数据。

app.$parser.configs;
1

app.$plugin

插件树对象。管理插件。

app.$plugin.setDecorate(clazz)

添加一个注解

app.$plugin.set(name, target)

添加一个名为name的插件target对象到插件树中

app.$plugin.get(name)

获取一个名为name的插件

app.$plugin.getConfig(name)

获取一个名为name的插件的配置参数

app.$router

app对象的顶层路由对象,具体参考koa-router

app.$env

当前的环境变量

app.$vue

Vue实例化后被挂载到app上到对象,也就是根vm

app.$fetch

app.$fetch(options)

通用获取虚拟请求的方法

参数:

  • url string 地址
  • method string 请求方式
  • body any 请求传递数据
app.$fetch({
  url: '/api',
  method: 'POST',
  body: {
    a: 1
  }
}).then(console.log)
1
2
3
4
5
6
7

app.$get

vm.$get

app.$post

vm.$post

app.$put

vm.$put

app.$delete

vm.$del

app.$redirect

vm.$redirect

app.$replace

vm.$replace

app.$reload

vm.$reload

虚拟请求对象

ctx.app

app对象

ctx.req

request 对象

ctx.res

response 对象

ctx.status

状态码

ctx.id

虚拟请求ID

ctx.isapi

是否是虚拟请求

ctx.bdoy

结果返回体

ctx.url

当前请求url

ctx.method

当前请求方式

ctx.path

当前请求路径

ctx.query

当前请求参数

当前请求search

ctx.host

当前请求host

ctx.hostname

当前请求hostname

ctx.protocol

当前请求协议

ctx.referer

当前请求来源

ctx.redirect

app.$redirect

ctx.replace

app.$replace

ctx.reload

app.$reload

ctx.get

app.$get

ctx.post

app.$post

ctx.put

app.$put

ctx.delete

app.$delete