为什么 JS 设计模式片段在 sublime 中不起作用
Why JS design pattern snippet not work in sublime
以下 sublime 代码段无效:
<snippet>
<content><![CDATA[
(function ($) {
var defaults = {};
function NAME(element, options) {
this.config = $.extend({}, defaults, options);
this.element = element;
this.init();
}
NAME.prototype.init = function () {
};
$.fn.name = function (options) {
new NAME(this.first(), options);
return this.first();
};
}(jQuery));
]]></content>
<!-- Optional: Set a tabTrigger to define how to trigger the snippet -->
<tabTrigger>jqp</tabTrigger>
<!-- Optional: Set a scope to limit where the snippet will trigger -->
<!-- <scope>source.js</scope> -->
</snippet>
此外,如果有人能告诉我如何在代码段中使用自定义参数,那将很有帮助。
<snippet>
<content><![CDATA[
(function ($) {
var defaults = {};
function ${1:name}(${2:element}, ${3:options}) {
this.config = $.extend({}, ${2:defaults}, ${3:options});
this.element = element;
this.init();
}
${1:NAME}.prototype.init = function () {
};
$.fn.${1:name} = function (options) {
new ${1:NAME}(this.first(), options);
return this.first();
};
}(jQuery));
]]></content>
<tabTrigger>jqp</tabTrigger>
<scope>source.js</scope>
</snippet>
这应该可以解决问题。 $
是一个特殊字符,所以你必须用 \
来转义它。此外,我删除了额外的缩进并添加了制表位以允许自定义参数。您必须使用 ${#:PLACEHOLDERNAME}
符号在特定单词处创建制表位。您可以根据希望制表位的顺序将 #
替换为您的数字,并将 PLACEHOLDERNAME
替换为您希望占位符值表示的任何内容。您可以阅读有关 Sublime Text 片段的更多信息 here。
以下 sublime 代码段无效:
<snippet>
<content><![CDATA[
(function ($) {
var defaults = {};
function NAME(element, options) {
this.config = $.extend({}, defaults, options);
this.element = element;
this.init();
}
NAME.prototype.init = function () {
};
$.fn.name = function (options) {
new NAME(this.first(), options);
return this.first();
};
}(jQuery));
]]></content>
<!-- Optional: Set a tabTrigger to define how to trigger the snippet -->
<tabTrigger>jqp</tabTrigger>
<!-- Optional: Set a scope to limit where the snippet will trigger -->
<!-- <scope>source.js</scope> -->
</snippet>
此外,如果有人能告诉我如何在代码段中使用自定义参数,那将很有帮助。
<snippet>
<content><![CDATA[
(function ($) {
var defaults = {};
function ${1:name}(${2:element}, ${3:options}) {
this.config = $.extend({}, ${2:defaults}, ${3:options});
this.element = element;
this.init();
}
${1:NAME}.prototype.init = function () {
};
$.fn.${1:name} = function (options) {
new ${1:NAME}(this.first(), options);
return this.first();
};
}(jQuery));
]]></content>
<tabTrigger>jqp</tabTrigger>
<scope>source.js</scope>
</snippet>
这应该可以解决问题。 $
是一个特殊字符,所以你必须用 \
来转义它。此外,我删除了额外的缩进并添加了制表位以允许自定义参数。您必须使用 ${#:PLACEHOLDERNAME}
符号在特定单词处创建制表位。您可以根据希望制表位的顺序将 #
替换为您的数字,并将 PLACEHOLDERNAME
替换为您希望占位符值表示的任何内容。您可以阅读有关 Sublime Text 片段的更多信息 here。