node.js - 将数据从 Express 传递到 HTML (Pug) 以显示 Chart.js
问题描述
我是 Web 开发的新手,所以对我来说一切都是新的,尤其是异步代码与我之前学习的 C 语言完全不同。
我一直在尝试将值从 Express 传递到 HTML 以显示图表,但不幸的是,经过 2 天的尝试,我仍然无法正确执行它。
让我们直接看代码:-
index.js
app.get('/', function (req, res) {
res.render('index', { var1: 'apple' });
})
指数.pug
//Codes simplified
const chartData = {
labels: labels,
datasets: [{
//label: 'My First dataset', <--Default value which works
label: var1, <----I have tried {{var1}}, <<%= var1 >> none works
data: [0, 10, 5, 2, 20, 30, 45],
}]
};
我可以轻松地将值从 Express 传递到 HTML(Pug)。但是任何东西都属于 Chart 的脚本,它就是行不通的。一旦我切换到默认值,它就可以工作,因此脚本实际上没问题,但我的值传递方法..经过数小时的谷歌搜索后,我仍然不知道是什么问题。
如果您需要更多信息,我也可以提供。谢谢!
找到了答案
它应该是'!{var1}' for Pug!
解决方案
{{var1}}, <<%= var1 >> 分别是 Handlebars 和 EJS 的语法。
对于帕格,它将是#{var1}。
下面的示例代码片段
阅读 HTML/模板文件并将标识符替换为图表数据。
下面的哈巴狗文件。
doctype html
html
head
title my chart application
meta(charset='utf-8')
| **
script(src='https://cdn.jsdelivr.net/npm/chart.js')
| **
style.
body
canvas#test
script.
var data = {
labels: ["Mon", "Tue", "Wed", "Thu", "Fri"],
datasets: [
{
label: "My data",
fillColor: "rgba(189,156,221,0.2)",
strokeColor: "rgba(189,156,221,1)",
pointColor: "rgba(189,156,221,1)",
pointStrokeColor: "#111",
pointHighlightFill: "#000",
pointHighlightStroke: "rgba(189,156,221,1)",
data: #{myChartInfo}
}
]
};
var ctx = document.getElementById("test").getContext("2d");
var myChart = new Chart(ctx).Line(data);
节点
var http = require('http');
var fs = require('fs');
http.createServer(function (req, res) {
fs.readFile('index.pug', 'utf-8', function (err, data) {
res.writeHead(200, { 'Content-Type': 'text/html' });
const chartData = 'some data';
const result = data.toString('utf8').replace('#{myChartInfo}', JSON.stringify(chartData));
res.write(result);
res.end();
});
}).listen(3000);
HTML/模板引擎中的#{myChartInfo}被替换为服务器端的数据。
推荐阅读
- java - 添加减去分钟谷歌日历api
- python - 为什么在 Zapier 中使用此代码时会出现 Runtime.MarshalError?
- button - 溢出的 RenderFlex 颤动
- java - 禁用字段上的 Tapestry 验证
- javascript - Nothing was returned from render when using prototype
- python - 使用结构化数组在 numpy 数组中命名轴
- ajax - Woocommerce 结帐页面 - Ajax 刷新运费
- python - 线程阻塞了控制台
- matlab - 在左侧对齐子图 ylabel
- iis - IIS:可导出 SSL 证书请求和私钥