2016-09-20 65 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字符串作爲輸入。