接口
我们约定下一些特殊的命名:
- wox 表示
require('@wox/wox)
返回的对象,即全局对象。 - app 表示
new wox()
后的对象,即实例化对象,或应用对象。 - ctx 表示虚拟请求对象上下文。
全局API
wox.Wox
wox.Wox(configs: object)
它是应用对象的母体
参数:
- configs
.wox.js
文件 配置
const app = new wox.Wox(configs);
注意:一般我们不会直接使用这个对象,供后期
TypeScript
化时候引用。
wox.DecorateInterface
它是注解的基本类,主要提供set
与get
方法。 参考:这里
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')
wox.Interface
自定义注解集合体,参考:这里 自定义注解
wox.Controller
wox.Controller(prefix: string)
注解Controller。
参数:
- prefix prefix前缀路由
@Controller('/api')
wox.Index
wox.Index(i: number)
注解索引,用来调整每个Controller加载的顺序,按顺序排列。
参数:
- i 索引数值默认99。
@Index(1)
@Index(2)
2
wox.Middleware
wox.Middleware(...midwares: Middleware)
中间件集合,表示这个路由所需要进过的中间件。
参数:
- midwares 中间件
@Http.Get
@Middleware(Mid1)
@Middleware(Mid2)
@Middleware(Mid3, Mid4)
2
3
4
中间件可以无限堆叠,按上下文写入顺序执行。
wox.Param
wox.Param(name: string, midw: Middleware)
param是中间件的特殊用法。具体看这里
@Controller
@Param('id', MID1)
...
// 获取
this.ctx.params.id
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>
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>
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;
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)
2
3
4
5
6
7
app.$get
同 vm.$get
app.$post
同 vm.$post
app.$put
同 vm.$put
app.$delete
同 vm.$del
app.$redirect
app.$replace
app.$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
当前请求参数
ctx.search
当前请求search
ctx.host
当前请求host
ctx.hostname
当前请求hostname
ctx.protocol
当前请求协议
ctx.referer
当前请求来源
ctx.redirect
ctx.replace
ctx.reload
ctx.get
同 app.$get
ctx.post
ctx.put
同 app.$put