摘要:由于某些原因,我們產品需要改為在后端渲染,再發送到前端,但早已經適應的我根本不能忍受后端各種弱爆了的模板。本身的語法可謂相當靈活,還有強大的擴展功能,他可以渲染等任何格式的文本文件,還支持模塊化,條件判斷,流輸出等其它特性。
Dust一個適用于瀏覽器與node的異步模板框架。
先上實例后端模板:
</>復制代碼
{@inject api="http://api.myserver.com/get_message"}
留言: {count}條
{#messages}
{.}
{/messages}
{/inject}
http://api.myserver.com/get_message 返回結果:
</>復制代碼
{
count: 3,
messages: ["我勒個去", "好強大啊", "受不了了"]
}
渲染結果:
</>復制代碼
留言: 3條
我勒個去
好強大啊
受不了了
Dust的特性
所有用過Angularjs的同學,一定不會忘記它強大的模板、數據綁定等功能,而這些在后端往往都是可盼而不可求的。由于某些原因,我們產品需要改為在后端渲染html,再發送到前端,但早已經適應Angularjs的我根本不能忍受后端各種弱爆了的模板。類似如jade這些都只能等你把數據全部準備好之后才能工作,如果遇到復雜點的pjax頁面當時就傻逼了。而我需要的是類似Angularjs的那種,只用把依賴關系和數據位置都寫清,然后從數據請求到發送到客戶端折=這一些列流程它自己跑起來的那種模板。
就在前幾天,我突然腦洞大開的在google上搜索了“async node template”,居然搜索到了Dust這貨。 其主頁第一句介紹的話就是:
</>復制代碼
Asynchronous templates for the browser and node.js
而且這個項目又是有 LinkedIn 在背后做支持,當時感覺就是碉堡了。他的項目主頁在 http://linkedin.github.io/dustjs/
那么現在回到最上面的模板代碼,這段代碼的作用是 請求遠程服務器的get_message鏈接,再將服務器返回的數據注入到模板中。如果你采用類似淘寶那種架構的話(node只負責渲染頁面),那么這個就很好用,開發者就不用再管理鏈接請求啊,維持依賴啊等等這些瑣碎的事了。
Dust本身的語法可謂相當靈活,還有強大的擴展功能,他可以渲染html、xml等任何格式的文本文件,還支持模塊化、partial,條件判斷,流輸出等其它特性。
源碼上面例子中的@inject就是我自己寫的dust擴展。源碼如下:
</>復制代碼
function requestAPI(url,cb){
//請求url,并將結果返回,cb 的格式為 function(err,result)
};
dust.helpers.inject = function(chunk, context, bodies, params) {
var api=params.api;
if(api){
return chunk.map(function(chunk){
requestAPI(api,function(err,result){
if(err&&bodies["else"]){
chunk.render(bodies["else"],context.push({error:err}));
}else if(bodies.block){
chunk.render(bodies.block,context.push(result));
}
chunk.end();
});
})
}else{
return chunk.render(bodies.block,context);
}
}
剛才的模板還可以加入else模塊,用來捕捉錯誤:
</>復制代碼
{@inject api="http://api.myserver.com/get_message"}
留言: {count}條
{#messages}
{.}
{/messages}
{:else}
You got an Error: {error}
{/inject}
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/49529.html
摘要:使用粒子發射器方法會產生一次粒子爆發,但通常你必須產生連續的粒子流。發射器具有和方法,可讓打開和關閉粒子流,并可以定義粒子的創建間隔。 你如何創造火,煙,魔法和爆炸等效果?你制作了許多小精靈,幾十,幾百,甚至上千個精靈。然后對這些精靈應用一些物理效果,使它們的行為類似于你嘗試模擬的元素。你還必須給他們一些關于它們應該如何出現和消失以及應該形成什么樣的模式的規則。這些微小的精靈被稱為粒子...
摘要:大家都知道是另一家遷移到平臺的大型公司,的這篇博文解釋了為什么從遷移出來的原因開發效率提高一倍個人用更少的時間干了個人的活,性能提高一倍,代碼量減少文件減少。性能性能是一個非常有意思和具有爭議性的話題。對于來說這是一個另人激動的時刻。 大家都知道 PayPal 是另一家遷移到 Node.js 平臺的大型公司,Jeff Harrell 的這篇博文 Node.js at PayPal 解釋...
摘要:需要注意的一點是,面板下的功能,是對于細節中的細節進行的優化。我們可以很清晰明了得分析按照活動,目錄,域,子域,和進行分組的前端性能。個人理解的話,前者類似事件冒泡,后者類似事件捕獲。同學在點我達,他們正在籌劃改組成大前端團隊。 對Chrome控制臺有一定的了解的朋友都在知道,Network面板會包括很多網絡請求方面的東西,包括Http相關的Request信息,Response信息...
詳見Githubhttps://github.com/lichking24... Thanos Dust Effect Effects Demo As Thanos making a snap with the Infinite Gauntlet, half the heros vanish to dust. As using the time stone, people come back. D...
詳見Githubhttps://github.com/lichking24... Thanos Dust Effect Effects Demo As Thanos making a snap with the Infinite Gauntlet, half the heros vanish to dust. As using the time stone, people come back. D...
閱讀 3845·2021-09-06 15:00
閱讀 2178·2019-08-30 15:53
閱讀 3285·2019-08-23 16:44
閱讀 950·2019-08-23 15:19
閱讀 1397·2019-08-23 12:27
閱讀 4196·2019-08-23 11:30
閱讀 590·2019-08-23 10:33
閱讀 374·2019-08-22 16:05