2012-03-27 48 views
3

dust.js是一個異步JavaScript模板引擎 - 您將回調傳遞給「render」函數。可以在CouchDB「show」函數中使用dust.js模板嗎?

另一方面,CouchDB「show」函數實際上必須返回HTML。

所以我不能在我的show功能中使用dust.js!它只是不起作用。 我該如何解決這個同步/異步問題?

編輯: 我應該能夠通過使用(異步) 「發送」 功能來做到這一點:

function(doc,req){ 
    var dust = require('lib/dust'); 
    dust.renderSource('Hello, my name is {name}',{name:'Nick'},function(err,output){ 
     send(output); 
    }); 
} 

..但不工作,我得到這個:

{"error":"render_error","reason":"function raised error: (new TypeError(\"dust.compile is not a function\", \"\", 37)) \nstacktrace: (\"Hello, my name is {name}\")@:37\n(\"Hello, my name is {name}\",[object Object],(function (err, output) {send(output);}))@:33\n([object Object],[object Object])@:2\napply([object Object],[object Array])@:0\nrunShow(function (doc, req) {var dust = require(\"lib/dust\");dust.renderSource(\"Hello, my name is {name}\", {name:\"Nick\"}, function (err, output) {send(output);});},[object Object],[object Array])@/usr/share/couchdb/server/main.js:886\n(function (doc, req) {var dust = require(\"lib/dust\");dust.renderSource(\"Hello, my name is {name}\", {name:\"Nick\"}, function (err, output) {send(output);});},[object Object],[object Array])@/usr/share/couchdb/server/main.js:989\napply(null,[object Array])@:0\n(\"_design/ibs_policies\",[object Array],[object Array])@/usr/share/couchdb/server/main.js:1401\napply(null,[object Array])@:0\n()@/usr/share/couchdb/server/main.js:1443\[email protected]/usr/share/couchdb/server/main.js:1454\n"} 

看來,「dust.js」在作爲CommonJS模塊導入時不會暴露所有的功能? 這是爲什麼? 我該如何做這項工作?

回答

1

只是基於初步瞭解灰塵的來源,似乎期望如果沒有在瀏覽器中運行,就會發現一些nodejs特定的東西。特別是,它看起來像dust.compile只從代碼中導出,只有在定義了進程並且窗口沒有定義的情況下才會調用該代碼。在CouchDB的視圖引擎下運行時都不會定義。

相關問題