在常规JavaScript文件中导入NodeJS文件



我有 3 个文件,一个index.html,一个Learner.js,和一个bot.js。现在,bot.js是一个常规的js文件,我用<script>标签加载到html文件中,Learner.js是一个NodeJS文件。我拥有此文件的唯一原因是因为我想使用神经网络库,但它仅适用于 NodeJS,不适用于常规 javascript,那么我将如何准确引用Learner.js中存在的任何函数、变量等bot.js,我应该使用 <script> 标签加载文件,或者最好的方法是什么?

答案是它(可能)很复杂。

有些事情node.js可以做浏览器JavaScript不能做的事情(比如有文件系统访问权限),有些事情是浏览器不做的(例如Buffer API,模块系统)。显然,后者可以通过库带到浏览器中,但在前者上,您就不走运了。

所以问题是,该库使用哪些特定于节点的东西?如果只是require使用 webpack/browserify 或 babel/rollup 插件。但是你将不得不梳理该库,看看它实际使用了什么,以及它是否存在于浏览器中。

您可以简单地添加它:

<script type="text/javascript" src="Learner.js"></script> 
<script type="text/javascript" src="bot.js"></script> 

但是,如果你的Learner.js javascript文件使用一些本机node.js引擎函数或只是require()调用,它将不起作用。

在这种情况下,请考虑尝试使用Browserify或类似的工具,以允许运行nodejs特定的东西进入浏览器。

所有这些工具都有局限性,并非所有代码都可以在浏览器端执行。

当不可能时,您必须在nodejs中实现Web服务服务器(例如使用REST api,基于RPC模式的JSON,...)以允许执行代码并在浏览器中获取结果。

只要两者都是 JavaScript 并且具有具有全局范围的变量,就可以在bot.js中使用 Learner.js 中的变量Learner.jsbot.js之前加载

<script type="text/javascript" src="Learner.js"></script> 
<script type="text/javascript" src="bot.js"></script> 

还可以使用 window 或(在全局范围内)this属性来获得相同的效果。

当你使用node时,你必须确保你也在运行节点服务器,获取输出的最佳方法是通过使用一些API发送json对象,并在bot.js中获得json响应

最新更新