DIY乙個前端模板引擎 一

2021-09-07 07:59:08 字數 2277 閱讀 6249

下面是我定義好的html 模板字串。

var template = `

}span> div> `;

這是我的資料

var scope =

好了,現在怎麼把資料渲染到模板上面呢?

很自然的想到 正規表示式

第一步 ,可以使用字串的replace 函式。

這是正則

var regex = /\\}/g;

好了,現在編寫乙個函式,我把我的模板引擎就叫 ss。

var ss = (function() \}/g; var result = ""; var ss = {}; ss.render = function(template, scope) ) return result; } return ss; })()

測試一下

ss.render(template,scope);
這是結果

但是,僅僅渲染一級屬性的模板引擎有什麼用呢?

在這裡,渲染多級屬性還是分為兩種。

這裡,先解決變數屬性

首先,需要乙個新的正規表示式

var regex = /\\}/g;

正則寫的很爛,如果發現錯誤希望不吝賜教

html 模板

var template = `}

}li> }li> `

按照上面模板匹配的資料

var scope =

}

渲染函式

ss.render = function(template, scope)  return innerdata; }); return result; } 

在這裡考慮到元素的屬性,所以將} 中包含字元'.' 也匹配出來,再使用'.'分割,然後依次向下尋找

測試**

var res = ss.render(template, scope);

console.log(res);

這是結果:

貌似這個模板引擎已經具有雛形了

在這裡,要是正則能夠匹配上 ,而且裡面必須是數字

var regex = /\\}/g;

這個正則主要是匹配形如 items[0].name 型別.

變數名必須是字母下劃線或者$ 符號打頭,後面必須是 ,.[a-za-z_\$] 或者

[a-za-z0-9_$]

如果正則有錯,還忘各位不吝賜教.

形如,items[0].name.a.b 中,可以使用'.' 來分割字串,然後進行迭代找到最終資料.

在每一次迭代中,可以使用 /[\d+]/.test(items[i]) 來判斷是否包含'',如果包含,那麼使用/[\d+]/迴圈匹配取出其中每一項.

總體**就是這樣

ss.render = function (template, scope)  } else  } return innerdata; });

html 模板

var template =`}

name:}

age:}

***:}li> name:}

age:}

***:}li> `;

模板資料

var scope = , ,] }

測試

console.log(ss.render(template, scope));

結果

ss 模板中簡單的資料繫結就已經實現.

在 ss 前端模板引擎.(二) 中會插入 三元表示式,for迴圈和if條件判斷

學習前端模板引擎 jade 一

通常大部分前端開發工作者一開始步入前端開發的時候,都是直接簡單的寫html頁面然後丟給後台開發,後台開發在來嵌入模版。對於日益龐大的前端頁面來說,還是用老的字串拼接的方法來嵌入html內容已經不適應當下的開發趨勢了。廢話不多說,直接切入正題。第二步我要安裝npm包管理工具,在node環境下,不裝gr...

diy乙個小工具

仔細分析任務,其實關鍵點就是環境變數,建立乙個新程序,然後把環境變數塊傳遞進去,變可完成任務,環境塊是乙個string,name value 而且對於unicode 和ansi 的對待方式不同,如果是unicode,createprocess時要傳遞 dword dwcreationflags這個引...

DIY乙個簡易查詢系統

前段時間應需求計畫做乙個簡潔的 中藥毒 查詢 小工具 們提供了不少資料.最簡潔的還屬這個名單 我們預期一下我們希望做出乙個什麼東東,它應該 可以展示資料裡的藥物及其屬性關係.例如 柴胡 對應 小柴胡片 小柴胡顆粒 得生丸 安坤贊育丸。柴胡皂苷 能導致腎上腺肥大 胸腺萎縮,使人體免疫功能降低。有腎毒性...