前端目前主流使用的IDE工具有VS Code、Sublime Text3、HBuilder X等等
本期我们主要了解HBuilder X,作为前端通用型开发工具,拥有可视化的操作方式,内置相关环境,开箱即用,无需配置nodejs等优点外,对uni-app更是做了特别强化。
随着对HBuilder X的使用,我们已不满足插件市场提供的功能,我们可以针对自己的需求,开发一个插件
插件扩展能做什么?(注解摘取 官方文档)
HBuilderX的插件是基于nodejs的,所有nodejs api都可以使用,如文件操作、调用其他node命令。
除此之外,HBuilderX扩展了大量的js API(与vscode兼容),可以定制很多HBuilderX的功能和界面,比如
- 添加新的菜单
- 添加新的命令及快捷键
- 扩展新的代码块
- 添加新的view视图,比如在界面左侧项目管理器旁边新增加一个“TODO”视图
- 对文档进行各种编辑,增删改文字内容、操作光标和选区
- 对文档进行校验
- 在控制台打印日志、操作状态栏消息、弹出各种提示框和选择框
准备工作
了解了插件的必要性 和 可行性 ,那么就需要做一下准备工作,为开发插件提供便利。
首先我们需要去开发平台先注册一个DCloud 账号,注意 开发平台 和 开放平台的区别,文章中会一一提到
DCloud 开发平台注册、登录
没用账号,点击注册
安装HBuilder X
- HBuilderX 官方IDE下载地址
注册、登录 HBuilder X
安装HBuilder X后,点击IDE左下角进行登录,账号使用DCloud账号和密码
新建项目
创建一个项目,进行插件项目开发
操作顺序:菜单栏 ---- 文件 ---- 新建 ---- 项目
注意重点!!!!:
这里有一个重点,就是项目名称,大家可能会习惯性的起一些语义化或者比较好记忆、好区分的项目前缀等等。
这里需要注意,你的项目名称可以随便起,但是必须保证项目名称 与 插件项目创建后的package.json 文件中的 ID 保持一致,否则有授权相关需求,会导致本地开发授权失败
编辑项目
这里我们简单添加一个窗口右下角消息通知框的提示命令。
// package.json
// 注意id 和 项目名称要一致,否则有授权相关需求,会导致本地开发授权失败
// 记得修改name 、publisher、keywords
{
"id": "ide-demo",
"name": "ide-demo",
"description": "ide-demo",
"displayName": "针对HBuilderX 开发的demo",
"version": "1.0.0",
"publisher": "your name",
"keywords":[
"ide"
],
"engines": {
"HBuilderX": "^2.7.0"
},
"categories": [
"Other"
],
"main": "./extension",
"activationEvents": [
"onCommand:extension.helloWorld"
],
"contributes": {
"commands": [{
"command": "extension.helloWorld",
"title": "demo新命令"
}],
"menus": {
"editor/context": [{
"command": "extension.helloWorld",
"group": "z_commands",
"when": "editorTextFocus"
},
{
"group": "z_commands"
}
]
}
},
"extensionDependencies": [
"plugin-manager"
],
"dependencies": {}
}
编辑消息提示框内容
// extension.js
var hx = require('hbuilderx')
//该方法将在插件激活的时候调用
function activate(context) {
let disposable = hx.commands.registerCommand('extension.helloWorld', () => {
hx.window.showInformationMessage(`
你好,这是我的第一个插件扩展。
这个插件属于 ide-demo
我们的命令生效了`)
})
//订阅销毁钩子,插件禁用的时候,自动注销该command。
context.subscriptions.push(disposable)
}
//该方法将在插件禁用的时候调用(目前是在插件卸载的时候触发)
function deactivate() {
}
module.exports = {
activate,
deactivate
}
运行项目
打开项目,然后点击启动按钮,我们会发现另打开了一个HBuilder X窗口,这个窗口中默认已加载了该插件的功能
新打开的窗口默认是没有项目的,这是可以选择新建或打开,用来调试插件运行效果
这里的项目就是普通的uni项目就可以,只是用来调试
演示效果
打开dome项目,然后在编辑区右键单击(我们使用的是editor/context,属于编辑器右键菜单),具体的插件开发规则,会在二期文章中具体介绍,这里就不具体描述了
右键单击后,我们发现菜单中有一个新命令 : demo新命令
点击 demo新命令,我们可以发现窗口右下角,出现一个消息提示框
发布插件
发布插件有两种操作方式
第一种
从插件市场中,发布插件~,但是不太推荐,发布方式比较麻烦
第二种
在项目中package.json文件上右键单击,注意这里的项目指的是插件项目(ide-demo),不是demo项目,不要搞混
我们发现菜单栏中,有一个 发布到插件市场的选项,点击它
完善插件信息
发布成功后,我们可以就可以去插件市场安装了
搜索我们的插件,如果立马搜索不到,可能是因为延迟的问题
我们也可以直接进入插件详情页面 https://ext.dcloud.net.cn/plugin?name=ide-demo,链接参数 name 写插件name 即可
点击安装插件
点击打开HBuilderX后,默认执行了安装操作。 当安装成功后,我们发现右键菜单中,有了demo新命令选项
顶部菜单栏 ---- 工具 ---- 插件安装 ---- 已安装插件中,也有了ide-demo插件
到了这一步,我们的插件就算上发布成功了。
但是插件中,如果有授权功能,类似获取用户信息、手机号、邮箱等等,这时候还需要在DCloud用户开放平台注册插件
DCloud 开放平台注册、登录
已有账号 (DCloud账号和密码),直接登录 (必须是企业认证,否则会有提示)
没用账号,点击注册
注意该账号必须是企业认证,否则会有提示
新增插件
插件注册成功后,我们的列表中,会有如下数据
插件id | client_id | client_secret | 插件名称 | 插件描述 | 插件图片icon |
---|---|---|---|---|---|
ide-demo | jo94444vE8 | oQDNw9y44444g1qo6VNT5FUDu4cQvb | ide-demao | 关于HBuilder X 插件的demo |
DCloud授权
DCloud授权登录接入文档
// 具体授权流程,请看 HBuilderX 插件开发指南(二)
let prom = hx.authorize.login({
//插件授权 ID https://open.dcloud.net.cn/
client_id: 'nIDmsBQxkI',
scopes: ['basic', 'email', 'phone'],
description: '获取用户信息和手机号!'
})
prom.then(async param => {
console.log(param['code'],'------code')
})