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

HbuilderX 插件开发-模板创建

实现思路

  • 使用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.kler.cn/a/397752.html

相关文章:

  • Oracle Instant Client 23.5安装配置完整教程
  • git简介和本地仓库创建,并提交修改。git config init status add commit
  • 嵌入式课程day13-C语言指针
  • 【Apache Paimon】-- 1 -- Apache Paimon 是什么?
  • LLM - 计算 多模态大语言模型 的参数量(Qwen2-VL、Llama-3.1) 教程
  • 【征稿倒计时!华南理工大学主办 | IEEE出版 | EI检索稳定】2024智能机器人与自动控制国际学术会议 (IRAC 2024)
  • 将自定义函数添加到MATLAB搜索路径的方法
  • 【视觉SLAM】1-概述
  • java笔试练习题笔记(9)
  • GRE做题笔记(零散的个人经验)
  • 云渲染与云电脑,应用场景与技术特点全对比
  • 【RabbitMQ】10-抽取MQ工具
  • 高性能linux服务器运维实战 shell应用案例
  • C# yolo10使用onnx推理
  • SpringBoot整合Email 邮件发送详解
  • Java基础——多线程
  • SOP搭建:企业标准化操作程序构建与实施指南
  • 用com.github.shyiko.mysql.binlog 写一个监听mysql的binlog 的程序
  • 【代码随想录day32】【C++复健】509. 斐波那契数;70. 爬楼梯;746. 使用最小花费爬楼梯
  • Java-01 深入浅出 MyBatis - MyBatis 概念 ORM映射关系 常见ORM 详细发展历史
  • [刷题]入门1.矩阵转置
  • 单片机_day7_中断
  • 【Webpack实用指南】如何拆分CSS资源(2)
  • 说说软件工程中的“协程”
  • FFMPEG录像推流时遇到的问题
  • 【ArcGIS微课1000例】0128:ArcGIS制作规划图卫星影像地图虚化效果