如何优雅地配置快应用的代码片段

快应用开发工具 Oct 15, 2020

作为一名程序员,在编码的过程中,难免会遇到要写些重复性的代码;假如每次都重新码一遍,既浪费了时间,也有伤身体。倘若可以配置一个像快捷键一样,输入简单的字母单词,立即就能调出代码片段,岂不美哉?在本篇文章中,就跟大家分享下,如何在 IDE 中配置和使用代码片段,从而让我们可以如极客一般,高效编码,节省时间。


如何使用

打开配置用户代码片段

快速应用开发工具(Windows 用户在文件下)=> 首选项 => 用户片段 => 新建代码片段文件 => 输入文件名;

或者利用快捷键:Mac:⌘ + ⇧ + p(Windows:ctrl + shift + p)=> 输入 snippet => 选择配置用户代码片段;

快应用 IDE - 代码片段

编写自己的代码片段

首先,需要了解一下 snippets 的语法:

  • prefix:代码片段名字,即输入此名字就可以调用代码片段;
  • scope:采用一个或多个语言标识符的附加属性,这使该代码段仅可用于那些指定的语言。如果未提供任何 scope 属性,则全局代码段适用于所有语言;
  • body:这个是代码段的主体。需要编写的代码放在这里,换行符和嵌入的选项卡将根据插入代码段的上下文进行格式化;
  • $1:生成代码后光标的初始位置;
  • $2:生成代码后光标的第二个位置,按 tab 键可进行快速切换,还可以有 $3,$4,$5.....;
  • ${1,字符}:生成代码后光标的初始位置(其中 1 表示光标开始的序号,字符表示生成代码后光标会直接选中字符;
  • description:代码段描述,输入名字后编辑器显示的提示信息;

除此之外,需要补充说明的是:

  • 如果没有 description,默认提示信息是类似下面例子中的 console(即 key 值)
  • 代码多行语句的以 , 隔开
  • 每行代码需要用引号包裹住
  • 特殊字符需要用 \ 进行转义

实战例子

在日常开发中,我们经常需要打印日志,可以配置一个 console.log 的代码片段:

{
	// Place your 全局 snippets here. Each snippet is defined under a snippet name and has a scope, prefix, body and 
	// description. Add comma separated ids of the languages where the snippet is applicable in the scope field. If scope 
	// is left empty or omitted, the snippet gets applied to all languages. The prefix is what is 
	// used to trigger the snippet and the body will be expanded and inserted. Possible variables are: 
	// $1, $2 for tab stops, $0 for the final cursor position, and ${1:label}, ${2:another} for placeholders. 
	// Placeholders with the same ids are connected.
	// Example:
	"console": {
		"scope": "javascript,typescript",
		"prefix": "cl",
		"body": [
			"console.log('quickapp $1 = ', $2)"
		],
		"description": "Log output to console"
	}
}

具体效果如下图例所示:

快应用 IDE - 代码片段

在输入 cl 之后,直接可以回车选择代码片段,第一个参数可以填充参数名称,插入 tab 键之后,定位到第二个参数,填充需要打印的变量即可,可谓非常方便。

注:

如果遇到定义的代码片段不在最上方,而在最下方,打开设置,搜索代码段,则将其下方的分段转换为内联即可。打开设置,搜索 snippet,则将其下方的分段转换为 inline 即可。

快应用 IDE - 代码片段

常用的代码片段

{
	"console": {
		"scope": "javascript,typescript",
		"prefix": "cl",
		"body": [
			"console.log('quickapp $1 = ', $2)"
		],
		"description": "Log output to console"
	},
	"callback": {
		"scope": "javascript,typescript",
		"prefix": "cb",
		"body": [
			"success: ($1) => {",
			"\t$2",
			"},",
			"fail: ($3) => {",
			"\t$4",
			"},",
			"complete: ($5) => {",
			"\t$6",
			"}"
		],
		"description": "Callback Success And Fail"
	},
	"ux": {
		"prefix": "ux",
		"body": [
			"<template>",
            "   <div class=\"$1\">\n",
            "   </div>",
            "</template>\n",
            "<script>",
            "export default {",
            "  data() {",
            "    return {}",
            "  }",
            "}",
            "</script>\n",
			"<style>",
			"",
            "</style>",
		],
		"description": "ux file"
	}
}

说明:

cl:打印日志;

cb:回调的 success,fail 和 complete;

ux:初始化 ux 文件;

vivo developer

快应用引擎、工具开发者、快应用生态拓展达人(vivo)。

Great! You've successfully subscribed.
Great! Next, complete checkout for full access.
Welcome back! You've successfully signed in.
Success! Your account is fully activated, you now have access to all content.