当前位置: 首页 > news >正文

HeyUI组件库发布vscode插件,PS教程: 如何开发vscode插件?

前沿

HeyUI组件库,我们项目组已经用了一年多了。
一直没有对应的组件库插件,我一直耿耿于怀。
所以,抽时间查阅了vscode的插件开发教程,终于把vscode的插件完成了。
在此奉上我们的插件库链接,多谢大家提建议。

git: github.com/heyui/heyui…
vscode: marketplace.visualstudio.com/items?itemN…

或者大家可以通过在vscode插件库中搜索 heyui-snippets进行安装。

HeyUI

如果对我们组件库不熟悉的小伙伴可以参见我们官网:
heyui.top
或者围观我们的github:
github.com/heyui/heyui

用例

其他不说,先把效果奉上。

vue单文件结构

首先:我提供了一个vue的输入提示,类似于emmit的!,生成vue单文件的基本结构。


6187772a680c157f75be25a0ed46c720e4db5eef

heyui组件库的组件输入提示

heyui组件库有很多组件,如果没有组件的输入提示,基本上,我们都需要手写很多组件的标签,这里我们提供所有的组件库输入提示,以方便程序编写中的效率。

495b28f1a9c85fe732b66f818f438b6a636dc707

Component 输入提示

Component
Affix
BackTop
Badge
Checkbox
Circle
Category
Datetime
DropdownCustom
DropdownMenu
Form
FormItem
Menu
Modal
ModalComponent
Pagination
Poptip
Progress
Radio
Rate
Slider
Loading
Steps
Search
Select
Switch
SwitchList
Tabs
TagInput
Tree
TreePicker
NumberInput
Tooltip
Uploader
AutoComplete
Timeline
TextEllipsis
Table
TableItem
Row
Col
Button
ButtonGroup

Method 输入提示

Method
$Message
$Notice
$Confirm
$Loading
$ScrollIntoView

教程

写了这么多,如果大家对于如何开发vscode的插件比较好奇的话,可以往下接着看。
其实heyui-snippets是比较简单的插件,就是单纯的输入提示。
这种输入提示,大家其实可以在vscode中自定义,方便自己的开发。

自定义输入提示

我首先把自定义输入提示的教程放出来:
首先 Shift+Command+P,打开命令输入框,输入snippet,点击首选项:配置用户代码片段


07d47c96c31eb990760d431f86b6fad205520e9f
由于我是用来做vue文件的输入提示,系统中并没有默认的配置项,我们可以通过新建的方式创建配置项。
caf37afae9903fcd9294d0d64eeb0ede31b693f7
创建vue.code-snippets的文件
45478e5a2486cab8cb6487eefe2c40335382c5c5
系统会自动生成配置文件,你可以通过修改配置文件来达到snippet的功能。

"TestSnippet": {
    "prefix": "TestSnippet",
    "body": [
    	"<TestSnippet v-model=\"$1\"></TestSnippet>"
    ],
    "description": "insert a TestSnippet component"
}


如上段代码所示,我配置了一个TestSnippet组件的输入提示,那在vue代码中应用是这个样子的:
4cd0d2c169da818866cc7d299ccdb7c204d9814f
但是,这个有一个不好的问题,就是在javascript代码中也会出现提示。
b9a10d1c144cba05a6b4e33eebd1263ea6afdfe6
于是我们就要配置scope属性,这里就遇到了一个坑,vue的template代码片段,在vscode官网中,是没有文档的。
而且,对于scope的定义与配置也是模糊不清,总之,我尝试了很久,才弄清楚。
vscode中,我们会安装vetur,这个基本上算是vue语言插件,在这个插件中,对于vue是这么定义的:


"text.html.basic": "html",
"text.html.vue-html": "vue-html",
"text.pug": "pug",
"text.haml": "haml",
"source.css": "css",
"source.css.scss": "scss",
"source.css.less": "less",
"source.css.postcss": "postcss",
"source.sass": "sass",
"source.stylus": "stylus",
"source.js": "javascript",
"source.ts": "typescript",
"source.coffee": "coffeescript",
"text.html.markdown": "md",
"source.yaml": "yaml",
"source.json": "json",
"source.php": "php"


一开始,如果参考sublime的snippet配置,scope是使用text.html.vue-html这种定义的,于是我在插件库的定义中使用这一种,发现不行,总之最后,终于尝试很久,把发现用的是后面的那一种配置。

在自定义的配置文档中:


"TestSnippet": {
	"scope": "vue-html", //设置scope
	"prefix": "TestSnippet",
	"body": [
		"<TestSnippet v-model=\"$1\"></TestSnippet>",
		"$2"
	],
	"description": "insert a TestSnippet component"
}


就可以正确的使用snippet了。

插件的开发

在知道正确配置的情况下,转移到snippet插件的开发中,还是走了一些弯路,过程就叙述了,把正确的配置放出来:

package.json
scope定义在language属性上,是的,就是这么坑DIE


"contributes": {
    "snippets": [
        {
            "language": "vue",
            "path": "./snippets/vue.json"
        },
        {
            "language": "vue-html", //scope定义在language属性上
            "path": "./snippets/component.json"
        },
        {
            "language": "javascript",
            "path": "./snippets/javascript.json"
        }
    ]
}


component.json就按照正常的配置就可以了。

至于插件的上传,就不多描述了,大家直接注册账号发布就可以了。

支持

说了这么多,也希望大家多支持我的组件库 HeyUI组件库

下一步

下一步,我会补充我们HeyUI的ADMIN系统,就是不知道,大家希望有哪一些功能?如果大家有时间,希望大家在给我一些反馈:


原文发布时间为:2018年07月02日
本文作者: vvpvvp
本文来源:掘金  如需转载请联系原作者

相关文章:

  • thinkphp3.2.3 定时任务重新加载, 无法加载新的定时任务的问题
  • PHP中使用Elasticsearch
  • WebView性能、体验分析与优化
  • MDT2013批量升级Win7客户端至Win10
  • 第22章,mysql数据库-1
  • Python_week1-2018.7.8(购物车,BMI增删改查系统)
  • 服务器状态监控相关
  • 初学Python——面向对象编程
  • 给妹子讲python-S01E07字符编码历史观-从ASCII到Unicode
  • JS字符串转数字方法总结
  • 经典算法详解(6)渔夫捕鱼
  • MariaDB 10.3 instant ADD COLUMN亿级大表毫秒级加字段
  • 09_用户行为分析_广告精准推送项目介绍
  • Linux 查看gpu信息 Nvidia显卡信息及使用情况
  • tensorflow笔记6:tf.nn.dynamic_rnn 和 bidirectional_dynamic_rnn:的输出,output和state,以及如何作为decoder 的输入...
  • (三)从jvm层面了解线程的启动和停止
  • (十五)java多线程之并发集合ArrayBlockingQueue
  • 77. Combinations
  • Consul Config 使用Git做版本控制的实现
  • idea + plantuml 画流程图
  • JavaScript HTML DOM
  • JS题目及答案整理
  • socket.io+express实现聊天室的思考(三)
  • TCP拥塞控制
  • underscore源码剖析之整体架构
  • 动态魔术使用DBMS_SQL
  • 记一次用 NodeJs 实现模拟登录的思路
  • 前端相关框架总和
  • 突破自己的技术思维
  • 格斗健身潮牌24KiCK获近千万Pre-A轮融资,用户留存高达9个月 ...
  • 微龛半导体获数千万Pre-A轮融资,投资方为国中创投 ...
  • ​ArcGIS Pro 如何批量删除字段
  • # 再次尝试 连接失败_无线WiFi无法连接到网络怎么办【解决方法】
  • #我与Java虚拟机的故事#连载15:完整阅读的第一本技术书籍
  • $.extend({},旧的,新的);合并对象,后面的覆盖前面的
  • (01)ORB-SLAM2源码无死角解析-(66) BA优化(g2o)→闭环线程:Optimizer::GlobalBundleAdjustemnt→全局优化
  • (173)FPGA约束:单周期时序分析或默认时序分析
  • (2)Java 简介
  • (4) openssl rsa/pkey(查看私钥、从私钥中提取公钥、查看公钥)
  • (Matalb时序预测)WOA-BP鲸鱼算法优化BP神经网络的多维时序回归预测
  • (pojstep1.3.1)1017(构造法模拟)
  • (附源码)ssm本科教学合格评估管理系统 毕业设计 180916
  • (附源码)ssm码农论坛 毕业设计 231126
  • (七)微服务分布式云架构spring cloud - common-service 项目构建过程
  • (五)IO流之ByteArrayInput/OutputStream
  • (一)Mocha源码阅读: 项目结构及命令行启动
  • (原+转)Ubuntu16.04软件中心闪退及wifi消失
  • (转载)(官方)UE4--图像编程----着色器开发
  • (轉貼) VS2005 快捷键 (初級) (.NET) (Visual Studio)
  • .L0CK3D来袭:如何保护您的数据免受致命攻击
  • .net core 依赖注入的基本用发
  • .NET连接数据库方式
  • .net通用权限框架B/S (三)--MODEL层(2)
  • @Mapper作用
  • [ C++ ] STL priority_queue(优先级队列)使用及其底层模拟实现,容器适配器,deque(双端队列)原理了解