Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node/express将路由变量传递给javascript_Javascript_Node.js_Express - Fatal编程技术网

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;