Weex语法支持插件

Weex语法支持插件#

Weex Language Support 插件是官方提供的一个工具,你可以使用它在IntelliJ IDEA,WebStorm等一系列IDE上对Weex DSL进行语法高亮,自动补全和错误检查等操作。

支持的IDE#

你可以在任何操作系统上的下列IDE上安装和使用Weex Language Support插件:
IntelliJ IDEA Ultimate, PhpStorm, WebStorm, PyCharm, RubyMine, AppCode, CLion, Gogland, Rider

安装#

在IDE的插件仓库中搜索Weex Language Support来安装该插件,安装完毕后重启IDE即可激活插件相关功能
install plugin

配置#

打开Preferences -> Other Settings -> Weex language support可配置插件的相关功能
plugin settings

  • Target Weex Version: 配置插件以哪一个版本的语法规则来对DSL进行提示及检查,默认值LATEST表示总是应用最行新版本weex的语法规则
  • Vue Support: 配置插件是否支持Weex 2.0版本的DSL(.vue文件),开启后重启生效(注意:如果IDE内有其他支持Vue语法的插件,则需要关闭相应的插件后Weex插件才能生效)
  • Custom Rules: 引入自定义的Weex DSL规则,如果你在native中定义了自己的Module或Component,可通过自定义规则引入插件中来提供相应的提示和补全支持,自定义规则的格式将在后文列出
  • Global Weex Components: 默认地,插件会解析当前工程及npm root路径下的node_modules目录,解析其中包含的Weex Components并对其提供补全支持。如果你的项目中引用了这两个路径以外的Components,可以在此处将其添加到搜索路径中,插件将会将其中的Components载入,并在编写DSL时为相应的标签提供补全支持

自定义规则格式#

自定义规则包含在一个json文件中,json文件的根节点为数组类型,数组中的每一个元素对应DSL中的一个标签。
我们以<loading>标签的规则来举例:

{
"tag": "loading", //标签名,不可为空
"attrs": [ //标签属性列表,可为空
{
"name": "display", //属性名,不可为空
"valuePattern": null, //属性值的正则表达式,用于检测值是否合法,可为空
"valueEnum": [ //属性值枚举,可为空
"show",
"hide"
],
"valueType": "var", //属性值类型,必须是var或function,决定该从数据列表还是函数列表中查找属性值补全的候选值,不可为空
"since": 0, //该属性何时被添加到sdk中,例如0.11,默认为0
"weexOnly": false //该属性是否仅在1.0语法中可用,默认为false
}
],
"events": [ //事件列表。可为空
{
"name": "loading", //事件名称,不可为空
"since": 0 //该事件何时被添加到sdk中
}
],
"parents": [ //该标签允许被作为哪些标签的子元素,空表示可以作为任意元素的子元素
"list",
"scroller"
],
"childes": [ //该标签允许哪些元素作为自己的子元素,空表示任意元素都可作为子元素
"text",
"image",
"loading-indicator"
],
"document": "/references/components/loading.html" //文档地址,配置该属性之后可在编辑界面中对应的标签上直接打开文档
}

使用#

插件的绝大部分功能被集成到编辑器上下文中,会随用户输入在需要补全,提示或Lint时被触发,无需特殊干预。下列功能需要用户手动触发:

文档搜索#

打开IDE右侧工具栏的Weex Documents即可对文档进行搜索,搜索结果与官网保持同步,勾选 EN 可切换搜索结果为英文内容
doc search

打开标签对应的文档#

将光标定位到标签上,并通过Show Intention Actions操作(OSX上默认键为 option + enter,可通过Keymap查看)打开Intenion菜单,选择Open Document可打开标签对应的文档
open doc

参与插件建设#

请将Issues及Pull Requests提交到weex-language-support项目中

Edit this page on GitHub