我想编写一些帮助函数,我可以在其他JavaScript文件中使用它们。
某些JavaScript库仅在放置在client / compatibility子目录中时才起作用。执行此目录中的文件而不包装在新的变量范围中。
对我来说似乎有点奇怪,我应该将所有库都放在一个名为compatibility
的文件夹中。通常,“兼容”的东西是针对尚未升级到新样式的遗留代码。有没有办法导出模块,以便我可以在我的其他文件中访问它们?
立即使用此模式:
Util = (function(exports) {
exports.getFileExtension = function(filename) {
var i = filename.lastIndexOf('.');
return (i < 0) ? '' : filename.substr(i);
};
// more functions
return exports;
})(typeof Util !== 'undefined' ? Util : {});
不确定这是否是最好的...但它似乎工作。
这是奇怪的,你是对的。编写自己的代码,只需将其放在某处即可。这指的是复杂的框架,这些框架在很多地方都有很多功能,没有人“驯服”它们只暴露一个所有权力都来自的根对象。
请阅读http://www.meteor.com/blog/2013/08/14/meteor-065-namespacing-modularity-new-build-system-source-maps上的“命名空间和模块”
它可以帮助您提供内置的可维护性,以避免与您编写的其他内容发生冲突,这主要是命名空间的用途。
一个好的做法是拥有自己的帮助器对象,名为helper或util,放置分组的东西:
utils = {
distance_between: function(lat1,lng1,lat2,lng2) {
var radiusEarth = 3963.1676; // miles radius earth
var dLat = deg2rad(lat2-lat1); // deg2rad below
...
displayHumanReadableTime: function(timestamp){
var a = new Date(timestamp);
如果打算使用Utility方法,则可以使用ECMA6 Script标准编写。
通过在method.js中导出一次来编写方法,并通过导入所需的文件来使用它
例如:/method.js中的export const MyUtilityMethod = function(){...}
从'./method.js'导入{MyUtilityMethod}
希望这可以帮助。