javascript - 如何在 NodeJS 中运行函数并向客户端发送响应?
问题描述
我正在尝试为我正在做的 HTML 项目加密一些文本,而我正在使用的加密代码需要 node.js 服务器,但我似乎无法在我的原始 HTML 代码中运行该函数。我是 JavaScript 新手,并不太了解它。
这是我想用按钮调用函数的 HTML 代码:
(按钮中的东西只是网上的一些随机东西,我认为不相关)
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>test</title>
</head>
<body>
<a href="/Files/TEST.ptf" download="meme14">
TEST.ptf
</a>
<button onclick="
var url = require('url');
var adr = 'http://localhost:3000';
var q = url.parse(adr, true);
console.log(q.host);"
>Encrypt</button>
</body>
</html>
这是 Node.JS 服务器的代码,我想调用 encrypt 函数。
// server.js
var express = require('express');
var app = express();
var PORT = 3000;
app.get('/', function(req, res) {
res.status(200).send('Hello world');
});
function encrypt() {
var SimpleCrypto = require("simple-crypto-js").default;
var _secretKey = "-VH5s*@yoj0JDiXQdLyKHwYvttDeoxcarpgaBm9uLZH%Vy0Xw_n0DZ3|BgE7pn%1*APiRV1L*7OlRLIuL&yqIqKw@QLPJc+r+N^dH-Wb3@Zx2TKkvtbobzFW6?Fr$^XObG4K$m$clU3m+1BVx@3O_v6sikvNWwxhVV*q4vrvr7|8qT4*JK3g!*SF-ffDE=?lU$4HuVpiYHTAmW@DNDWeJH*#orX_GY@@|=8ip8rskE0TPl-4OC+KCa2re+ND3pwp";
var simpleCrypto1 = new SimpleCrypto(_secretKey);
var plainText = "Hello World!";
var cipherText = simpleCrypto1.encrypt(plainText);
console.log("Encryption process...");
console.log("Plain Text : " + plainText);
console.log("Cipher Text : " + cipherText);
}
var router = express.Router();
app.use('/*', router);
router.get('/call-java-app', function (req, res, next){
encrypt();
res.send(cipherText);
});
encrypt();
app.listen(PORT, function() {
console.log('Server is running on PORT:',PORT);
});
解决方案
在您的 NodeJS 代码中,您必须创建一个调用此函数并将响应发送给客户端的 Route;技术上。
我希望这段代码可以帮助你:
var express = require('express');
var app = express();
var PORT = 3000;
var SimpleCrypto = require("simple-crypto-js").default;
app.use(express.json());
app.use(express.urlencoded({
extended: false
}));
app.get('/', function (req, res) {
res.status(200).send('Hello world');
});
app.get('/encrypt', function (req, res) {
res.send(encrypt())
});
app.listen(PORT, function () {
console.log('Server is running on PORT:', PORT);
});
function encrypt() {
var _secretKey = "-VH5s*@yoj0JDiXQdLyKHwYvttDeoxcarpgaBm9uLZH%Vy0Xw_n0DZ3|BgE7pn%1*APiRV1L*7OlRLIuL&yqIqKw@QLPJc+r+N^dH-Wb3@Zx2TKkvtbobzFW6?Fr$^XObG4K$m$clU3m+1BVx@3O_v6sikvNWwxhVV*q4vrvr7|8qT4*JK3g!*SF-ffDE=?lU$4HuVpiYHTAmW@DNDWeJH*#orX_GY@@|=8ip8rskE0TPl-4OC+KCa2re+ND3pwp";
var simpleCrypto1 = new SimpleCrypto(_secretKey);
var plainText = "Hello World!";
var cipherText = simpleCrypto1.encrypt(plainText);
console.log("Encryption process...");
console.log("Plain Text : " + plainText);
console.log("Cipher Text : " + cipherText);
}
您必须使用 Ajax 向服务器发送请求并获取响应并显示给用户,发出 Ajax 请求可以帮助您。
推荐阅读
- android - Integrate Android Studio Project with Azure Pipelines CI/CD
- c# - 如何在 teechart 的任何事件上获取自定义轴
- c# - change mouse button function
- apache - Jmeter 和 Jenkins 集成以生成 Perfmon 图
- c# - 如何在 Blazor 的 DevExpress 数据网格中加载 null 或空集合?
- r - 在 R Markdown 中将一个长方程分成两行
- regex - PL/SQL 正则表达式匹配逗号不在引号内
- c# - 在 1 中组合 2 个或多个正则表达式
- google-maps - 无法获取 Google 地方信息大气数据
- mysql - SQL 内联多表一次查询