關於NodeJS框架Express的範本視圖機制分析
這篇文章主要介紹了關於NodeJS框架Express的模板視圖機制分析,有著一定的參考價值,現在分享給大家,有需要的朋友可以參考一下
MVC模式可謂無人不知,除了能增強團隊協作的效率,它還能方便產品的維護升級,本文我們將介紹Express框架的範本和視圖(V)相關功能。
模板引擎
Express支援許多模板引擎,常用的有:
haml 的實作Haml
haml.js 接替者,同時也是Express的預設範本引擎Jade
嵌入JavaScript模板EJS
基於CoffeeScript的模板引擎CoffeeKup
的NodeJS版本jQuery模板引擎
視圖渲染(view randering)
視圖的檔案名稱預設需遵循「
下面我們將用Jade引擎來渲染index.html,因為我們沒有設定layout:false,index.jade渲染後的內容將會被當作body本地變數傳入layout.jade 。
<SPAN style="FONT-SIZE: 13px">app.get('/', function(req, res){ res.render('index.jade', { title: 'CSSer, 关注Web前端技术!' }); }); </SPAN>
新增的「view engine」設定可以指定預設模板引擎,如果我們想要使用jade可以這樣設定:
<SPAN style="FONT-SIZE: 13px">app.set('view engine', 'jade'); </SPAN>
所以我們可以透過下面的方式:
<SPAN style="FONT-SIZE: 13px">res.render('index'); </SPAN>
取代以下方式:
<SPAN style="FONT-SIZE: 13px">res.render('index.jade'); </SPAN>
當「view engine」設定後,模板的副檔名就成了可選項,同時我們也可以混合匹配多模板引擎:
<SPAN style="FONT-SIZE: 13px">res.render('another-page.ejs'); </SPAN>
Express同時提供了視圖選項設置,這些設置會在每次視圖渲染後應用,例如你並不經常使用layouts,就可以這樣設置:
<SPAN style="FONT-SIZE: 13px">app.set('view options', { layout: false }); </SPAN>
如果需要,這些設置可以在後續的res.render()呼叫中被覆寫:
<SPAN style="FONT-SIZE: 13px">res.render('csser-view.ejs', { layout: true }); </SPAN>
可以透過指定一個路徑的方式來實作用自己的layout來取代系統預設的,例如如果我們將「view engine」設為jade並且自訂了一個名為「./views/mylayout.jade」的layout,我們可以這樣使用它:
<SPAN style="FONT-SIZE: 13px">res.render('page', { layout: 'mylayout' }); </SPAN>
否則必須指定副檔名:
<SPAN style="FONT-SIZE: 13px">res.render('page', { layout: 'mylayout.jade' }); </SPAN>
這些路徑也可以是絕對路徑:
<SPAN style="FONT-SIZE: 13px">res.render('page', { layout: __dirname + '///www.jb51.net/mylayout.jade' }); </SPAN>
這方面較好的例子就是自訂ejs模板的開始和關閉的標記:
<SPAN style="FONT-SIZE: 13px">app.set('view options', { open: '{{', close: '}}' }); </SPAN>
局部視圖(View Partials)
Express視圖系統原生支援局部和集合視圖,這稱為微型視圖,主要用於渲染一個文件片段。例如與其在視圖中循環顯示評論,不如使用局部集合(partial collection):
<SPAN style="FONT-SIZE: 13px">partial('comment', { collection: comments }); </SPAN>
如果不需要其它選項或本地變量,我們可以省略對象而簡單的傳入評論數組,這和上面的範例是一樣的:
<SPAN style="FONT-SIZE: 13px">partial('comment', comments); </SPAN>
當使用局部集合時,支援一些「魔術」本地變數:
firstInCollection 當為第一個物件時該值為true
#indexInCollection 集合中物件的索引值
#lastInCollection 當最後一個物件時為true
#collectionLength 集合的長度
Local variables passed (or generated) take precedence, however locals passed to the parent view are available in the child view as well. So for example if we were to render a blog post with partial(blog// post', post) it would generate the post local, but the view calling this function had the local user, it would be available to the blog/post view as well.
。 (或產生)的本地變數優先,但傳入父視圖的本地變數在子視圖仍有效。因此如果我們用partial(‘blog/post', post)來渲染部落格日誌時,將產生post的本地變量,但呼叫本函數的視圖擁有本機用戶,它在blog/post視圖依然有效。 (一回註:這段翻譯感覺有問題,請高人指點)。
效能提示:當使用局部集合渲染100長度的陣列就意味著需要渲染100次視圖,對於簡單的集合你可以將循環內聯,而不要使用局部集合,這樣可以減少系統開銷。
視圖查找(View Lookup)
#視圖查找是相對於父視圖進行的,例如我們有一個名為「views/user /list.jade」的頁面視圖,如果在該視圖中呼叫partial('edit'),視圖系統將會嘗試尋找並載入“views/user/edit.jade”,而partial('.. /messages')將載入“views/messages.jade”。
檢視系統也支援索引模板,這樣你就可以使用一個同名的目錄。例如,在一個路由中我們執行res.render(‘users'),這將指向「views/users.jade」或「views/users/index.jade」。
當使用上面的索引視圖時,我們可以透過partial('users')從同名目錄下引用“views/users/index.jade”,同時視圖系統會嘗試“ ../users/index”,這能減少我們呼叫partial('index')的需要。
以上就是本文的全部內容,希望對大家的學習有所幫助,更多相關內容請關注PHP中文網!
相關推薦:
#SpringBoot和Vue.js實作前後端分離的檔案上傳功能
以上是關於NodeJS框架Express的範本視圖機制分析的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

怎麼處理文件上傳?以下這篇文章為大家介紹一下node專案中如何使用express來處理文件的上傳,希望對大家有幫助!

深入比較Express和Laravel:如何選擇最佳框架?在選擇一個適合自己專案的後端框架時,Express和Laravel無疑是兩個備受開發者歡迎的選擇。 Express是基於Node.js的輕量級框架,而Laravel則是基於PHP的流行框架。本文將深入比較這兩個框架的優缺點,並提供具體的程式碼範例,以幫助開發者選擇最適合自己需求的框架。效能和擴展性Expr

Express和Laravel是兩個非常受歡迎的Web框架,分別代表了JavaScript和PHP兩大開發語言的優秀框架。本文將針對這兩個架構進行比較分析,幫助開發者選擇更適合自己專案需求的框架。一、框架簡介Express是一個基於Node.js平台的Web應用程式框架,它提供了一系列強大的功能和工具,使開發者可以快速建立高效能的網路應用程式。 Express

node+express怎麼操作cookie?以下這篇文章就來跟大家介紹一下用node操作cookie的方法,希望對大家有幫助!

Express與Laravel:對比優劣勢,你會選哪一個?在網路開發領域,Express和Laravel是兩個備受關注的框架。 Express是一個基於Node.js的靈活且輕量級的網頁應用框架,而Laravel是一個基於PHP的優雅且功能豐富的Web開發框架。本文將從功能、易用性、擴展性以及社群支援等方面來比較Express和Laravel的優劣勢,並結合

如何利用React和Express來建構全端JavaScript應用引言:React和Express是目前非常流行的JavaScript框架,它們分別用於建構前端和後端應用。本文將介紹如何結合使用React和Express來建構一個全端JavaScript應用程式。我們將逐步講解如何搭建一個簡單的TodoList應用,同時提供具體的程式碼範例。一、準備工作在開始前

在選擇後端框架時,Express和Laravel都是非常受歡迎的選擇。 Express是基於Node.js的Web應用程式開發框架,而Laravel是基於PHP的Web應用程式開發框架。兩者各有優勢,選擇最適合自己的框架需要考慮多面向因素。 Express框架的優點在於它的靈活性和簡單的學習曲線。 Express的核心思想是“足夠小,足夠靈活”,它提供了大量的中間件

如何使用Node.js建立一個簡單的部落格系統Node.js是一個基於ChromeV8引擎的JavaScript執行環境,可以讓JavaScript的運作速度更有效率。在Node.js的幫助下,我們可以使用JavaScript建立強大的伺服器端應用程序,包括部落格系統。本文將向您介紹如何使用Node.js建立一個簡單的部落格系統,並為您提供具體的程式碼範例。請按
