nodejs是浏览器上的核心模块portabe

时间:2017-05-23 00:21:33

标签: javascript node.js

我想使用为nodejs编写的所有预构建模块作为我可以在浏览器中使用的单独模块。我想将平台仅限于编译器js代码,以便在浏览器或nodejs中执行时没有区别。所有模块应该在浏览器中运行,与在nodejs(服务器)中运行的模块完全相同。

1 个答案:

答案 0 :(得分:1)

  

nodejs代码模块是否可移植到浏览器

这取决于。不使用浏览器中不存在的nodejs功能的nodejs代码(例如fs模块或net模块)可以在nodejs和browser之间移植。

但是,使用节点中不存在于浏览器中的功能的nodejs代码将不可移植。当它运行时,它将生成运行时错误,因为代码将尝试调用浏览器中不存在的nodejs库函数。

有一个名为Browserify的工具,用于在浏览器中运行nodejs代码。请记住,虽然它可以帮助您将nodejs代码打包在浏览器中运行,但它无法解决上述规则,即您可以在代码中调用哪些代码以便于移植。

使用浏览器中不存在的nodejs模块的代码的替代方法是将代码保留在服务器中,然后公开可以通过Ajax调用从浏览器调用的Ajax端点。浏览器收集它想要传递给操作的任何数据,并使用ajax调用发送该数据。服务器接收ajax调用,运行nodejs代码来处理数据,然后将答案返回给ajax调用。您在浏览器中的Javascript接收来自ajax调用的结果并有其答案。这样代码保留在nodejs中,但您可以在nodejs内或浏览器中使用它。