我想使用为nodejs编写的所有预构建模块作为一个单独的模块,我可以在浏览器中使用它。我希望将平台限制为仅编译器js代码,这样如果我在浏览器或nodejs中执行,就不会有什么区别。所有模块都应该在浏览器中运行,与在nodejs(服务器)中运行完全相同。
最佳答案
Is nodejs code module portable to the browser
这要看情况。不使用浏览器中不存在的nodejs功能(例如fs
模块或net
模块)的nodejs代码可以在nodejs和浏览器之间移植。
但是,使用 Node 中浏览器中不存在的功能的 NodeJS 代码将不可移植。当它运行时,它将生成一个运行时错误,因为代码将尝试调用浏览器中不存在的nodejs库函数。
有一个工具叫 Browserify它是为了方便在浏览器中运行 Nodejs 代码而构建的。请记住,虽然它可以帮助您打包 NodeJS 代码以在浏览器中运行,但它并不能解决上述关于您可以在代码中调用什么和不能调用什么以便可移植的规则。
<小时/>对于使用浏览器中不存在的 Nodejs 模块的代码,另一种方法是将代码保留在服务器中,然后公开一个 Ajax 端点,您可以通过 Ajax 调用从浏览器调用该端点。浏览器收集它想要传递给操作的任何数据,并通过 ajax 调用发送该数据。服务器接收ajax调用,运行nodejs代码来处理数据,然后将答案返回给ajax调用。浏览器中的 JavaScript 接收 ajax 调用的结果并得到答案。这样代码就保留在 Nodejs 中,但您可以在 NodeJS 中或在浏览器中使用它。
关于javascript - Node js核心模块可以在浏览器上移植吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44123916/