如何从客户端javascript调用节点函数? (HTML)

Posted

技术标签:

【中文标题】如何从客户端javascript调用节点函数? (HTML)【英文标题】:How to call a node function from client-side javascript? (HTML) 【发布时间】:2017-08-30 22:53:44 【问题描述】:

我有一个名为 index.js 的节点应用程序,它运行 express。不久前,我决定将网站模板和我的节点应用程序合并在一起,到目前为止一切正常。我可以使用以下代码将其他路径加载到节点应用程序 (index.js) 中。

var express = require('express');
var app = express();
app.use('/assets', express.static(path.join(__dirname, '/assets')));
app.use(express.static(path.join(__dirname, '/')));

现在,我可以使用 express 提供不同的 html 页面,这意味着我的应用可以访问 assets 文件夹和文件夹内的内容。

现在,assets 文件夹包含其他名为 js、css 和...的文件夹 HTML 模板正在从 assetsjs 文件夹中加载所有的 javascript 代码。请注意,javascript 代码未写入 HTML 文件中。下面是如何在我的 HTML 代码中触发脚本的示例:

<script src="../../assets/js/test.js"></script>
<script type="text/javascript">
        $(document).ready(function()
            test.theFunction();
        );
    </script>

这是以下目录中的 javascript 代码:

// assets/js/test.js
test = 
  theFunction: function() 
    res.send("finally...");
    console.log("sup?");
  

我正在尝试从test.js 调用index.js 内的以下函数:

// /index.js
app.get("/hey", function(req, res) 
  res.send("wassaaa!!");
);

到目前为止,我已经尝试了以下代码,但它没有调用该函数:

  $.get('/hey').success(function(response) 
    $scope.final = response;
    console.log(response);
  );

我也在index.js 中尝试过module.exports,但是当我在test.js 中需要它时,我收到一条错误消息,说我不能在客户端需要东西。

我也看过一些关于 require.js 的示例,但这些示例主要解释了如何在 HTML 文件中而不是直接在 js 文件中加载 require.js。

总结一下,这就是我想要发生的事情:HTML文件触发test.js中的函数,然后test.jsindex.js获取一些数据并再次将其传递给HTML文件......我正在尝试避免在 HTML 文件中编写 javascript 代码。

如果有人知道如何以更简单的方式实现我想要做的事情,我也愿意接受建议。提前谢谢...

【问题讨论】:

【参考方案1】:

您需要使用 URL 来实现。这是您的开发环境的示例,假设您的应用正在侦听端口 8800:

$.get('http://localhost:8800/hey').success(function(response) 
  $scope.final = response;
  console.log(response);
);

【讨论】:

【参考方案2】:

您应该在test.js 中编写函数并将其导入index.js。例如,返回“wassaaa!!”的函数getResponse()在 test.js 和 index.js 中使用 res.send(test.getResponse())

【讨论】:

你能再解释一下吗?我不确定您将 test.js 中的函数导入 index.js 是什么意思?我确实提到了 module.exports 和 require 不起作用,因为在浏览器(客户端)中加载它时出现错误。可以举个例子吗? 假设你编译 ES6,你可以使用export default something ,在 index.js 中你可以使用import something from 'test.js'

以上是关于如何从客户端javascript调用节点函数? (HTML)的主要内容,如果未能解决你的问题,请参考以下文章

如何通过 JavaScript 从服务器端的网页调用客户端 C# 程序函数?

如何从node js文件中调用一个vanilla JavaScript函数?

我可以从远程节点调用 GenServer 客户端函数吗?

将变量从VB函数传递到客户端javascript

加载特定 UpdatePanel 后如何调用客户端 javascript 函数

是否可以使用 Emscripten 从 JavaScript 调用 C++ 函数?