有了 each 的經驗後,要實現 if/else 這種指令就簡單了-------在 case '}' 處對 varcode 進行指令的判斷即可。
模板**:
目標**:
function func(data) else if (data.value == 2) else result.push(" ");
return result.join("");
}
分析:
>這裡我們直接對照**來看, 對於 if 和 else-if ,花括號 {} 內的內容,除了作為 指令識別字元 的 if/else-if 空格分隔後的第二個都是按照原樣當作 js **來處理的。而不管是 if還是 else if 我們會發現 我們寫js**時,一般都會用 {} 將方法體抱起來(單行一般不需要包也可以,但是這裡統一使用 {} 來包住方法體),而 if () 之後接的 就是 包回來,同時 else 說明了 另乙個情況的開始,所以後面需要 加上 即可。
實現**:
function template2code(template)
else
break;
case "\"":
if (isvarcode)
else
break;
case "":
isvarcode = false;
var varvalue = varcode.join("");
if (varvalue.indexof("each") == 0)
else if (varvalue === "/each") ");
}else if (varvalue.indexof("if") == 0)
else if (varvalue.indexof("else-if") == 0) else if(" + ifinfo[1] + ")
else if (varvalue.indexof("else") == 0) else
else if (varvalue.indexof("/if") == 0) ");
}else
varcode = ;
break;
default:
if (isvarcode)
else }}
resultcode.push(" result.push(\"" + tempcode.join("") + "\") ;");
resultcode.push("return result.join(\"\");}")
return resultcode.join("");
}
傳入資料:
var data =
渲染結果:
在 each 的基礎上 處理 if 是簡單很多了,這裡也一篇就處理完了。
目錄:js模板引擎漸進--前言
js模板引擎漸進--區別js**和html字串(1)
js模板引擎漸進--生成最簡單的function(2)
js模板引擎漸進--區別js**和html字串2(3)
js模板引擎漸進--改進字串拼接方式(4)
js模板引擎漸進--each/for(5)
js模板引擎漸進--each改進(6)
js模板引擎漸進--if/else(7)
js模板引擎漸進--處理需要輸出 的情況(8)
js模板引擎漸進--**改進封裝(9)
js模板引擎漸進--後記
使用js模板引擎心得
最近幾年隨著web開發前後端分工越來越細,同時mvc mvp模式大行其道,js模板引擎也越來越流行了 js模板引擎很多,我經常用的是arttemplate jsviews這兩個模板引擎,12306用的就是jsviews arttemplate 特性 效能卓越,執行速度通常是 mustache 與 t...
騰訊js模板引擎 artTemplate 學習
使用方式 1.引入js檔案 2.建立模板 id test type text html 1 1 l i 索引 i l script 3.3.渲染資料至指定區域 var data var html template test data document.getelementbyid content i...
js模板引擎artTemplate快速上手
1,編寫模板 採用script標籤並帶有屬性id和type text html 2,渲染模板 var data var html template test data document.getelementbyid content innerhtml html 模板語法 有兩個版本的模板語法可以選擇...