2017-07-18 77 views
1

一個JavaScript模塊要在帕格模板隨機字符串我想用random-string的JavaScript模塊。如何使用哈巴狗JS模板

首先,我通過NPM安裝這樣的:

npm install random-string 

然後在帕格模板我用這個:

.site 
    .title 
     - var string = randomString({length: 20}); 
     | #{string} 

但是在編譯的文件,我得到這個錯誤:

randomString is not a function 

如何在pug js temaplte中使用第三方javascript函數?

+0

當然可以,但你需要把它作爲'pug'呈現參數,因爲你不能在''pug' require'。只需在外部環境中「需要」並通過它。 – MarcoL

回答

0

更新phpStorm文件看守

首先,安裝哈巴狗CLI和隨機字符串本地,

npm install pug-cli random-string --save 

然後安裝文件看守,

enter image description here

原來的答覆

設置並要求隨機字符串作爲局部變量,那麼你可以在模板中訪問它。例如,

template.pug

.site 
    .title 
     - var string = randomString({length: 20}); 
     | #{string} 

用哈巴狗

const pug = require('pug'); 

// Compile template.pug, and render a set of data 
console.log(pug.renderFile('template.pug', { 
    randomString: require('random-string') 
})); 
//-> <div class="site"><div class="title">o0rGsvgEEOHrxj7niivt</div></div> 

如果您使用的哈巴狗CLI編譯它,在哈巴狗CLI的同一範圍內安裝隨機字符串,通過字符串或文件指定選項。除非它是當你調用文件render()正在調用它在傳遞(如控制器)

pug -O "{randomString: require('random-string')}" template.pug 
+0

我正在使用phpStorm監視器來編譯整個項目中的所有.pug文件。我可以在哪裏配置你的指令? –

+0

@ A.B。開發人員您是否在使用pug-cli以及phpStorm文件監視器?您可以將'-O'{randomString:require(「random-string」)}''傳遞給觀察者設置中的參數 –

+0

我向參數添加了「-O」{randomString:require(「random-string」)}現在我在編譯時出現這個錯誤:'undefined:1 ('{randomString :) ^^^^^^^^^^^^^^^^ SyntaxError:無效或意外的標記' –

0

你的哈巴狗文件不會有randomString的範圍。

例如

this.render("[pugFilename]", { 
    randomString = require("randomstring") // whatever package name you're using 
} 

就個人而言,我喜歡做的視野之外,並請求該視圖中查看腳本任何非視的東西呈現,在那裏我可以。

在帕格的語法可以開始看起來非常凌亂,否則,變得難以遵循。

您可以切換出上面的代碼在你的問題的代碼,它應該正常工作,但我建議你改變你的變量名(或鍵)更有意義。

e.g

this.render("[pugFilename]", { 
    randomStr: randomString({ length: 20 }) 
});