当前位置:网站首页>webstrom 插件开发(一)
webstrom 插件开发(一)
2022-08-07 20:16:00 【前端精髓】
实现Alpine.js简单指令
让我们用Alpine代码创建一个新的.html文件,看看它在WebStorm中的工作原理:
<div x-data="{ open: false }">
<button @click="open = true">展开</button>
<span x-show="open">
内容...
</span>
</div>
首先要注意的是,这些指令不受支持,并被标记为标签的错误属性。
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HzljIaWW-1659859139688)(https://blog.jetbrains.com/wp-content/uploads/2021/09/no-support-for-directives-in-webstorm.png)]](/img/82/4c2634effb2daad0bcaebcc7fabe35.png)
有几种方法可以解决这个问题,但最明显的是:
- 实现属性描述符,就像在现有的 Alpine.js 插件中所做的那样。
- 使用Web类型来描述指令,就像Vue.js插件一样。
第二种方式要容易得多,Web类型背后的想法是,我们使用JSON格式来描述元素,如标签、属性、指令和组件,而不是实现它们。
注册扩展名
现在,回到我们的插件模板。让我们从创建Web类型扩展开始:
创建一个空的 JSON 文件 alpine.web-types.json,并将其存储在项目的资源目录下。
在 Web 类型扩展点中注册新的 JSON 文件。
正如我们之前提到的,扩展名的入口点是 plugin.xml 文件。我们需要在根 idea-plugin 标签中添加以下代码:
<idea-plugin>
<extensions defaultExtensionNs="com.intellij">
<javascript.webTypes source="alpine.web-types.json" enableByDefault="true"/>
</extensions>
</idea-plugin>
现在,是时候为第一份指令编写支持了。让我们将以下内容添加到我们的alpine.web-types.json文件中:
{
"$schema": "../../../../schema.json",
"name": "Alpine",
"version": "1.0.0",
"contributions": {
"html": {
"attributes": [
{
"name": "x-data"
}
]
}
}
}
contributors部分定义了使用Web类型来扩展HTML支持,attributes部分意味着我们将属性添加到所有可能的标签中,因为它应该适用于 Alpine 中的指令。
运行和调试
现在我们已经实现了我们的第一个功能,让我们来测试一下吧!项目模板已经具备运行和调试插件所需的所有配置。我们只需要单击导航栏上相应运行插件配置的运行或调试按钮。

如果没有指定运行配置,您可以使用Gradle工具窗口中的Gradle任务runIde运行插件。

高亮显示适用于指令x-data。

此外,该指令显示在代码完成弹出窗口中。

x-text和x-show指令可以通过将它们添加到Web类型的JSON文件中以同样的方式处理。
实现 Alpine.js 复杂指令
x-on和x-bind指令要棘手得多,可以作为事件和其他属性的前缀。
Web类型API提供了一种描述复杂属性的方法。我们需要添加具有以下内部结构的pattern属性:
{
"$schema": "../../../../schema.json",
"name": "Alpine",
"version": "1.0.0",
"contributions": {
"html": {
"attributes": [
{
"name": "x-data"
},
{
"name": "x-bind",
"pattern": {
"items": [
{
"path": "/html/attributes"
}
],
"template": [
"x-bind:",
"#item"
]
}
}
]
}
}
}
让我们仔细看看上面代码中的一些东西。在 : 之后添加元素需要 items 属性。template 属性描述了指令的结构。第一部分是 x-bind,然后我们需要从 items 属性中插入所有可能的元素。
现在,我们甚至增加了对x-bind等复杂指令的支持。
构建插件
下一步是构建插件。可以使用Gradle工具窗口中的buildPlugin任务完成。

插件构建后,它将进入构建/分发目录,如图所示。

发布您的插件
我们已经有一个插件的工作版本:它可以使用从磁盘安装插件操作在IDE中本地安装。如果您准备与社区共享插件,您可以在我们的插件存储库中发布。
首先,您需要登录——您可以使用您现有的JetBrains帐户进行登录。然后,您应该能够将插件上传到存储库。我们需要一些时间来验证我们这边上传的插件,但一旦完成,所有IDE用户都可以下载!

边栏推荐
猜你喜欢
随机推荐
中科院打脸谷歌:普通电脑追上量子优越性,几小时搞定原本要一万年的计算
Mathematics Remainder Theorem Introduction
How to open IntelliSense configuration in vscode
cesium 压平的一种实现方式
数据库小记
[The Beauty of Software Engineering - Column Notes] "One Question and One Answer" Issue 4 | 14 Common Problem Solving Strategies for Software Development
checkbox 设置默认值
Largebin Attack原理详解
Database table design with tree structure
Vim基础用法,最常用、最实用的命令介绍(保姆级教程)
主机基础设施如何使用 Zadig 做持续交付
Leetcode 剑指 Offer 21. 调整数组顺序使奇数位于偶数前面
注册中心设计(1)-注册中心的作用及设计分析
【C#语言】DataGridView排序筛选
Tcache Stashing Unlink Attack 原理详解
CSDN竞赛第三期 快递员、小鱼游泳题解
PHP将word文件转为图片之二
How hosting infrastructure uses Zadig for continuous delivery
Mathematical Symbols Reference Manual
XSS 攻击是什么?









