如何在没有Node.js的情况下使用JS require()

20

这可能是一个不成熟的问题,但如何在普通的JavaScript中实现与require()(Node.js)相同的功能?

真的需要一些帮助。


1
你必须使用eval和同步Ajax来重新创建Node.js的require()函数。不用说,大多数开发人员都不喜欢这两种方法,因此他们使用不那么方便的异步导入工具,如yepnope、requireJS、AMD等。 - dandavis
2个回答

13

有几种服务可以让您实现这一点。

最受欢迎的是Browserify

基本上,它需要通过读取文件并浏览语法树来将其转换为类似于RequireJS的样式。

请注意,这需要额外的编译步骤。(但我们最终会在ES6中得到模块 :))


1
2017年 - 最受欢迎的是webpack。 - Benjamin Gruenbaum

8

http://requirejs.org/docs/start.html

有一个名为RequireJS的模块加载器可用于浏览器中,无需使用Node.js或Rhino。

要使用它,下载并保存脚本,然后将其包含在您的页面中。

<!DOCTYPE html>
<html>
    <head>
        <title>My Sample Project</title>
        <!-- data-main attribute tells require.js to load
             scripts/main.js after require.js loads. -->
        <script data-main="scripts/main" src="scripts/require.js"></script>
    </head>
    <body>
        <h1>My Sample Project</h1>
    </body>
</html>

data-main属性将指向您的主脚本,您可以使用以下方式加载其余的脚本:

require(["helper/util"], function(util) {
    //This function is called when scripts/helper/util.js is loaded.
    //If util.js calls define(), then this function is not fired until
    //util's dependencies have loaded, and the util argument will hold
    //the module value for "helper/util".
});

请访问http://requirejs.org了解更多有关IT技术方面的文档。


非常感谢!RequireJS对我来说很有效。我正在使用gulp将Node模块连接并压缩成一个文件(例如:script.min.js),然后使用RequireJS正确地编译模块。 - XenoX

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接