2016-09-20 64 views
0

我使用node.js,express.jspug/jade在node.js中填充具有变量值的JavaScript文件

在我的服务器中,我使用变量pageId填充视图。

我在pug视图使用这个变量与

script. 
    document.addEventListener('DOMContentLoaded', function() { 
    var pageId = '#{pageId}'; 

    (...) 

的问题是,我想这个脚本代码位于一个单独的文件,而不是我的观点。

所以我想包括脚本

script(src='js/my_script.js') 

但当时我没能获得在脚本变量的值。

这是如何正常完成的?将变量从服务器发送到客户端视图中的脚本代码似乎是错误的。

我想这与我使用pug.js无关,因为即使在纯html中也必须出现相同的问题。

+0

'',或ajax。你可以让你的服务器端代码解析所有的.js文件,但是不。 pageId是否在url中? –

+0

哟应该看看像webpack或npm模块“配置”的东西。看到这个问题以及http://stackoverflow.com/questions/30030031/passing-environment-dependent-variables-in-webpack – NicolasMoise

+0

它实际上不仅仅是'pageId'。这也是我用json格式绘制'd3.js'图形的大量数据。因此,在一页上,我以json格式获得一些数据,而在另一页上,我获得了一些json格式的其他数据。所以不可能直接在'.js'文件中对数据进行硬编码。 – Jamgreen

回答

1

您可以定义一个全局函数,它接收客户端JS文件中的数据,然后从服务器呈现页面上的内联脚本调用该函数。

例如,在script.js

function logPageId(id) { 
    console.log(id); 
} 

然后在你的服务器呈现的页面:

<html> 
    <body> 
    <script src="script.js"></script> 
    <script> 
     logPageId('somePageId') 
    </script> 
    </body> 
</html> 

您将能够做同样的一个JSON字符串作为输入。