Javascript 如何从不同的JS文件访问EJS文件中的变量
我正在构建一个简单的web应用程序,它接受3种不同类型的输入,并从视图目录(使用Node和Express)呈现3个不同EJS文件中的一个。每个呈现的EJS文件都需要静态数组的内容。静态数组很大,我想将其存储在一个单独的JS文件中。我尝试将此代码放入EJS文件中: app.jsJavascript 如何从不同的JS文件访问EJS文件中的变量,javascript,node.js,express,Javascript,Node.js,Express,我正在构建一个简单的web应用程序,它接受3种不同类型的输入,并从视图目录(使用Node和Express)呈现3个不同EJS文件中的一个。每个呈现的EJS文件都需要静态数组的内容。静态数组很大,我想将其存储在一个单独的JS文件中。我尝试将此代码放入EJS文件中: app.js var arrayFile = require('./arrayFile.js'); app.get("/", async function(req, res){ let blockVariable = awai
var arrayFile = require('./arrayFile.js');
app.get("/", async function(req, res){
let blockVariable = await request({
method: "get",
uri: "https://testardor.jelurida.com/nxt?requestType=getBlocks",
json: true
});
var blocks2 = []
blockVariable.blocks.forEach(function(element){
if (element.transactions.length != 0){
blocks2.push(element);
}
});
res.render("home", {blocks: blockVariable.blocks,
blocks2: blocks2,
arrayFile: arrayFile
});
});
home.ejs
<%= arrayFile %>
这将在home.ejs页面上显示结果[object]
我试着回家
<%= JSON.stringify(arrayFile) %>
对于结果{}我认为你在混合上下文<代码>将在浏览器端工作。而
在服务器端工作。所以它应该是这样的,只是给你一个想法:
// assuming that your array is exported as default
var array = require('./arrayFile.js');
app.get('/page', (req, res) => {
// make array available to EJS context
res.render('page_ejs', {array});
});
但这可能会生成一个带有印记数组的大型HTML
。这可能不是您想要的,因为这样您就不需要在EJS中使用
如果要将文件发送到浏览器、您的HTML
和arrayFile.js
,则必须在arrayFile.js
中正确导出数组,以便编写如下内容:
// this will be fetched by browser
<script src="arrayFile.js"></script>
// and then executed by browser
<script>
console.log(yourArray);
</script>
//这将由浏览器获取
//然后由浏览器执行
log(数组);
那么您就不需要在EJS中使用
当然,您可以混合使用这两种方法,使数组既可供EJB使用,也可供浏览器使用。您需要显示
arrayFile.js
的内容,可能会忽略数组内容,留下一些对象供演示。还有您的模板和快捷路线。
// this will be fetched by browser
<script src="arrayFile.js"></script>
// and then executed by browser
<script>
console.log(yourArray);
</script>