如果一条船不知道它要驶向哪个码头,那么任何风都不会是顺风。——塞涅卡

HX就是HBuilder X的缩写,它配置自定义模板在官方文档中也有介绍

这里配置一个简单的uniapp列表页的模板

image-20211028182728452

然后写入我们的自定义模板:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
{
// 注意:本文档仅支持单行注释,并且'//'前不能有任何非空字符!!!
//
// HBuilderX使用json扩展代码块,兼容vscode的代码块格式
// 本文档修改完毕,保存即可生效,无需重启。
// 本文档用于用户自定义vue代码块。
// 每个配置项的说明如下:
// 'key' :代码块显示名称,显示在代码助手列表中的名字,以下例子中'console.log'就是一个key。
// 'prefix' :代码块的触发字符,就是敲什么字母匹配这个代码块。
// 'body' :代码块的内容。内容中有如下特殊格式
// $1 表示代码块输入后光标的所在位置。如需要多光标,就在多个地方配置$1,如该位置有预置数据,则写法是${1:foo1}。多选项即下拉候选列表使用${1:foo1/foo2/foo3}
// $2 表示代码块输入后再次按tab后光标的切换位置tabstops(代码块展开后按tab可以跳到下一个tabstop)
// $0代表代码块输入后最终光标的所在位置(也可以按回车直接跳过去)。
// 双引号使用\\'转义
// 换行使用多个数组表示,每个行一个数组,用双引号包围,并用逗号分隔
// 缩进需要用\\t表示,不能直接输入缩进!
// 'triggerAssist' :为true表示该代码块输入到文档后立即在第一个tabstop上触发代码提示,拉出代码助手,默认为false。
// 每个代码块以key为主键,多个代码块需要逗号分隔。
// 如果json语法不合法,底部会弹出错误信息,请注意修正。
// 例子:
// "console.log": {
// "prefix": "logtwo",
// "body": [
// "console.log('$1');",
// "\tconsole.log('$2');"
// ],
// "triggerAssist": false,
// "description": "Log output to console twice"
// }
"simple-uni-page": {
"prefix": "simple-uni-page",
"body": ["<template>",
" <view>",
" <view>",
" <view v-for='(item, index) in dataList'>",
" </view>",
" </view>",
" </view>",
" </template>",
" ",
" <script>",
" export default {",
" data() {",
" return {",
" current: 1,",
" size: 10,",
" dataList: [],",
" noMore: false,",
" noData: false,",
" loading: false",
" };",
" },",
" created() {",
" this.loadList(true);",
" },",
" onPullDownRefresh() {",
" this.loadList(true);",
" },",
" onReachBottom() {",
" if (this.noMore || this.noData) {",
" return;",
" }",
" this.loadList();",
" },",
" methods: {",
" loadList(refresh) {",
" if (this.loading) {",
" return;",
" }",
" this.loading = true;",
" if (refresh) {",
" this.current = 1;",
" this.dataList = [];",
" }",
" setTimeout(() => (this.loading = false), 5000);",
" let { current, size } = this;",
" uni.gRequest.request('', { current, size }, null, res => {",
" let dataList = res.data.records;",
" this.dataList = this.dataList.concat(dataList);",
" this.current++;",
" this.noData = Boolean(this.dataList.length);",
" this.noMore = dataList.length < size;",
" this.loading = false",
" });",
" }",
" }",
" };",
" </script>",
" ",
" <style scoped>",
" ",
" </style>"
],
"triggerAssist": false,
"description": "just a simple page"
},
"simple-request": {
"prefix": "simple-request",
"body": [
" loadList(refresh) {",
" if (this.loading) {",
" return;",
" }",
" this.loading = true;",
" if (refresh) {",
" this.current = 1;",
" this.dataList = [];",
" }",
" setTimeout(() => (this.loading = false), 5000);",
" let { current, size } = this;",
" uni.gRequest.request('', { current, size }, null, res => {",
" let dataList = res.data.records;",
" this.dataList = this.dataList.concat(dataList);",
" this.current++;",
" this.noData = Boolean(this.dataList.length);",
" this.noMore = dataList.length < size;",
" this.loading = false",
" });",
" }"
],
"triggerAssist": false,
"description": "just a simple request"
}
}

然后保存

image-20211028182841002

这里我的prefix写的simple-uni-pagesimple-request,所以只需要输入sim开头就可以出现候选

image-20211028182941879

选择simple-uni-page

可以看到成功生效

image-20211028183048811