当前位置: 首页 > 文档资料 > Weex 中文文档 >

Weex 实例变量

优质
小牛编辑
137浏览
2023-12-01

每个 Weex 页面的 JS 上下文中都有一个相互独立的 weex 变量,它可以像全局变量一样使用,不过它在不同页面中是隔离而且只读的。

注意: weex 实例变量只在 Vue 框架中暴露了,目前还不支持在 Rax 框架中使用。

属性和方法

Weex 实例变量的类型定义如下:

declare type Weex = {
  config: WeexConfigAPI;
  document: WeexDocument;
  requireModule: (name: string) => Object | void;
  supports: (condition: string) => boolean | void;
}

Weex 环境变量

有时候为了兼容性或者为了增强某个端上的能力,需要编写平台特异的代码。 Weex 提供了 weex.config.env 和全局的 WXEnvironment 变量(它们是等价的)来获取当前执行环境的信息。

weex.config.env === WXEnvironment

Weex 环境变量中的字段:

字段名类型描述
platformStringCurrent running platform, could be "Android", "iOS" or "Web".
weexVersionStringThe version of Weex SDK.
appNameStringMobile app name or browser name.
appVersionStringThe version of current app.
osNameStringThe OS name, could be "Android" or "iOS".
osVersionStringThe version of current OS.
deviceModelStringMobile phone device model. (native only)
deviceWidthNumberScreen resolution width.
deviceHeightNumberScreen resolution height.

这个例子 打印出了 Weex 环境对象中的所有值。

使用原生模块

你可以像使用不同 javascript 函数一样使用原生注册的接口。这里是一个简单的使用 modal 模块的例子

<template>
  <div><text>Toast</text></div>
</template>
<script>
  const modal = weex.requireModule('modal')
  modal.toast({
    message: 'I am a toast.',
    duration: 3
  })
</script>

使用范例

检测某个组件是否可用:

weex.supports('@component/slider') // true
weex.supports('@component/my-tab') // false

检测某个模块是否可用:

weex.supports('@module/stream')  // true
weex.supports('@module/abcdef')  // false

检测某个模块是否包含某个方法:

weex.supports('@module/dom.getComponentRect') // true
weex.supports('@module/navigator.jumpToPage') // false

无效的输入:

weex.supports('div') // null
weex.supports('module/*') // null
weex.supports('@stream/fetch') // null
weex.supports('getComponentRect') // null

#isRegisteredModule

检测某个特定的模块或者接口是否可用。

weex.isRegisteredModule(moduleName: string, methodName: string): boolean

这个接口只能用于检测特定模块和方法的兼容性,不支持检测组件。

weex.isRegisteredModule('stream') // true
weex.isRegisteredModule('stream', 'fetch') // true
weex.isRegisteredModule('whatever', '- unknown -') // false
weex.isRegisteredModule('div') // false, not support components

#isRegisteredComponent

检测某个特定的组件是否可用。

weex.isRegisteredComponent(componentName: string): boolean

这个接口只能用于检测组件的兼容性,不支持检测模块。

weex.isRegisteredComponent('div') // true
weex.isRegisteredComponent('- unknown -') // false
weex.isRegisteredComponent('navigator') // false, not support modules