国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

利用模板將HTML從JavaScript中抽離

jsyzchen / 1998人閱讀

摘要:客戶端模板是一些帶插槽占位符的標(biāo)簽片段,這些占位符會被程序模板引擎替換為數(shù)據(jù),然后把該替換好的標(biāo)簽片段插入到頁面中。

一、當(dāng)需要注入大段的HTML標(biāo)簽到頁面中時,應(yīng)該使用服務(wù)器渲染(從服務(wù)器加載HTML標(biāo)簽)

該方法將模板放置于服務(wù)器中使用XMLHttpRequest對象來獲取外部標(biāo)簽(如多頁應(yīng)用)

function loadDialog(name, oncomplete) {
    var xhr = new XMLHttpRequest();
    xhr.open("get", "/js/dialog/"+name, true);
    xhr.onreadystatechange = function () {
        if(xhr.readyState == 4 && xhr.status == 200){
            var div = document.getElementById("dlg-holder");
            div.innerHTML = xhr.responseText;
            oncomplete();
        }else {
            //錯誤處理代碼
        }
    };
    xhr.send(null);
}
//使用YUI的API
function loadDialog(name, oncomplete) {
    Y.one("#dlg-holder").log("/js/dialog/"+name,oncomplete);
}
//使用JQuery的API
function loadDialog(name, oncomplete) {
    $("#dlg-holder").load("/js/dialog/"+name, oncomplete);
}
二、客戶端模板

對于少量的標(biāo)簽段,應(yīng)該考慮采用客戶端模板。
客戶端模板是一些帶‘插槽’(占位符)的標(biāo)簽片段,這些占位符會被JavaScript程序(模板引擎)替換為數(shù)據(jù),然后把該替換好的標(biāo)簽片段插入到頁面中。

JavaScript程序(模板引擎)

自定義模板文本處理程序

function sprintf(text){
    var i=1,args=arguments;
    return text.replace(/%s/g, function(){
        return (i
模板文本存放位置

1.存放于HTML注釋中

    ...

因為注釋也是一個DOM節(jié)點,因此可以通過JS將其提取出來:

//格式化并插入DOM的方法定義
function addItem(url,text){
   var mylist = document.getElementById("mylist");
   var templateText = mylist.firstChild.nodeValue; //提取模板文本
   var result = sprintf(templateText,url,text);
   div.innerHTML = result;
   mylist.insertAdjacentHTML("beforeend", result);
}
//調(diào)用方法
addItem("/item/4", "First item");
addItem("/item/4", "Second item");

2.存放于自定義type屬性的

function addItem(url,text){
   var mylist = document.getElementById("mylist");
   var script = document.getElementById("list-item");
   var templateText = script.text; //提取模板文本
   var result = sprintf(templateText,url,text);
   var div = document.createElement("div");
   div.innerHTML = result.replace(/^s*/,""); //去除模板文本的前導(dǎo)空格(因為它是在
funtion addItem(url,text){
    var  mylist = document.getElementById("mylist"),
           script = document.getElementById("list-item"),
           template = Handlebars.compile(script.text), //提取模板文本,返回格式化方法
           div = document.createElement("div"),
           result;

    result = template({text:text,url:url});
    div.innerHTML = result;
    mylist.appendChild(div.firstChild);
}
//調(diào)用
addItem("/item/4,"First item");

本文參考《編寫可維護的JavaScript》

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/80556.html

相關(guān)文章

  • 利用模板HTMLJavaScript抽離

    摘要:客戶端模板是一些帶插槽占位符的標(biāo)簽片段,這些占位符會被程序模板引擎替換為數(shù)據(jù),然后把該替換好的標(biāo)簽片段插入到頁面中。 一、當(dāng)需要注入大段的HTML標(biāo)簽到頁面中時,應(yīng)該使用服務(wù)器渲染(從服務(wù)器加載HTML標(biāo)簽) 該方法將模板放置于服務(wù)器中使用XMLHttpRequest對象來獲取外部標(biāo)簽(如多頁應(yīng)用) function loadDialog(name, oncomplete) { ...

    william 評論0 收藏0
  • UI 層的松耦合

    摘要:松耦合當(dāng)你能夠做到修改一個組件而不需要更改其他組件時,就做到了松耦合,松耦合對于代碼可維護性來說是至關(guān)重要的。應(yīng)該使用保持和的溝通。將從中抽離在和更早版本的瀏覽器中有一個特性,即表達式。如下不好的寫法已經(jīng)不再支持表達式了。 松耦合 當(dāng)你能夠做到修改一個組件而不需要更改其他組件時,就做到了松耦合,松耦合對于代碼可維護性來說是至關(guān)重要的。 原則 不要使用 css 表達式。(這種方式...

    keithxiaoy 評論0 收藏0
  • 《編寫可維護的 JavaScript》讀書筆記

    摘要:最近閱讀了編寫可維護的,在這里記錄一下讀書筆記。禁止使用,,,的字符串形式。避免使用級事件處理函數(shù)。讓事件處理程序成為接觸到對象的唯一函數(shù)。檢測函數(shù)是檢測檢測函數(shù)的最佳選擇。為特定瀏覽器的特性進行測試,并僅當(dāng)特性存在時即可應(yīng)用特性檢測。 最近閱讀了《編寫可維護的 JavaScript》,在這里記錄一下讀書筆記。書中主要基于三個方向來講解怎么增加代碼的可維護性:編程風(fēng)格、編程實踐、自動化...

    tuniutech 評論0 收藏0
  • 編程實踐

    摘要:將從中抽離不允許使用屬性比如來綁定一個事件處理程序。避免空比較檢測原始值如果你希望一個值是字符串?dāng)?shù)字布爾值或。當(dāng)再次發(fā)生錯誤時,這將有助于更容易地解決問題。 UI層的松耦合 將CSS從JavaScript中抽離 不允許在js中修改元素的樣式,最佳方法是控制className。 有例外:比如說定位等問題,可以修改而不使用className控制。 將JavaScript從H...

    tuniutech 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<