91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

高性能JavaScript模板引擎原理解析

發布時間:2020-07-28 16:24:00 來源:網絡 閱讀:237 作者:Hjiangxue 欄目:web開發

隨著 web 發展,前端應用變得越來越復雜,基于后端的 javascript(Node.js) 也開始嶄露頭角,javascript 被寄予了更大的期望,與此同時 javascript MVC 思想也開始流行起來。javascript 模板引擎作為數據與界面分離工作中最重要一環,越來越受開發者關注,在開源社區中更是百花齊放,在 Twitter、淘寶網、新浪微博、騰訊QQ空間、騰訊微博等大型網站中均能看到它們的身影。

本文將用最簡單的示例代碼描述現有的 javascript 模板引擎的原理,包括新一代 javascript 模板引擎 artTemplate 的特性實現原理,歡迎共同探討。

artTemplate 介紹

artTemplate 是新一代 javascript 模板引擎,它采用預編譯方式讓性能有了質的飛躍,并且充分利用 javascript 引擎特性,使得其性能無論在前端還是后端都有極其出色的表現。在 chrome 下渲染效率測試中分別是知名引擎 Mustache 與 micro tmpl 的 25 、 32 倍。

高性能JavaScript模板引擎原理解析

除了性能優勢外,調試功能也值得一提。模板調試器可以精確定位到引發渲染錯誤的模板語句,解決了編寫模板過程中無法調試的痛苦,讓開發變得高效,也避免了因為單個模板出錯導致整個應用崩潰的情況發生。

artTemplate 這一切都在 1.7kb(gzip) 中實現!

javascript 模板引擎基本原理

雖然每個引擎從模板語法、語法解析、變量賦值、字符串拼接的實現方式各有所不同,但關鍵的渲染原理仍然是動態執行 javascript 字符串。

關于動態執行 javascript 字符串,本文以一段模板代碼舉例:

高性能JavaScript模板引擎原理解析

這是一段非常樸素的模板寫法,其中,”” 為 closeTag (邏輯語句閉合標簽),若 openTag 后面緊跟 “=” 則會輸出變量的內容。

HTML語句與變量輸出語句被直接輸出,解析后的字符串類似:

高性能JavaScript模板引擎原理解析

語法分析完畢一般還會返回渲染方法:

高性能JavaScript模板引擎原理解析

渲染測試:

高性能JavaScript模板引擎原理解析

在上面 render 方法中,模板變量賦值采用了 with 語句,字符串拼接采用數組的 push 方法以提升在 IE6、7 下的性能,jQuery 作者 john 開發的微型模板引擎 tmpl 是這種方式的典型代表,參見: http:ejohn.org/blog/javascript-micro-templating/

由原理實現可見,傳統 javascript 模板引擎中留下兩個待解決的問題:

1、性能:模板引擎渲染的時候依賴 Function 構造器實現,Function 與 eval、setTimeout、setInterval 一樣,提供了使用文本訪問 javascript 解析引擎的方法,但這樣執行 javascript 的性能非常低下。

2、調試:由于是動態執行字符串,若遇到錯誤調試器無法捕獲錯誤源,導致模板 BUG 調試變得異常痛苦。在沒有進行容錯的引擎中,局部模板若因為數據異常甚至可以導致整個應用崩潰,隨著模板的數目增加,維護成本將劇增。

本次給大家推薦一個免費的學習圈,里面概括移動應用網站開發,css,html,webpack,vue node angular以及面試資源等。**獲取資料

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

绵竹市| 时尚| 昭平县| 靖江市| 方山县| 湖州市| 彩票| 平塘县| 桂阳县| 灵丘县| 西盟| 安阳县| 宿松县| 阿克苏市| 夏津县| 务川| 兴和县| 鹿邑县| 堆龙德庆县| 龙海市| 德化县| 新安县| 大邑县| 会理县| 淳化县| 根河市| 寿阳县| 镇沅| 高邑县| 满洲里市| 鄂托克旗| 互助| 涞水县| 格尔木市| 太仆寺旗| 高邑县| 镇巴县| 金堂县| 河曲县| 平果县| 广平县|