Module 拓展
callback 参数的数据格式
{// 状态码。0表示操作成功,-1表示操作失败status: 0,// 错误描述信息error: '错误描述信息',// 返回的数据data: {}}
wb-router
页面路由
引用方式
const router = weex.requireModule('wb-router')
API
- 打开页面
open(object)
router.open({// 页面名称。内置"weex"、"web","flutter" 其他路由需要原生先注册name: 'weex'// 下一个weex/web的路径url: 'login.js',/*push: iOS下 从右到左的动画打开页面,present: iOS下 从下到上的动画打开页面,modalMask: 弹出一个透明层,weex或者flutter需要做弹框可以使用此模式。*/type: 'push',// 是否隐藏导航栏, 默认显示导航栏navBarHidden: false,// 导航栏标题title: '标题'// 禁用返回手势, 默认开启返回手势disableGestureBack: false,// 需要传到下一个页面的数据,默认为空params: {},// 指定从哪个页面开始关闭,不传是不会关闭的,0代表当前页面。closeFrom: 0// 关闭页面的方向,默认是页面数组的顺序。closeFromBottomToTop: true// 关闭页面的个数,默认是1closeCount: 1})// 如果A->B->C->D 四个页面,在C页面打开D页面的同时想关闭B和C页面,有以下两种方式。// closeFromBottomToTop: true(A到C方向) false(C到A方向)// closeFrom: 0(两种情况:{A到C方向:指的是B(由于A是APP的第一个页面,由于不能直接被杀死,所以从B开始数)},{C到A方向:指的是C})// closeCount: 关闭的个数router.open({name: 'weex',url: 'D页面',closeFrom: 0,closeFromBottomToTop: true, // A到C方向closeCount:2})router.open(name: 'weex',url: 'D页面',closeFrom: 0,closeFromBottomToTop: false, // C到A方向closeCount:2)// 如果A...Z,N个页面,想在打开下一个页面的同时,只保留当前页面和第一个页面(根页面)router.open(name: 'weex',url: '下一个页面',closeFrom: 0closeFromBottomToTop: false,closeCount:999)
::: tip url的两种类型 如果url是http开头,将加载网络资源。否则,会通过热更新从本地加载 :::
- 获取router的params参数
getParams()
const params = router.getParams()
- 关闭页面
close(number)
// 关闭顶层多个页面,默认1个router.close(1)
- 刷新weex页面
refresh()
router.refresh()
wb-network
网络请求
引用方式
const network = weex.requireModule('wb-network')
API
- 请求接口
request(object, callback)
network.request({// 请求的URLurl: 'https://weexbox.com/api',// 请求时使用的方法,默认是 getmethod: 'post',// 请求头headers: {'X-Requested-With': 'XMLHttpRequest'},// 发送的 URL/Body 参数params: {ID: 12345},// 响应类型, json 或 text,默认 jsonresponseType: 'json'}, (result) => {})// callback参数result: {// 状态码status: 200,error: '',// 服务器返回结果data: {}}
:::warning
网络请求仅支持application/json,我们认为这是最佳实践。
:::
wb-event
应用级别事件通知。相比于实例级别的事件globalEvent, wb-event 能够跨页面传递事件。
::: tip globalEvent 虽然里面包含”global”这个词,但它不是真正的全局事件通知。 globalEvent 只能在当前原生页面和它里面的 weex 通信。 wb-event 不区分原生还是 weex,也不区分是同一个页面还是多个不同页面。 :::
引用方式
const event = weex.requireModule('wb-event')
API
- 注册事件
register(string, callback)
event.register('name', (result) => {// result为传过来的参数})
- 发送事件
emit(object)
event.emit({// 事件名称name: 'eventName',// 事件参数,默认为空params: {}})
- 注销事件
unregister(string)
event.unregister('name')
- 注销所有事件
unregisterAll()
event.unregisterAll()
globalEvent
扩展了全局事件,新增
- viewDidAppear 页面显示的时候触发
- viewDidDisappear 页面隐藏的时候触发
wb-modal
各种弹窗
引用方式
const modal = weex.requireModule('wb-modal')
API
- 警告弹窗
alert(object, callback)
modal.alert({// 标题title: '标题',// 弹窗内容message: '弹窗内容',// 是否在view最上面一层打开root: false,// 确定按钮文字okTitle: '确定'}, (result) => {})// callback参数result: {status: 0}
- 确定弹窗
confirm(options, callback)
modal.confirm({// 标题title: '标题',// 弹窗内容message: '弹窗内容',// 是否在view最上面一层打开root: false,// 取消按钮文字cancelTitle: '取消',// 确定按钮文字okTitle: '确定'}, (result) => {})// callback参数result: {// 确定按钮0,取消按钮-1status: 0}
- 输入弹窗
prompt(object, callback)
modal.prompt({// 标题title: '标题',// 弹窗内容message: '我是一个弹窗',// 是否在view最上面一层打开root: false,// 占位符placeholder: '请输入密码',// 是否不显示输入,默认否isSecure: true,// 取消按钮文字cancelTitle: '取消',// 确定按钮文字okTitle: '确定'}, (result) => {})// callback参数result: {// 确定按钮0,取消按钮-1status: 0,data: {// 输入的文字text: '输入的文字'}}
- 操作表弹窗
actionSheet(object, callback)
modal.actionSheet({// 标题,默认为空title: '标题',// 弹窗内容,默认为空message: '弹窗内容',// 是否在view最上面一层打开root: false,// action列表actions: [{// 按钮类型'danger', 'cancel', 'normal'。默认normaltype: 'danger',// 按钮的标题title: '删除'}]}, (result) => {})// callback参数result: {// 取消按钮-1,其他0status: 0,data: {// 按钮的索引index: 0}}
- 吐司
showToast(object)
modal.showToast({// 提示信息text: '提示信息',// 显示时间,默认2秒duration: 2})
- 显示菊花
showLoading(string)
// loading 文字,默认为空modal.showLoading('加载中...')
- 显示进度
showProgress(object)
modal.showProgress({// 进度progress: 50// loading 文字,默认为空text: '加载中...'})
- 关闭菊花
dismiss()
modal.dismiss()
wb-navigator
设置原生导航栏
引用方式
const navigator = weex.requireModule('wb-navigator')
API
- 设置导航栏左边按钮
setLeftItems(array, callback)
navigator.setLeftItems([{// 展示的文字text: '',// 文字颜色,16进制color: '#ffffff',// 展示的图片。如果设置了text,则image不起作用image: 'http://weexbox.surge.sh/logo.png'}], (result) => {})// callback参数result: {status: 0,data: {// 点击的索引index: 0}}
- 设置导航栏右边按钮
setRightItems(array, callback)
navigator.setRightItems([{// 展示的文字text: '',// 文字颜色,16进制color: '#ffffff',// 展示的图片。如果设置了text,则image不起作用image: 'http://weexbox.surge.sh/logo.png'}], (result) => {})// callback参数result: {status: 0,data: {// 点击的索引index: 0}}
- 设置导航栏中间的按钮
setCenterItem(object, callback)
navigator.setCenterItem({// 展示的文字text: '',// 文字颜色,16进制color: '#ffffff',// 展示的图片。如果设置了text,则image不起作用image: 'http://weexbox.surge.sh/logo.png'}, (result) => {})// callback参数result: {status: 0}
- 设置导航栏颜色
setNavColor(string)
navigator.setNavColor('#00ff00')
- 物理返回键
onBackPressed(callback)
navigator.onBackPressed(() => {})
- 获取导航栏原始高度。多用于隐藏原生导航栏之后,用weex来实现导航栏。
getHeight()
const navHeight = navigator.getHeight()
wb-external
打开外部功能
引用方式
const external = weex.requireModule('wb-external')
API
- 打开浏览器:
openBrowser(string)
external.openBrowser('https://aygtech.github.io/weexbox')
- 打电话:
callPhone(string)
external.callPhone('114')// callback参数result: {status: 0,error: '',}
- 拍照:
openCamera(object, callback)
external.openCamera({// 能否剪裁enableCrop: true,// 是否矩形剪裁,true为圆形剪裁isCircle: true,// 是否在view最上面一层打开root: false,// 宽度width: 100,// 高度height:100}, (result) => {})// callback参数result: {status: 0,error: '',data: {// 图片的存储路径url: '/docment/123.png'}}
- 打开相册:
openPhoto(object, callback)
external.openPhoto({// 最大选取张数count: 9,// 能否剪裁enableCrop: true,// 是否矩形剪裁,true为圆形剪裁isCircle: true,// 是否在view最上面一层打开root: false,// 宽度width: 100,// 高度height:100}, (result) => {})// callback参数result: {status: 0,error: '',data: {// 图片的存储路径urls: ['url0', 'url1']}}
webSocket
webSockets 是一种创建持久性的连接,并进行双向数据传输的 HTTP 通信协议。WeexBox 提供了 webSockets 模块方便用户在 H5/iOS/Android 环境下与服务端创建 webSockets 链接进行通信。
引用方式
const websocket = weex.requireModule('webSocket')
API
- 创建 WebSockets,并连接服务器。
WebSocket(url, protocol)
// @url, string, 表示要连接的 URL// @protocol, string, WebSockets 协议名字字符串websocket.WebSocket('ws://echo.websocket.org', '')
- 通过 WebSockets 连接向服务器发送数据。
send(data)
// @data, string, 要发送到服务器的数据websocket.send('发送一条消息')
- 关闭 WebSockets 的链接。
close(code, reason)
// @code, number, 关闭连接的状态号// @reason, string, 关闭的原因websocket.close()
- onopen
连接打开事件的事件监听器,该事件表明这个连接已经准备好接受和发送数据。onopen 接受一个函数作为 EventListener,这个监听器会接受一个 type 为 “open” 的事件对象。
onopen(options)
websocket.onopen(() => {// websocket连接成功})
- onmessage
消息事件的事件监听器,当有消息到达的时触发。onmessage 接受一个函数作为 EventListener,这个监听器会接受一个 type 为 “message” 的事件对象
onmessage(options)
websocket.onmessage((e) => {// e.data, string, 监听器接收的到的消息})
- onclose
连接关闭事件的事件监听器,当连接关闭时触发。onclose 接受一个函数作为 EventListener,这个监听器会接受一个 type 为 “close” 的事件对象。
onclose(options)
websocket.onclose((e) => {// e.code, number, 服务器返回关闭的状态码// e.reason, string, 服务器返回的关闭原因// e.wasClean, boolen, 是否完全关闭})
onerror
error 事件的事件监听器,当错误发生时触发。onerror 接受一个函数作为 EventListener,这个监听器会接受一个 type 为 “error” 的事件对象
onerror(options)
websocket.onerror((e) => {// e.data, string, 监听器接收的到的消息})
