我想编写一些可以在我的其他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 : {});
不确定这是否是最好的......但似乎有效。
答案 0 :(得分:3)
这是奇怪的,你是对的。编写自己的代码,只需将其放在某处即可。这指的是复杂的框架,它们在很多地方都有很多功能,没有人会驯服这些功能。它们只是暴露一个所有权力都来自的根对象。
请阅读&#34;命名空间和模块&#34;在 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);
答案 1 :(得分:0)
如果打算编写Utility方法,则可以使用ECMA6 Script标准编写。
通过在method.js中导出一次来编写方法,并通过导入所需的文件来使用它
例: 在/method.js中导出const MyUtilityMethod = function(){...}
从'./method.js'
导入{MyUtilityMethod}希望这有帮助。