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