【发布时间】:2014-10-14 21:13:13
【问题描述】:
我遇到了几个使用此 require() 函数的 JavaScript 项目和库,以便包含其他文件,如下所示:
require('somefile')
我从来没有听说过,显然它是 node.js 的东西,我没有也没有使用它。
我只是打算在我自己的网站中使用这些 JavaScript 库,但我看到了各种涉及“npm”(无论是什么)的指令。然后据说有一个名为 required.js 的替代品,但这似乎使用了不同的语法,比如强制使用 require([...]) 或其他东西,而我需要包含的项目只是 do require(... )。
在常规 html5 网站中使用 JavaScript 项目时,处理这种 require(...) 内容的最简单方法是什么? (即所有都应该运行客户端)
补充:我已经尝试过 require.js,但它似乎不起作用。例如 somelibrary.js 中的第一行是这样的:
var assert = require('assert')
当我之前包含 require.js,然后是 somelibrary.js 时,我收到了这个错误:
未捕获的异常:错误:模块名称“assert”尚未加载 然而对于上下文:_。使用 require([])
任何包含 require() 的东西都会发生这种情况
另一个补充:我注意到人们提到“浏览器”。我试图包含的一些 js 项目也推荐这个。显然,这应该生成一个我可以包含的即用型 .js 文件。但是
他们为什么不直接发布这个经过浏览器化的 .js?我有理由自己编译吗?它应该是所有浏览器或网站通用的东西,对吧?
这个browserify的东西,显然是为了避免node.js,实际上似乎需要node.js本身(说明都提到“npm -g install browserify”等)
【问题讨论】:
-
RequireJS 是一个 JavaScript 文件和模块加载器。它针对浏览器内使用进行了优化,但也可以在其他 JavaScript 环境中使用,例如 Rhino 和 Node。 -- requirejs.org
-
我试过 require.js 但似乎没有解决我的问题,请参阅上面的编辑
-
这些库有
package.json文件吗? -
是的,我通常会看到这些“package.json”文件。
-
好的,这意味着这些库遵循 CommonJS 模块语法,并且可以从您的代码中获取。 但是您需要使用 browserify,这是一个额外的构建步骤。你应该看看the browserify homepage 上的描述。它非常容易上手,您可以使用来自npm 的大部分库。
标签: javascript node.js npm require