JavaScript 模块模式文件在一个文件中连接并使用它们的函数

JavaScript Module pattern files concatenation in a one file and using their functions

本文关键字:文件 连接 函数 一个 模式 模块 JavaScript      更新时间:2023-09-26

我在JavaScript Module Patern下编写不同的文件,如下所示:

文件 1.js

var Module = (function (module) {
  module.function = function () {
    console.log(this.thirdFunction) // This is my issue. I cannot access the function from the third file because it is concatenated in a way that the function still not exist.  
  };
  return module;
}(Module || {}));

一些文件夹/文件 2.js

var Module = (function (module) {
  module.somethingElse = function () {

  };
  return module;
}(Module || {}));

任何/文件 3.js

var Module = (function (module) {
  module.thirdFunction = function () {

  };
}(Module || {}));

我将所有这些文件放在不同的目录中,名称在不同的时间。然后我使用连接工具拥有一个文件,然后在我的 html 文件中使用它。但我面临着我无法解决的麻烦。

为了使所有这些工作,我必须以特定的方式包含它们,以便从我需要的任何内容中调用函数,并在返回的最终对象中尚未定义/创建某些内容时重新排序文件。如果我有 100 个文件和文件夹,那对我来说又会很麻烦。

我理解正确吗:http://gruntjs.com/configuring-tasks#globbing-patterns我必须手动订购文件、文件夹和我繁琐任务中的所有内容?

我不想使用AMD工具,只想使用普通的JavaScript文件和一些破解订单要求的方法。如果对我来说没有任何简单的想法,我会尝试像require这样的AMD工具.js但我不确定这些工具是否可以帮助解决这个蹩脚的问题。我将不胜感激一些咕噜咕噜的工具,一些文件/文件夹名称约定,任何不会强迫我安装越来越多的工具的东西。提前谢谢你!

困扰我的另一件事如下:

如果我想隔离代码,但我不必在最终对象中返回对象属性,是否可以执行以下操作:

文件4.js

var Module = (function (module) {
 var someThing = Module.somethingElse() // from file 2.js
 and then using someThing here for clicking, DOM rendering, etc, etc 
}(Module || {}));

对于我实际上不返回任何内容的文件,坚持相同的var Module约定是愚蠢的吗?我只是想办法避免对象名称并再次使用this

事实上,AMD工具就是为这种问题而创建的。但是,您可以使用咕噜声在某种程度上解决此问题。您可以简单地将需要首先进入文件夹的文件组织到一个文件夹中,并按您想要的顺序列出它们,然后拥有另一个文件夹,其中包含所有顺序无关紧要的文件,这将包括所有内容。

'js/main/First.js',
'js/main/Second.js',
'js/rest/*.js'

无论您为此项目选择什么,您都可能需要查看 Require.js 或 Browserify 以供将来工作。