在vue、react、angular等大前端框架異軍突起的今天,寫前端時已經很難用得上普通模板引擎了。因為這些框架都自帶dom渲染的功能,甚至由於虛擬dom技術的存在,使得dom渲染的效率比普通模板引擎更高。
但是在某些場景,仍然有用模板引擎的需求,比如寫外掛程式之類的(我就是在寫外掛程式的時候想到這個問題的-_-)。如果直接拼接html**,會讓整體**的可讀性變低;但是我又不想用現成的模板引擎,感覺有點太重了,本來寫外掛程式就想要輕便效率。
於是,我就有了乙個處於直接拼接html**和使用模板引擎之間的乙個思路。(很可能我並不是第乙個想到的,在這裡只是**一下)
var template = function(temp, params, repeat)}/g,function(a,b)]/g,"")];
if(typeof value === "function")else
})}
return ret;
}
因為一般用模板來生成html**,最常用的功能就是遍歷和條件判斷,這個思路就是基於這一點出發的。
引數temp
是模板字串,例如'}:}
',因為我用vue比較多,所以這裡用的也是}
。
引數repeat
表示當前模板字串需要重複的次數,比如傳10的話,就會生成10個div
。
引數params
用來定義模板裡的變數,例如:
,
"num": function(index),
"prefix": "no"
}
變數名稱一定要一一對應。
引數裡可以定義常量,比如"prefix": "no"
,表示模板中的prefix
變數會被替換為字串no
;
還可以定義成乙個function
,這個function
接收當前遍歷的index
作為引數:
"num": function(index)
返回值則會被替換到對應的模板變數中,比如這個num
就會被替換成1到10。
在function
裡也可以再放入乙個template
,比如:
var temp = '';
var lists = '}';
var t = template(temp,
}, 10);
}});
一種靈活的商品屬性集實現思路
在一些商務系統中會對商品的屬性進行管理,方法有很多,可參考文章商品sku分析和設計。在這裡,我分享一種更靈活的實現思路。商品屬性設計為公用,屬性由屬性集管理,屬性集也是公用的,如下 1.先定義屬性 attribute 這個表只是定義屬性的名稱。2.定義屬性具體的值 attribute value 其...
優化JS載入時間過長的一種思路
去年公司在漳州的乙個專案中,現場工程人員反映地圖部分出圖有點緩慢,大約需要20多秒。和另外乙個同事一起花了一兩天進行了 優化 壓縮 中介軟體優化以及服務部署優化後使地圖出圖縮短到了9秒上下。這裡對上次的經驗做乙個總結,提供一種優化js檔案載入時間過長的思路。這裡的中介軟體使用的是tomcat6.0。...
一種計算留存的思路
在一些統計系統中,為了觀察使用者的粘度,我們會計算一系列的叫做留存的指標 次日註冊留存 2日註冊留存.n日註冊留存,比如昨天註冊了1000名使用者中,在今天有300名使用者又登入了,那麼對應於昨天的註冊留存就是30 如果再去細究,還可以去計算活躍使用者的留存情況,比如昨天登入的1000名使用者中,在...