0

我想编写一些可以在其他 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 : {});

不确定这是否是最好的......但它似乎有效。

4

2 回答 2

3

这会很奇怪,你是对的。编写你自己的代码,把它放在某个地方,它就可以工作了。这指的是复杂的框架,它在所有地方都制作了许多功能,没有人“驯服”它们以只公开其所有权力的根对象。

请阅读 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);
于 2013-08-31T03:27:39.503 回答
0

如果打算编写实用程序方法,则可以使用 ECMA6 脚本标准编写。

通过在 method.js 中导出一次来编写您的方法,并通过导入所需的文件来使用它

例如:/method.js 中的 export const MyUtilityMethod = function (){...}

从 './method.js' 导入 {MyUtilityMethod}

希望这可以帮助。

于 2018-01-03T09:45:42.947 回答