加载类似PHP的Javascript';s包括

加载类似PHP的Javascript';s包括,php,javascript,module,include,require,Php,Javascript,Module,Include,Require,今天我要的是一些我不敢相信能在网上找到的东西 我试图创建一个javascript函数,它允许我提供一个文件名/路径名作为参数,该函数返回javascript代码,这些代码将立即执行/初始化,就像PHP的include或require一样 现在我尝试了几种技术来实现我的方法,但我只是没有找到正确的地方,所以我可能会问:在JS中有可能做到这一点吗 提前感谢有许多库和标准仅用于此目的。在Node.js中,内置了一个CommonJS实现。如果要从文件中导出一段代码或文件的全部内容,可以将其附加到模块。e

今天我要的是一些我不敢相信能在网上找到的东西

我试图创建一个javascript函数,它允许我提供一个文件名/路径名作为参数,该函数返回javascript代码,这些代码将立即执行/初始化,就像PHP的include或require一样

现在我尝试了几种技术来实现我的方法,但我只是没有找到正确的地方,所以我可能会问:在JS中有可能做到这一点吗


提前感谢

有许多库和标准仅用于此目的。在Node.js中,内置了一个CommonJS实现。如果要从文件中导出一段代码或文件的全部内容,可以将其附加到
模块。exports
或干脆
exports
对象。然后可以使用
require('./path/to/file')
以在单独的代码段中要求它

一些库尝试借用这种方法并在客户端实现它,browserify就是其中之一

但是,您最好看看其中最好的客户端库:

RequireJS实现了所谓的异步模块定义模式,该模式在顶级文件中加载所有项目依赖项。它使您可以访问两个函数,
require()
define()
,这两个函数接受许多参数。第一个函数只需要依赖项,而第二个函数定义了一个模块以及模块依赖项的名称,如下所示:

不定义模块的顶级文件,仅使用模块:

require(['jquery', 'underscore', 'backbone'], // dependencies
  function($, _, Backbone) { // dependencies are passed into callback
    $('div').append('Test'); // dependencies are available to this file
  }
);
模块:

define(['jquery', 'underscore', 'backbone'], // this module's dependencies
  function($, _, Backbone) { // dependencies are made available
    var MyModule = {};
    return MyModule; // this return statement essentially defines the module
  }
);
这种方法的好处在于,通过拥有一个顶级文件和几个模块,这些模块都定义了它们自己的依赖项,您只需要引用一个模块,如果它实际上是该文件的依赖项,那么您的顶级内容总是整洁有序,通常只包含一个初始化函数


RequireJS还附带了一个名为R.js的优化器,它可以使用UglifyJS或Google的闭包编译器以正确的顺序缩小和连接脚本。它值得一看。

的可能重复,您需要同步ajax和
标记注入。ExtJS就是通过这种技术工作的。我知道这些方法,但并不完全是我想要的:展示什么?但我怎么看,通过这种方式加载函数来初始化函数是不可能的?如果在用户单击某个内容后删除或添加标记,那么是否可以在生成的脚本标记的文件中使用函数?谢谢,我想我将签出require似乎是一个很好的解决方案!最后一个问题:是否有可能使函数在require回调函数之外可用,或者只在该函数内部可用?据我所知,它只在该函数内部可用。不过,我从来都不需要对RequireJS做更多的事情来保证在那个声明中找到任何真相,所以可能有一些理由去检查它。关于RequireJS的一点是,通过设计,它可以防止您污染全球范围。但是,如果在一个模块中定义依赖项,并使该模块成为另一个模块的依赖项,则第二个模块可以访问第一个模块的依赖项,而无需定义它们。