Node/express将路由变量传递给javascript
我正在尝试传递我传递给路线的对象,例如:Node/express将路由变量传递给javascript,javascript,node.js,express,Javascript,Node.js,Express,我正在尝试传递我传递给路线的对象,例如: res.render('index', {myObj: myObj}); 但是,如果我想在索引页中运行JS脚本,如何在脚本中访问此对象,我查找了它,发现我可以使用ejs将其放入脚本中,例如: var obj = "<%= myObj %>" var obj=“” 但是我不能将脚本放在单独的文件中,因为它依赖于ejs 什么是将此参数传递给我的JS的正确方法,以便我也可以将脚本放在单独的脚本文件中 谢谢正如我在评论中所说的,我总是在HTML
res.render('index', {myObj: myObj});
但是,如果我想在索引页中运行JS脚本,如何在脚本中访问此对象,我查找了它,发现我可以使用ejs将其放入脚本中,例如:
var obj = "<%= myObj %>"
var obj=“”
但是我不能将脚本放在单独的文件中,因为它依赖于ejs
什么是将此参数传递给我的JS的正确方法,以便我也可以将脚本放在单独的脚本文件中
谢谢正如我在评论中所说的,我总是在HTML文档的顶部定义要传递给客户端JS的值,如下所示,然后在定义后加载使用这些变量的脚本:
/**Express中的常量**/
设myObj=;
//如果myObj
是一个对象,假定它是,请使用JSON.stringify()
var myObj=;
我曾经使用require.js
做过类似的事情require.js
将加载包含要运行的脚本的.js文件,并将myObj
传递到其中
server.js
index.ejs
所以,我一直在做的是,在文档顶部定义常量,然后在从其他文件加载的脚本中使用常量,我不知道这是否是最好的方法。您如何定义和使用它们??例如,我正在传递给html的myObj tha如何在html中将其定义为常量以使用它???谢谢,我不知道为什么,但这对某些字符串有效,但对myObj无效,当我声明让myObj=;它停止了我的脚本。你现在能试试这个吗?在let myObj=;必须有一个-而不是a=(让myObj=;)才能像Lawrence的答案那样工作,然后它就可以像你有它一样工作,用于编码到外部文件,不知道为什么没有JSON它就不能工作。stringify没有它对你有用吗。无论如何,谢谢你的帮助!您好,谢谢您的回答,如果脚本在html文件中,这是有效的,但是如果我的脚本在自己的文件中,我如何访问myObj???感谢allot的回答,我没有让它工作,但我认为我在重试时犯了一个错误,我发现Luca的答案更容易一些,这样做有优势吗???谢天谢地,明智的卢卡的答案不那么复杂,你是对的。但是它使用全局变量,这有时会造成麻烦。@Jack我刚才看到我在调用requirejs.config({…})时也使用了baseUrl
选项代码>。定义此选项很重要,因为在我的示例中,config
选项只使用文件名而不是相对路径。我用baseUrl
更新了我的答案。你好,大卫,非常感谢你的回复,我正在学习分配。我从来没有做过这么复杂的事情,你肯定有一个非常独特的方法。
<script>
var myObj = <%- JSON.stringify(myObj) %>;
</script>
res.render('index', {myObj: myObj});
// index.js is your separate .js file which is declared as entry point
<script data-main="index.js" src="<PATH_TO_REQUIRE_JS>"></script>
<script>
requirejs.config({
config: {
// By default load any modules from this folder
baseUrl: './js',
// index must be used as name here in order to pass myObj into ./js/index.js
"index": {
"myObj": "<%= myObj %>"
}
}
});
</script>
var myObj = module.config().myObj;