2015-06-25 40 views
1

我目前正在处理服务器端节点项目。虽然节点有使用CommonJS的模块加载器,但我正在评估是否使用RequireJS。虽然使用RequireJS和Node有一些优点,但如果应用程序具有一些客户端方面的功能,对于完全服务器端的项目我找不到任何好处。使用requirejs与节点

人们普遍认为,对于100%服务器端的Node项目,并入RequireJS没有真正的优势吗?

+0

什么问题,我同意使用requirejs对nodejs没有任何好处。因为它已经有非常好的java加载能力,'require('./ file')'等等。 –

回答

0

有使用RequireJS服务器端的原因,但它们很少。除非你能说出的理由,如:

必须使用RequireJS因为X

其中“X”是指证明使用RequireJS的原因,那么你不应该这样做。

请注意,仅仅想要以AMD格式编写模块并不足够,因为存在允许在Node中加载AMD模块的加载器(如node-amdl-loader)。当我想测试不依赖于浏览器的代码时,我实际上使用了它。我以AMD格式编写模块,并指定如果在Node中使用,则应使用像node-amd-loader这样的AMD加载器。这种方式库在Node和浏览器中都可以工作,但是我在Node中测试它。例如,如果您需要运行需要DOM实现的代码,则使用RequireJS服务器端的一个原因是例如。如果您使用像jsdom这样的东西来提供DOM,并且您要加载的代码是一系列AMD模块,那么使用RequireJS将代码加载到由jsdom创建的DOM环境中很有意义。

+0

谢谢你。我想主要原因是让我在我的开发堆栈中保持一致。通常我的工作不仅仅是服务器端。 如果在性能方面没有缺陷,或者过度复杂并可能导致软件包兼容性问题的可能性,我仍然会使用它。 您是否会说使用requirejs会在加载/处理时间方面增加很多开销,因为它正在与现有模块加载器一起加载。还是它比CommonJS更快? – Michael

+0

在许多情况下,可以通过使用诸如node-amd-loader之类的AMD加载器并完全跳过RequireJS来实现一致性的理想目标。RequireJS无论如何都不错,但它试图解决浏览器环境特有的问题。在Node中运行它时,没有必要*的实质性理由,意味着要处理RequireJS的其他特性。例如,在[你的问题]中(http://stackoverflow.com/q/31039014/1906307),你的代码和CommonJS一样好,不会引起神秘的双重加载问题。 – Louis

0

我从来没有找到一个很好的理由在节点中使用RequireJS。然而,RequireJS can be run on node,和文档具有的,为什么你可能要一个节点服务器上运行RequireJS简要说明:

通过使用服务器上RequireJS,您可以使用一个格式为所有 模块,它们是否正在运行服务器端或浏览器中。那 方式你可以保留速度的好处和容易的调试,你得到 与RequireJS在浏览器中,而不必担心额外的 转换成本之间移动两种格式。

大多数情况下,这只适用于也有客户端元素的项目。如果是我,我会坚持Node's internal module loader