當前位置:主頁 > SEO優化 >

如何選擇 Web 前端模板引擎?

奕星seo偽原創
作者: 奕星SEO 分類: SEO優化 發布時間: 2019-10-16 16:02 內容來源:網絡整理閱讀量:

  模板引擎負責組裝數據,以另外一種形式或外觀展現數據。 瀏覽器中的頁面是 Web 模板引擎最終的展現。

  無論你是否直接使用模板引擎,Web 模板一直都在,不在前端就在后端,它的出現甚至可以追溯到超文本標記語言 HTML 標準正式確立之前。

  我所知道最早的 Web 模板引擎是 PHP,它正式誕生于 1997 年,工作在服務器端。讓我們看看 PHP 官方的 intro-whatis:

  PHP(“PHP: Hypertext Preprocessor”,超文本預處理器的縮寫)是一種被廣泛應用的開放源代碼的多用途腳本語言,它可嵌入到 HTML中,尤其適合 web 開發。

  PHPer 普遍贊同 PHP 本身就是最天然、原生的 PHP 模板引擎,因為她本來就是。在 PHP 的世界里多次出現過再包裝的模板引擎,著名的有 smarty。

  其它服務器端語言很多都有 HTML 模板引擎,比如 JSP、mustache。

  毫無疑問,這些服務器端模板引擎最終生成的結果是 HTML(XML) 字符串,處理流程邏輯使用宿主語言本身的語法實現。

  它們的共同特征:HTML 只是個字符串, 最終結果可能還需要類似 Tidy 這樣的清潔或修正驗證工具。

  我所知道最早的前端模板引擎是 jCT,它托管于 Google Code,誕生于 2008 年,宿主語言是 Java,工作在瀏覽器中。很榮幸,我就是 jCT 的作者,相關早期博客可以查看 achun、github jCT 備份。

  直到今天寫這篇文章,我才發現 pure-js 這篇文章里面也提到不少先行者——jemplate 最早在 2006 年就創建了。

  今天在 OSC 搜索 Java 模板引擎你會得到 100+ 個結果,下邊列舉一些:

  我認為存在即合理,每個引擎、框架總有可取之處,至少在你的應用里,在某個時代,所以本文不會評論某個引擎哪一點不好,那樣是不客觀的。現在回答前邊提到的問題:smarty 有存在的必要么?我的答案是:有。理由很簡單,看給誰用、看大背景。

  對于前后端沒有分離的應用,或前端人員對后端語言不夠熟悉,或因崗位職責需要,那么前端人員掌握一種比較通用的模板語法(語言)是現實的,反之讓 PHPer 自己去使用 smarty 那就太浪費技能了。

  前提,選擇的引擎能滿足數據渲染需求,且不和現有依賴沖突,如果你已經非常熟悉某個引擎,那你已經有答案了。

  要跨平臺么? 有官方提供支持的,首選類 React-JSX 的引擎或純粹的 VDOM 引擎。

  選擇學習或維護復雜度最低的,眾所周知,開發者對調試的時間超過寫代碼的時間深惡痛絕。

  最后才是性能對比,性能對比是一件非常細致的工作,他人的對比結果不一定符合你的場景。

  我認為應該弱化語法風格的對比,偏好是沒有可比性的,一些語法甚至有特殊的背景原因。

  性能的確很重要,但如果性能還沒有影響到你的應用體驗度,那就忽視它。很難真實地模擬應用場景,通常只有通過真實場景來檢驗,目前的測試工具還達不到這種效果。

  前述問題有些有固定答案,下面討論余下的問題:如何考慮組件開發、支持預編譯、復雜度?

  進行組件開發已經不再是選擇模板引擎的問題了,這是生態環境選擇的問題。如果你的應用需要更快地完成,那么時間點是第一位的,就選擇流行框架,有足夠多的組件讓你使用或參考。如果你的應用有獨立的生態環境,需要技術選型以便長期維護,那繼續看下文。

  一些基于字符串處理的引擎也支持預編譯。如果你需要預編譯,建議拋棄編譯結果依然是基于字符串拼接的引擎,那樣還不如不預編譯,那是 HTML5 未被廣泛支持之前的技術手段。

  至少也要有類似 React-JSX 這樣的編譯結果才具有可調試性。備注:Vue.js 支持多種模板引擎,可達到同樣的效果。

  很難用唯一的標準去評判兩個引擎哪個復雜度低,這是由使用者的思維模式不同造成的。例如前邊列出的引擎在使用上以及預編譯結果上的區別,不同使用者感觸是不同的,這正是不同引擎存在的合理性、價值性。

  這些評判都有各自的理由,著眼點不同,標準也就不同了。但是我們還是可以從它們的共性去考慮它們的復雜度。

  字符串類模板通常都很輕量,不在本節討論范圍之內。對于非字符串模板復雜度評判的共性標準是什么?我認為,可以考量數據綁定的復雜度。

  本文所指的數據綁定不只是插值,還包括上下文以及事件,甚至是整個運行期的宿主環境。

  事實上至少需要達到 VDOM 級別的引擎才具有這種能力,因為通過 VDOM 可以映射到真實的 DOM 節點。

  這些模式只是理論方面的,通常是模板引擎設計者要解決的問題。對于使用者來說不如直接問:


本文鏈接地址:http://www.pxynqa.icu/seoyouhua/14010.html
上一篇:<<新興優化排名網站價格
下一篇:如何看新聞學英語?這9個國外網站超好用>>
吉林时时历史开奖号码 手游稳定赚钱的游戏 今晚北单有什么好推荐 青海十一选五开奖结果 福益家足浴加盟赚钱吗 重庆百变王牌中奖技巧 德州麻将技巧图解 中国体育彩票官网七星彩 赌场转盘出号有规律吗 咖啡厅与酒吧哪个赚钱 贵州快3稳定计划 大小玩法 317期3d福彩开奖结果 2014年双色彩票开奖 时时彩后一5码倍投表 上完班回来怎么赚钱 打游戏赚钱怎么入手