Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 亚洲成人福利视频,免费一区二区三区视频导航,韩国三级跳视频在线观看

          整合營(yíng)銷服務(wù)商

          電腦端+手機(jī)端+微信端=數(shù)據(jù)同步管理

          免費(fèi)咨詢熱線:

          前端開(kāi)發(fā):JavaScript 模板引擎(二)

          此文為大家整理一些實(shí)用的JavaScript 模板引擎,希望對(duì)大家有所幫助!

          1、handlebars.js(是 Mustache 模板語(yǔ)言的擴(kuò)展)

          2、eco(嵌入式的 CoffeeScript 模板)

          3、dustjs(適用于瀏覽器和 node.js 的異步模板)

          4、Jade(健壯的、優(yōu)雅且功能豐富的 nodejs 模板引擎)

          5、marko(快速輕量且基于 HTML 的模板引擎,支持異步、流、自定義標(biāo)簽和 CommonJS 模編譯后輸出。適用于 Node.js)

          6、EJS(高效的 JavaScript 模板)

          切圖 qietu(.com)

          avaScript的框架、庫(kù)和工具的冒出似乎有點(diǎn)超出大家的想象,截止到2017年5月,在GitHub上搜索JavaScript項(xiàng)目,你會(huì)發(fā)現(xiàn)其已經(jīng)超過(guò)了110萬(wàn);npmjs.org上有50萬(wàn)個(gè)可用的軟件包,每月下載量近100億次。

          為了幫助大家更好地選擇JavaScript框架、庫(kù)和工具,本文將對(duì)流行的框架、庫(kù)和工具進(jìn)行一些對(duì)比,但是由于篇幅有限,可能并不能包含到所有的框架、庫(kù)和工具,所以歡迎大家在下方補(bǔ)充評(píng)論,共同學(xué)習(xí)進(jìn)步。

          為了讓大家的討論在共同的水平線上,首先我們先來(lái)確定一下框架、庫(kù)和工具的概念。可能每個(gè)人對(duì)于這三者都有自己的理解,但是本文是基于以下的概念來(lái)進(jìn)行討論的。

          庫(kù)

          庫(kù)是有用功能的有組織的集合。庫(kù)的典型功能包括處理字符串、日期、HTML DOM元素、事件、Cookie、動(dòng)畫、網(wǎng)絡(luò)請(qǐng)求等。每個(gè)函數(shù)將值返回給調(diào)用應(yīng)用程序,但是你可以從中選擇參數(shù)來(lái)應(yīng)用。如果用汽車來(lái)做比喻,那就是你可以任意使用所有的零部件來(lái)搭建汽車,但是你必須自行構(gòu)建引擎。

          庫(kù)通常是提供一個(gè)更高的抽象層,平滑的實(shí)現(xiàn)細(xì)節(jié)和矛盾。例如,Ajax通常依賴于XMLHttpRequest API,但是由于各瀏覽器之間的差異,你可能需要修改幾行代碼來(lái)實(shí)現(xiàn)。但是庫(kù)可以提供一個(gè)更簡(jiǎn)單的ajax()函數(shù),讓程序員更專注于高層次的業(yè)務(wù)邏輯。

          因?yàn)閹?kù)不必在意更多的細(xì)節(jié),所以開(kāi)發(fā)時(shí)間可能會(huì)縮短20%,但是它也不是沒(méi)有缺點(diǎn)的:

          • 庫(kù)內(nèi)的錯(cuò)誤可能難以定位和修復(fù)

          • 開(kāi)發(fā)團(tuán)隊(duì)不能保證快速發(fā)布補(bǔ)丁

          • 修補(bǔ)程序可能會(huì)更改API,并對(duì)您的代碼進(jìn)行重大更改。

          框架

          框架是一個(gè)應(yīng)用程序的骨架,它要求你以特定的方式處理軟件設(shè)計(jì),并在某些點(diǎn)插入自己的邏輯。 通常框架提供事件、存儲(chǔ)和數(shù)據(jù)綁定等功能。 如果我們還是用汽車了來(lái)做類比,那么框架就是一輛車的底盤、車身和發(fā)動(dòng)機(jī),為了讓車輛始終保持運(yùn)行狀態(tài),你可以添加、刪除或修改某些組件。

          框架通常會(huì)提供比庫(kù)更高的抽象層,并且?guī)椭脩艨焖贅?gòu)建項(xiàng)目的08%,但它的缺點(diǎn)是:

          • 如果應(yīng)用程序超出了框架的范圍,那么剩下的20%可能會(huì)很難完成;

          • 框架更新可能很困難 ;

          • 框架核心代碼和概念很少更新,但是同樣的事情,程序員往往都會(huì)在短時(shí)間內(nèi)發(fā)現(xiàn)一個(gè)更好的解決方式;

          工具

          工具有助于開(kāi)發(fā),但并不是項(xiàng)目的組成部分。 工具包括系統(tǒng)構(gòu)建,編譯器, transpilers,代碼分割器,圖像壓縮器等。

          工具的應(yīng)用使得開(kāi)發(fā)過(guò)程變得更加容易,例如很多程序員都喜歡將Sass to CSS,因?yàn)樗峁┝舜a分離,嵌套,渲染時(shí)間變量,循環(huán)和函數(shù)。 瀏覽器不了解Sass / SCSS語(yǔ)法,因此在測(cè)試和部署之前,必須使用適當(dāng)?shù)墓ぞ邔⒋a編譯為CSS。

          JavaScript框架和庫(kù)

          jQuery

          jQuery是最常用的JavaScript庫(kù),它革命性的在客戶端開(kāi)發(fā),將CSS選擇器引入到DOM節(jié)點(diǎn)檢索加鏈接來(lái)應(yīng)用事件處理程序、動(dòng)畫和Ajax調(diào)用。jQuery近年來(lái)備受青睞,對(duì)于一個(gè)很需要JavaScript功能的項(xiàng)目來(lái)說(shuō),jQuery絕對(duì)是一個(gè)可行的選擇。

          優(yōu)點(diǎn):

          • 分布規(guī)模小;

          • 學(xué)習(xí)曲線平緩,在線幫助多;

          • 語(yǔ)法簡(jiǎn)潔;

          • 容易延伸;

          缺點(diǎn):

          • 增加了本機(jī)API的速度開(kāi)銷

          • 瀏覽器兼容性的改善降低了它的重要性;

          • 用法扁平

          • 有些行業(yè)反饋有很多不必要的使用。

          React

          React可能是去年一年最受關(guān)注的庫(kù)了吧。React聲稱是一個(gè)用于構(gòu)建用戶界面的JavaScript庫(kù),它專注于MVC開(kāi)發(fā)的“View”部分,并且可以輕松創(chuàng)建保留狀態(tài)的UI組件。 它是實(shí)現(xiàn)虛擬DOM的第一個(gè)庫(kù), 內(nèi)存結(jié)構(gòu)計(jì)算差異,有效地更新頁(yè)面。

          從使用情況來(lái)看,React的情況似乎有些不好,但這是因?yàn)樗窃趹?yīng)用程序中使用而不是網(wǎng)站,38%的程序員表示他們正在使用該庫(kù)。

          優(yōu)點(diǎn):

          • 小巧,高效,快捷靈活;

          • 簡(jiǎn)單的組件模型;

          • 良好的文檔和在線資源;

          • 服務(wù)器端渲染;

          • 處于高速發(fā)展期;

          缺點(diǎn):

          • 需要學(xué)習(xí)新的概念和語(yǔ)法;

          • 構(gòu)建工具必不可少;

          • 要求其他庫(kù)或框架提供Model和Control;

          • 與修改DOM的代碼和其他庫(kù)不兼容;

          Lodash and Underscore

          Lodash和Underscore提供了數(shù)百個(gè)功能性的JavaScript實(shí)用程序來(lái)補(bǔ)充本地字符串,數(shù)字,數(shù)組和其他原始對(duì)象方法。 它在客戶端使用率較低,但是可以在服務(wù)器端的Node.js應(yīng)用程序中使用很頻繁。

          優(yōu)點(diǎn):

          • 小而簡(jiǎn)單;

          • 擁有優(yōu)質(zhì)文檔,易于學(xué)習(xí);

          • 與大多數(shù)庫(kù)和框架兼容;

          • 不擴(kuò)展內(nèi)置對(duì)象;

          • 可以在客戶端或服務(wù)器上使用;

          缺點(diǎn):

          • 有些方法只適用于ES2015及更高版本的JavaScript。

          AngularJS 1.x

          Angular最流行的版本是1.x版本,它使用雙向數(shù)據(jù)綁定擴(kuò)展HTML,同時(shí)將DOM操作與應(yīng)用程序邏輯脫鉤。盡管版本2已經(jīng)發(fā)布(當(dāng)然現(xiàn)在已經(jīng)到了版本4),但是Angular 1.x仍在開(kāi)發(fā)中。

          優(yōu)點(diǎn):

          • 眾多大公司采用;

          • 以單一的解決方案來(lái)生產(chǎn)現(xiàn)代Web應(yīng)用程序;

          • 一個(gè)解決方案來(lái)生產(chǎn)現(xiàn)代Web應(yīng)用程序;

          • MEAN堆棧(MongoDB,Express.JS,AngularJS,NodeJS),有眾多文檔和教程可用來(lái)參考;

          缺點(diǎn):

          • 學(xué)習(xí)曲線更加陡峭;

          • 大代碼庫(kù)

          • 不能升級(jí)到Angular 2.x

          Angular 2.x (now 4.x)

          Angular 2.0于2016年9月發(fā)布。這是一個(gè)完整的重寫,它引入了使用TypeScript(被編譯為JavaScript)創(chuàng)建的基于模塊化組件的模型。 Angular 4.0版本于2017年3月發(fā)布。

          Angular2+和1.0版本截然不同,與其他也不兼容,所以也許谷歌應(yīng)該給該項(xiàng)目另外起一個(gè)名字。

          優(yōu)點(diǎn):

          • 單一的解決方案來(lái)生產(chǎn)現(xiàn)代Web應(yīng)用程序;

          • 盡管Angular 2+的可用文檔較少,但它仍是MEAN堆棧的一部分;

          • 對(duì)于熟悉靜態(tài)類型語(yǔ)言(如C#和Java)的人員,TypeScript提供了一些優(yōu)勢(shì)。

          缺點(diǎn):

          • 更陡峭的學(xué)習(xí)曲線;

          • 大代碼庫(kù);

          • 不能從Angular 1.x升級(jí);

          • 與1.x相比,Angular 2.x的使用率相對(duì)較低;

          • 盡管是Google的項(xiàng)目,但Google似乎并沒(méi)有使用它?

          Vue.js

          Vue.js是一個(gè)用于構(gòu)建用戶界面的輕量級(jí)漸進(jìn)框架。 該核心提供了一個(gè)React-like 的虛擬 DOM-powered層,它可以與其他庫(kù)集成,也可以支持單頁(yè)應(yīng)用程序。

          Vue.js使用HTML模板語(yǔ)法將DOM綁定到實(shí)例數(shù)據(jù)。 模型是在更改數(shù)據(jù)時(shí)更新視圖的純JavaScript對(duì)象。 附加工具提供了scaffolding,路由,狀態(tài)管理,動(dòng)畫等功能。

          優(yōu)點(diǎn):

          • 易于上手,普及度高;

          • 起點(diǎn)簡(jiǎn)單,但完成滿意度高;

          • 依賴性小,性能好;

          缺點(diǎn):

          • 是一個(gè)新項(xiàng)目,所以風(fēng)險(xiǎn)可能會(huì)很大;

          • 依賴開(kāi)發(fā)人員來(lái)更新;

          • 相對(duì)同類框架,資源較少;

          Backbone.js

          Backbone.js是提供常見(jiàn)的服務(wù)器端框架MVC結(jié)構(gòu)最早的客戶端選項(xiàng)之一,它唯一的依賴是由同一開(kāi)發(fā)人員創(chuàng)建的Underscore.js。

          Backbone.js聲稱是一個(gè)庫(kù),因?yàn)樗梢耘c其他項(xiàng)目集成,但我認(rèn)為大多數(shù)程序員都認(rèn)為它是一個(gè)框架。

          優(yōu)點(diǎn):

          • 體積小,重量輕,復(fù)雜度低;

          • 不添加HTML的邏輯;

          • 文檔豐富;

          • 采用了許多應(yīng)用,包括Trello,WordPress.com,LinkedIn和Groupon;

          缺點(diǎn):

          • 與AngularJS等相比,抽象度較低;

          • 需要額外的組件來(lái)實(shí)現(xiàn)數(shù)據(jù)綁定等功能;

          • 新的框架基本已經(jīng)不再采用MVC架構(gòu);

          Ember.js

          Ember.js是基于Model-View-ViewModel(MVVM)模式的框架之一。 它在單個(gè)包中實(shí)現(xiàn)模板化,數(shù)據(jù)綁定和庫(kù)。如果 Ruby on Rails體驗(yàn)的用戶,能夠迅速熟悉其配置概念。

          優(yōu)點(diǎn):

          • 為客戶端應(yīng)用程序提供單一解決方案;

          • 程序員可以快速開(kāi)發(fā)—其使用jQuery;

          • 良好的向后兼容性和升級(jí)選項(xiàng);

          • 采用了現(xiàn)代Web開(kāi)發(fā)標(biāo)準(zhǔn);

          缺點(diǎn):

          • 與其他正在向較小組件結(jié)構(gòu)移動(dòng)的框架相比,被認(rèn)為是單一的;

          • 陡峭的學(xué)習(xí)曲線 ;

          Knockout.js

          較早的MVVM框架之一,Knockout.js使用觀察者來(lái)確保UI與底層數(shù)據(jù)保持同步,它具有模板和依賴關(guān)系跟蹤。

          優(yōu)點(diǎn):

          • 小而輕便,無(wú)依賴

          • 支持回溯到IE6

          • 優(yōu)質(zhì)文檔;

          缺點(diǎn):

          • 較大的項(xiàng)目可能變得復(fù)雜;

          • 發(fā)展速度已經(jīng)放緩;

          • 使用情況正在下降;

          值得注意,下面這些項(xiàng)目雖然不如上面的受歡迎,但還是值得一試的:

          Polymer- 可以跨瀏覽器支持HTML5網(wǎng)頁(yè)組件的庫(kù)

          Meteor - 一個(gè)用于Web應(yīng)用程序的全棧平臺(tái)。

          Aurelia - 一種相對(duì)較新的,輕量級(jí)的跨平臺(tái)框架

          Svelte - 一個(gè)將框架源代碼轉(zhuǎn)換為JavaScript的新項(xiàng)目

          Conditioner.js - 一個(gè)基于狀態(tài)自動(dòng)加載和卸載模塊的庫(kù)。

          工具:General-Purpose Task Runners

          構(gòu)建工具可以自動(dòng)執(zhí)行各種Web開(kāi)發(fā)任務(wù),例如預(yù)處理,編譯,優(yōu)化圖像,縮小代碼,運(yùn)行測(cè)試等等。所有的任務(wù)都可以在一個(gè)可執(zhí)行包中管理,比較受歡迎的工具包括:

          Gulp.js

          Gulp雖然不是第一個(gè)工具,但是它是最受歡迎的工具,Gulp使用易于閱讀的JavaScript代碼,將源文件加載到流中,并在將數(shù)據(jù)輸出到構(gòu)建文件夾之前通過(guò)各種插件管理數(shù)據(jù)。

          npm

          npm是Node.js包管理器,但其腳本工具可用于運(yùn)行通用任務(wù)。 對(duì)于具有很少依賴關(guān)系的簡(jiǎn)單項(xiàng)目來(lái)說(shuō),這是一個(gè)有吸引力的選擇,但是對(duì)于復(fù)雜的任務(wù)來(lái)說(shuō),它可能就有些有心無(wú)力。

          Grunt

          Grunt是第一個(gè)實(shí)現(xiàn)批量采用的JavaScript任務(wù)的工具,但其速度和復(fù)雜的JSON配置,使得Gulp異軍突起。如今,這些問(wèn)題解決了,Grunt仍然是一個(gè)不錯(cuò)的選擇。

          工具:Module Bundlers

          多個(gè)JavaScript文件的管理成為了程序員們的煩惱,在默認(rèn)情況下,瀏覽器文件未被編譯,因此依賴關(guān)系必須以適當(dāng)?shù)捻樞蚣虞d或連接。雖然有各種選項(xiàng),如ES6模塊和CommonJS,但瀏覽器支持畢竟是有限的,因此Module Bundlers就變得至關(guān)重要。

          Webpack

          Webpack支持所有流行的模塊選項(xiàng),并已成為React開(kāi)發(fā)的代名詞。 雖然它聲稱是一個(gè)Module Bundlers,但是也可以用作通用任務(wù)運(yùn)行程序。

          Browserify

          Browserify支持Node.js使用的CommonJS模塊,將所有模塊編譯成單個(gè)瀏覽器兼容的文件。

          RequireJS

          RequireJS是一種瀏覽器中的模塊加載器,它也可以在Node.js中使用。

          Tools: Linting

          “Linting”是分析你的代碼的潛在錯(cuò)誤或偏離語(yǔ)法標(biāo)準(zhǔn)。 有了這種工具,你永遠(yuǎn)不出現(xiàn)只有一半括號(hào)或者未聲明變量的情況。

          ESLint

          ESLint是一種可插拔的Linting工具,每個(gè)規(guī)則都是一個(gè)插件,因此可以根據(jù)您的喜好進(jìn)行配置。

          JSHint

          一個(gè)靈活的JavaScript linter,在真正的錯(cuò)誤和迂腐的語(yǔ)法需求之間取得了很好的平衡!

          JSLint

          JSLint是最早的Linter之一,遵循一套嚴(yán)格的默認(rèn)規(guī)則。

          Tools: Test Suites

          在應(yīng)用程序的編寫過(guò)程中有一個(gè)很重要的步驟那就是代碼測(cè)試。代碼測(cè)試的工具有很多,如Ava、Tape和Jest。下面,我們就為大家介紹最受歡迎的三個(gè)選擇:

          Mocha

          Mocha是一個(gè)JavaScript測(cè)試框架,可以在Node.js或?yàn)g覽器中運(yùn)行測(cè)試。 它支持異步測(cè)試,并且經(jīng)常與Chai配對(duì),以使測(cè)試代碼能夠以可讀取的方式表達(dá)。

          Jasmine

          Jasmine是一個(gè)行為驅(qū)動(dòng)的測(cè)試套件,可以在瀏覽器中自動(dòng)測(cè)試您的UI和交互。

          QUnit

          QUnit是一個(gè)單元測(cè)試框架,可以通過(guò)特定參數(shù)檢查函數(shù)結(jié)果。

          Tools: Miscellaneous

          雖然JavaScript比較常見(jiàn)常用,但是也并不是每個(gè)程序員都喜歡JavaScript,例如TypeScript,LiveScript和CoffeeScrip這些也可以使得程序員的開(kāi)發(fā)過(guò)程很愉快。

          JavaScript-powered HTML的引擎模板有數(shù)十種,其中包括Mustache,Handlebars,Pug(Jade)和EJS。但在我而言, 更喜歡保留JavaScript語(yǔ)法(如EJS和doT)的輕量級(jí)選項(xiàng)。

          如何自己來(lái)編寫文檔呢?ES2015兼容的文檔生成器包括ESDoc,JSDoc,YUIdoc,documentation.js和Transcription。

          寫在最后

          如果你想要走在技術(shù)的前端,那么React以及和其相關(guān)的技術(shù)發(fā)展方向值得關(guān)注。如果你想要為Web應(yīng)用程序選擇一個(gè)安全的選項(xiàng),那么你可以考慮Vue.js。

          雖然整體框架現(xiàn)在不再那么受歡迎,但是如果你是要做嚴(yán)格的大型項(xiàng)目結(jié)構(gòu),AngularJS會(huì)是一個(gè)不錯(cuò)的選擇。雖然,現(xiàn)在大多數(shù)人還在使用1.0版本,但是從長(zhǎng)遠(yuǎn)來(lái)看,學(xué)習(xí)一下TypeScript,選擇4.0版本會(huì)更加安全。

          jQuery雖然在技術(shù)新聞中很少被提到,但是它的學(xué)習(xí)曲線平緩,幾乎所有的程序員都可以理解,而且它現(xiàn)在還在積極開(kāi)發(fā)。

          工具的選擇會(huì)因項(xiàng)目而異,但是不可否認(rèn),大多數(shù)項(xiàng)目都會(huì)選擇Gulp和WebPack。每個(gè)項(xiàng)目和團(tuán)隊(duì)的技能都是不同的,所以你在選擇的時(shí)候要在有限時(shí)間內(nèi)準(zhǔn)確評(píng)估。

          最后,永遠(yuǎn)不要忘記庫(kù),框架和工具是可選的! JavaScript在過(guò)去的十年中發(fā)生了革命性的變化,幾乎每隔幾個(gè)月都會(huì)有熱門框架的出現(xiàn),所以很容易就掉進(jìn)陷阱之中。所以,在選擇時(shí),就要考慮自己的實(shí)際需求,也要積極學(xué)習(xí)新的知識(shí)。

          對(duì)html+js的傳統(tǒng)設(shè)計(jì),現(xiàn)在很多網(wǎng)站都采用div&css+標(biāo)簽化+模塊化的設(shè)計(jì)。模板引擎根據(jù)一定的語(yǔ)義,將數(shù)據(jù)填充到模板中,產(chǎn)生最終的HTML頁(yè)面。模板引擎主要分兩種:客戶端引擎和服務(wù)端引擎。

          客戶端渲染:

          模板和數(shù)據(jù)分別傳送到客戶端,在客戶端由JavaScript模板引擎渲染出最終的HTML視圖。將模板渲染放置在客戶端做,可以降低服務(wù)端的壓力,并且如果前端內(nèi)容分別來(lái)自多個(gè)后臺(tái)系統(tǒng),而這些后臺(tái)的架構(gòu)各不相同(Java、.NET、Ruby等),則服務(wù)器端渲染需要采用不同的技術(shù),模板資源無(wú)法共享。

          服務(wù)端渲染:

          引擎在服務(wù)器端將模板和數(shù)據(jù)合成,返回最終的html頁(yè)面,相對(duì)于客戶端渲染,數(shù)據(jù)存儲(chǔ)更加安全。主要有freemarker、velocity、thymeleaf等。

          相較與其他的模板引擎,thymeleaf它有如下三個(gè)特點(diǎn):

          (a) 在有網(wǎng)絡(luò)和無(wú)網(wǎng)絡(luò)的環(huán)境下皆可運(yùn)行,即它可以讓美工在瀏覽器查看頁(yè)面的靜態(tài)效果,同時(shí)也可以讓程序員在服務(wù)器查看帶數(shù)據(jù)的動(dòng)態(tài)頁(yè)面效果。這是由于它支持 html 原型,然后在 html 標(biāo)簽里增加額外的屬性來(lái)達(dá)到模板+數(shù)據(jù)的展示方式。瀏覽器解釋 html 時(shí)會(huì)忽略未定義的標(biāo)簽屬性,所以 thymeleaf 的模板可以靜態(tài)地運(yùn)行;當(dāng)有數(shù)據(jù)返回到頁(yè)面時(shí),Thymeleaf 標(biāo)簽會(huì)動(dòng)態(tài)地替換掉靜態(tài)內(nèi)容,使頁(yè)面動(dòng)態(tài)顯示。

          (b) 開(kāi)箱即用的特性。它提供標(biāo)準(zhǔn)和spring標(biāo)準(zhǔn)兩種方言,可以直接套用模板實(shí)現(xiàn)JSTL、 OGNL表達(dá)式效果,避免每天套模板、改jstl、改標(biāo)簽的困擾。同時(shí)開(kāi)發(fā)人員也可以擴(kuò)展和創(chuàng)建自定義的方言。

          (c) 提供spring標(biāo)準(zhǔn)方言和一個(gè)與 SpringMVC 完美集成的可選模塊,可以快速的實(shí)現(xiàn)表單綁定、屬性編輯器、國(guó)際化等功能。

          1、新建項(xiàng)目sc-thymeleaf,對(duì)應(yīng)的pom.xml文件如下

          <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
           <modelVersion>4.0.0</modelVersion>
           <groupId>spring-cloud</groupId>
           <artifactId>sc-thymeleaf</artifactId>
           <version>0.0.1-SNAPSHOT</version>
           <packaging>jar</packaging>
           <name>sc-thymeleaf</name>
           <url>http://maven.apache.org</url>
           <parent>
           <groupId>org.springframework.boot</groupId>
           <artifactId>spring-boot-starter-parent</artifactId>
           <version>2.0.4.RELEASE</version>
           </parent>
           <dependencyManagement>
           <dependencies>
           <dependency>
           <groupId>org.springframework.cloud</groupId>
           <artifactId>spring-cloud-dependencies</artifactId>
           <version>Finchley.RELEASE</version>
           <type>pom</type>
           <scope>import</scope>
           </dependency>
           </dependencies>
           </dependencyManagement>
           <dependencies>
           <dependency>
           <groupId>org.springframework.boot</groupId>
           <artifactId>spring-boot-starter-web</artifactId>
           </dependency>
           <dependency>
           <groupId>org.springframework.boot</groupId>
           <artifactId>spring-boot-starter-thymeleaf</artifactId>
           </dependency>
           </dependencies>
          </project>
          

          2、新建springboot啟動(dòng)類

          package sc.thymeleaf;
          import org.springframework.boot.SpringApplication;
          import org.springframework.boot.autoconfigure.SpringBootApplication;
          @SpringBootApplication
          public class ThymeleafApplication {
           public static void main(String[] args) {
           SpringApplication.run(ThymeleafApplication.class, args);
           }
          }
          

          3、新建配置文件application.yml

          server:
           port: 8090
          spring:
           application:
           name: sc-thymeleaf
           thymeleaf:
           cache: false
          

          說(shuō)明:thymeleaf所有的配置項(xiàng)可以參考類

          org.springframework.boot.autoconfigure.thymeleaf.ThymeleafProperties

          常用配置說(shuō)明:

          # THYMELEAF (ThymeleafAutoConfiguration)

          #開(kāi)啟模板緩存(默認(rèn)值:true)

          spring.thymeleaf.cache=true

          #Check that the template exists before rendering it.

          spring.thymeleaf.check-template=true

          #檢查模板位置是否正確(默認(rèn)值:true)

          spring.thymeleaf.check-template-location=true

          #Content-Type的值(默認(rèn)值:text/html)

          spring.thymeleaf.content-type=text/html

          #開(kāi)啟MVC Thymeleaf視圖解析(默認(rèn)值:true)

          spring.thymeleaf.enabled=true

          #模板編碼

          spring.thymeleaf.encoding=UTF-8

          #要被排除在解析之外的視圖名稱列表,用逗號(hào)分隔

          spring.thymeleaf.excluded-view-names=

          #要運(yùn)用于模板之上的模板模式。另見(jiàn)StandardTemplate-ModeHandlers(默認(rèn)值:HTML5)

          spring.thymeleaf.mode=HTML5

          #在構(gòu)建URL時(shí)添加到視圖名稱前的前綴(默認(rèn)值:classpath:/templates/)

          spring.thymeleaf.prefix=classpath:/templates/

          #在構(gòu)建URL時(shí)添加到視圖名稱后的后綴(默認(rèn)值:.html)

          spring.thymeleaf.suffix=.html

          #Thymeleaf模板解析器在解析器鏈中的順序。默認(rèn)情況下,它排第一位。順序從1開(kāi)始,只有在定義了額外的TemplateResolver Bean時(shí)才需要設(shè)置這個(gè)屬性。

          spring.thymeleaf.template-resolver-order=

          #可解析的視圖名稱列表,用逗號(hào)分隔

          spring.thymeleaf.view-names=

          其實(shí)完全可以使用不用配置,但是Spring Boot官方文檔建議在開(kāi)發(fā)時(shí)將緩存關(guān)閉,默認(rèn)為true

          4、新建Controller

          package sc.thymeleaf.controller;
          import java.util.ArrayList;
          import java.util.List;
          import org.springframework.stereotype.Controller;
          import org.springframework.ui.Model;
          import org.springframework.web.bind.annotation.RequestMapping;
          import sc.thymeleaf.model.User;
          @Controller
          public class UserController {
           @RequestMapping("/user/list")
           public String userList2(Model model) throws Exception {
           model.addAttribute("hello", "Hello, thymeleaf!");
           List<User> list = new ArrayList<User>();
           User u1 = new User();
           u1.setId(1);
           u1.setName("huangjinjin");
           u1.setAge(30);
           u1.setPosition("cto");
           list.add(u1);
           User u2 = new User();
           u2.setId(2);
           u2.setName("huang ge");
           u2.setAge(32);
           u2.setPosition("cco");
           list.add(u2);
           model.addAttribute("list", list);
           return "/user/list";
           }
          }
          

          5、新建模板文件

          說(shuō)明:Thymeleaf默認(rèn)模板路徑在classpath:/templates/下

          6、運(yùn)行ThymeleafApplication.java類,啟動(dòng)項(xiàng)目

          7、在瀏覽器輸入http://127.0.0.1:8090/user/list

          這里不深入講解Thymeleaf模板引擎的語(yǔ)法,如果想學(xué)習(xí)Thymeleaf的基本語(yǔ)法可以參考https://www.cnblogs.com/ityouknow/p/5833560.html或者自行找些資料學(xué)習(xí)


          主站蜘蛛池模板: 国产探花在线精品一区二区| 搜日本一区二区三区免费高清视频 | 东京热无码一区二区三区av| 日本无码一区二区三区白峰美| 免费无码VA一区二区三区| 亚洲av鲁丝一区二区三区 | 中文字幕AV一区二区三区 | 国产午夜精品一区理论片飘花| 熟女大屁股白浆一区二区| 久久se精品一区精品二区| 麻豆文化传媒精品一区二区| 无码人妻一区二区三区兔费| 国产一区二区三区露脸| 欧洲精品无码一区二区三区在线播放| 国产亚洲一区二区三区在线观看| 精品一区二区三区免费毛片爱| 色一情一乱一伦一区二区三欧美| 国产丝袜一区二区三区在线观看| 韩日午夜在线资源一区二区| 91在线一区二区| 亚洲AⅤ无码一区二区三区在线 | 亚洲国产老鸭窝一区二区三区| 中文字幕一区二区三区人妻少妇 | 中文字幕日韩丝袜一区| 国产一区二区三区在线电影| 国产福利电影一区二区三区久久久久成人精品综合 | 99在线精品一区二区三区| 成人一区二区三区视频在线观看 | 成人h动漫精品一区二区无码| 久久一区二区三区99| 在线播放偷拍一区精品| 日韩精品无码一区二区三区四区 | 精品无码人妻一区二区三区不卡 | 国产丝袜一区二区三区在线观看| 久久综合九九亚洲一区| 深夜福利一区二区| 日本一区二区三区爆乳| 丝袜人妻一区二区三区| 无码国产精品一区二区高潮| 天堂资源中文最新版在线一区 | 国产成人一区二区三区精品久久|