HbuilderX 插件开发-模板创建

embedded/2024/11/20 20:32:35/

实现思路

  • 使用HbuilderX 打开某个文档时右键
  • 点击的时候获取当前打开的文档内容
  • 使用 API 替换为自己的模板

示例

  • package.json
{"id": "SL-HbuilderX-Tool","name": "SL-HbuilderX-Tool","description": "快速创建html,vue2模板","displayName": "SL-HbuilderX-Tool","version": "1.0.1","publisher": "SL","engines": {"HBuilderX": "^3.8.0"},"categories": ["Other"],"keywords": ["html","vue2","template"],"main": "./extension","activationEvents": ["onCommand:extension.html","onCommand:extension.vue2"],"contributes": {"commands": [{"command": "extension.html","title": "创建HTML模板"},{"command": "extension.vue2","title": "创建VUE2模板"}],"menus": {"editor/context": [{"id": "foo","title": "SL-HbuilderX-Tool","group": "goto"},{"command": "extension.html","group": "foo@1","when": "editorTextFocus"},{"command": "extension.vue2","group": "foo@1","when": "editorTextFocus"},{"group": "goto"}]}},"extensionDependencies": ["plugin-manager"],"dependencies": {}
}
  • extension.js
var hx = require("hbuilderx");let htmlTemp = `<!DOCTYPE html>
<html lang="zh-CN">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title></title>
</head>
<body><div>Hello World!!!</div>
</body>
</html>`
let vue2Temp = `<template><div>Hello World!!!</div>
</template><script>
export default {name: "Index",props: {},watch:{},computed:{},data() {return {}},beforeCreate() {},created() {},beforeMount() {},mounted() {},beforeDestroy() {},destroyed() {},methods: {}
}
</script><style scoped></style>`//该方法将在插件激活的时候调用
function activate(context) {let htmldisposable = hx.commands.registerCommand('extension.html', () => {let activeEditor = hx.window.getActiveTextEditor();activeEditor.then(function(editor) { let text = editor.document.getText({});editor.edit(editBuilder => {editBuilder.replace({start:0,end:text.length}, htmlTemp);});});});let vue2disposable = hx.commands.registerCommand('extension.vue2', () => {let activeEditor = hx.window.getActiveTextEditor();activeEditor.then(function(editor) { let text = editor.document.getText({});editor.edit(editBuilder => {editBuilder.replace({start:0,end:text.length}, vue2Temp);});});});//订阅销毁钩子,插件禁用的时候,自动注销该command。context.subscriptions.push(htmldisposable);context.subscriptions.push(vue2disposable);
}
//该方法将在插件禁用的时候调用(目前是在插件卸载的时候触发)
function deactivate() {}module.exports = {activate,deactivate
}

源代码

SL-HbuilderX-Tool


http://www.ppmy.cn/embedded/139168.html

相关文章

linux配置动态ip

在CentOS中配置动态IP 找到你的网络接口名称&#xff0c;通常是eth0或ens33等&#xff0c;编辑对应的配置文件。这些文件通常位于/etc/sysconfig/network-scripts/目录下&#xff0c;并以ifcfg-开头。 例如&#xff0c;如果你的接口名称是eth0&#xff0c;配置文件将是ifcfg-…

每天五分钟机器学习:支持向量机算法数学基础之核函数

本文重点 从现在开始,我们将开启支持向量机算法的学习,不过在学习支持向量机算法之前,我们先来学习一些支持向量机所依赖的数学知识,这会帮助我们更加深刻的理解支持向量机算法,本文我们先来学习核函数。 定义 核函数(Kernel Function)是一种在支持向量机(SVM)、高…

dotnet:依赖注入

依赖注入的基本概念 依赖&#xff1a;一个类依赖于另一个类或接口来完成其功能。注入&#xff1a;依赖项由外部提供给类&#xff0c;而不是由类自己创建。 builder.Services.AddScoped<IMyDependency, MyDependency>(); 这行代码使用 AddScoped 方法将 IMyDependency 接…

OpenCPN中的GTK版本及调试信息

1:开启GTK的调试信息 export GDK_DEBUG=all root@rk3568-buildroot:/home/corey/opencpn/opencpnbuildroot/OpenCPN/build_wxWidgets3.3.2/install/bin# ./opencpn Gdk-Message: 00:43:27.823: Trying wayland backend Gdk-Message: 00:43:27.824: opening display Gdk-Mes…

Spring Boot 2.x 和 Druid 多数据源整合 dm

参考链接 SpringBoot alibaba druid 语雀 Home alibaba/druid Wiki GitHub druid/druid-spring-boot-starter at master alibaba/druid GitHub 使用 1&#xff09;添加依赖 <!-- druid --> <dependency><groupId>com.alibaba</groupId><a…

python pytorch 加载MNIST训练集,解释

def data_generator(root, batch_size): # 加载MNIST训练集&#xff0c;指定根目录&#xff0c;设置为训练模式&#xff0c;如果数据不存在则下载 train_set datasets.MNIST(rootroot, trainTrue, downloadTrue, # 对图像进行预处理&a…

Python笔记2-六种标准数据类型3

4、元组&#xff08;Tuple&#xff09; 不可变&#xff0c;是序列 元组用圆括号定义&#xff08;圆括号可省略&#xff09;&#xff0c;没有元素类型限制 tuple(literable) 将一个literable对象转化为元组并返回&#xff0c;如果没有实参&#xff0c;则返回空元组 5、字典…

炼码LintCode--数据库题库(级别:中等;数量:更新中~)--刷题笔记_03

目录 炼码LintCode--数据库题库&#xff08;级别&#xff1a;中等&#xff1b;数量&#xff1a;更新中~&#xff09;--刷题笔记_033617 更换连续两个人的座位&#xff08;case when&#xff09;题&#xff1a;sql&#xff1a;解释&#xff1a; 3615 数据中位数&#xff08;窗…