我有一些这样的功能:
function killOrphans(str) {
return str.replace(/\s([\dwuioaz]{1})\s/gi, ' $1\u00a0');
}
这通常是一个辅助函数,用于从行尾删除单字母单词(孤立词)(波兰语排版要求这样做)。
问题:您如何对待此类函数的库?全局范围内的模块?扩展 jQuery?扩展 String、Array 等的原型(prototype)? (我不认为这是一个好主意......)。我想我会朝着下划线的方向创建一个模块,但我很高兴听到现实生活中的例子来说明你的方法。
亚当
最佳答案
在我的项目中,我使用了多种辅助函数策略。
View 或模型上的额外方法。
var MyView = Backbone.View.extend({
initialize: function(){...},
render: function(){...},
helper: function(){...}
});
使用辅助模块。
var myHelpers = {
foo: function(){...},
bar: function(){...},
baz: function(){...}
};
扩展现有库。
jQuery.fn.foo = function(){...};
使用 IIFE (最适合您想要保密的功能)
var MyView = Backbone.View.extend({
initialize: function(){...},
render: function(){...},
myMethod: (function(){
function helper(){...}
return function(){
// do stuff here, using helper()
}
})()
});
此外,如果您没有使用自动提供模块系统的node.js,那么值得使用一些策略,例如 browserify或requirejs ,以合理的方式导出和导入模块,而不是让所有内容都卡在全局命名空间之外。
关于backbone.js - 辅助函数在 Backbone 中的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21338588/