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

在常规JavaScript文件中导入NodeJS文件,javascript,node.js,Javascript,Node.js,我有3个文件,一个index.html,一个Learner.js,一个bot.js。现在,bot.js是一个常规的js文件,我用标记加载到html文件中,Learner.js是一个NodeJS文件。我拥有这个文件的唯一原因是我想使用一个神经网络库,但它只适用于NodeJS,而不是普通的javascript,那么我应该如何准确地引用bot.js中存在于Learner.js中的任何函数、变量等呢,或者最好的方法是什么?只要两者都是JavaScript并且都有全局范围的变量,那么Learner.js中

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

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

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

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

但是
当您使用node时,您必须确保您也在运行node服务器,获得输出的最佳方法是使用一些
API
发送json对象,并在
bot.js

中获得
json
响应,只要两者都是JavaScript并且具有全局范围的变量,
Learner.js
中的变量可在
bot.js
中使用,即
Learner.js
bot.js
之前加载

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

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

但是 当您使用node时,您必须确保您也在运行node服务器,获得输出的最佳方法是使用一些
API
发送json对象,并在
bot.js

中获得
json
响应。您可以简单地添加它:

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

但是,如果您的
Learner.js
javascript文件使用一些本机
node.js
引擎函数,或者只是
require()
调用,那么它将无法工作

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

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

如果不可能,您必须在nodejs中实现web服务服务器(例如使用REST api、JSON over RPC模式等),以允许执行代码并在浏览器中获得结果。

您可以简单地添加它:

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

但是,如果您的
Learner.js
javascript文件使用一些本机
node.js
引擎函数,或者只是
require()
调用,那么它将无法工作

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

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

如果不可能,您必须在nodejs中实现web服务服务器(例如使用REST api、JSON over RPC模式等),以允许执行代码并在浏览器中获得结果。

答案是它(可能)很复杂

node.js可以做浏览器JavaScript无法做的事情(比如访问文件系统),也可以做浏览器不能做的事情(比如缓冲区API、模块系统)。显然,图书馆可以将后者带到浏览器中,但对于前者,你就不走运了

所以问题是,这个库使用什么节点特定的东西?如果只是
需要
使用webpack/browserify或babel/rollup插件。但是你必须仔细检查这个库,看看它实际使用了什么,以及它是否会出现在浏览器中。

答案是它(可能)很复杂

node.js可以做浏览器JavaScript无法做的事情(比如访问文件系统),也可以做浏览器不能做的事情(比如缓冲区API、模块系统)。显然,图书馆可以将后者带到浏览器中,但对于前者,你就不走运了


所以问题是,这个库使用什么节点特定的东西?如果只是
需要
使用webpack/browserify或babel/rollup插件。但是您必须仔细检查该库,看看它实际使用的是什么,以及它是否会出现在浏览器中。

您不能在
index.html
中调用服务器端(nodejs)函数,除非使用类似于不能调用服务器端(nodejs)的东西
index.html中的函数
除非使用类似的方法,否则当我执行
require('Insert Library Here')时,浏览器将失败。
请按@Dario所说的那样尝试。@vishwayer可能会,也可能不会。请看我的答案。除非当我执行
require('Insert Library Here')
时,浏览器会失败。@Dario说的那样试试。@vishwayer可能会,可能不会。看我的答案,当然。只需为一些常见模块添加一些垫片。当然,并非所有节点都可以在浏览器中执行(i/o、网络等)。只需为一些常见模块添加一些垫片。并非所有节点都可以在浏览器中执行(i/o、网络等)。库是否会这样:除了<代码>需要<代码>之外还有其他问题?@VishwaIyer在自述文件的开头说,它用于“节点和浏览器”所以我猜webpack/babel/browserify转换
require
调用就足够了。这样的库:除了
require
,还有其他问题吗?@Vishwayer在自述文件的开头说它是“节点和浏览器”的所以我想webpack/babel/browserify转换
require
调用就足够了。