javascript - 如何将nodejs后端连接到前端?
问题描述
我有问题。我用 nodeJs 创建了一个简单的 CRUD 应用程序。该应用程序使用 mysql 数据库,并且可以执行创建、插入、删除和读取操作。例如读取操作:
app.get('/run',(req,res) => {
conn.query('SELECT * FROM run', (err,rows,fields) =>{
if(!err)
res.send(rows)
else
console.log(err)
})
})
如您所见,我使用了快递。我是第一次使用nodeJs,所以我很不熟练。我希望当应用程序在“/homepage”路由中加入时,会呈现 homepage.html。我已经成功地做到了。但是,当我呈现 HTML 页面时,例如,我希望在单击事件到提交按钮进入页面时,会打开一个警报。然后我想将用户重定向到另一个 HTML 页面(所以我想将用户从主页重定向到我定义的另一个路由)。
app.get('/prova', function (req, res) {
res.sendFile(path.join(__dirname, "homepage.html"));
});
老实说,返回的 HTML 页面是“静态的”,它似乎没有看到我在 HTML 文件中定义的点击事件。换句话说,我不明白如何将 Node JS 后端连接到 JavaScript 前端。这是我第一次使用这种语言,很多概念我都不清楚。你能帮我吗?太感谢了!
解决方案
您可以使用 ejs、pug、jade、handlebars 等模板引擎使您的网页动态化。为此,您需要在主 app.js(或 server.js)文件中指定要使用的模板引擎,如下所示:
// setting template engine
app.set('view engine', 'pug'); // in this case pug
app.set('views', path.join(__dirname, 'views')); // this is the folder where you keep html for rendering
// static folder
app.use(express.static(path.join(__dirname, 'public'))); // this folder will be available for client side, for e.g. css, js, images are stored
接着
app.get('/prova', function (req, res) {
res.sendFile(path.join(__dirname, "homepage.html"));
});
改成
app.get('/prova', function (req, res) {
res.send(data).render('main_page');
});
main_page 类似于 html 文件(在我的情况下为 main_page.pug),它将动态呈现数据。要在客户端使用数据,请查看 docs pug-documentation
推荐阅读
- android - setOnClickListener 未按预期工作
- java - Android 从 DateTime 中删除偏移量/时区
- bash - Bash - 正确清除最后一个输出
- reactjs - 在 Reactjs 中为电子邮件编写验证
- sql - 获取一列的最小值但选择多列
- amazon-cognito - 如何使用 Amplify 在没有旧密码的情况下更新 Cognito 用户池中的用户密码?
- flutter - 重命名我的 Android Studio Flutter 应用程序的包名称后重复的 R.class
- winforms - Powershell ISE 表单:如何使用功能停止 Robocopy?
- c# - 使用 Tesseract 检测特殊的 Unicode 字符
- java - 16-char 和 32-char md5 的碰撞可能性