koa流程
1、 EJS模板引擎的使用:
1、1 安裝koa-views和ejs:
npm install koa-views --save
npm install ejs --save
1、2 引入koa-views配置中間件:
const views = require('koa-views')
/**引入koa-views配置中間件:指定模板文件的目錄,ejs為模板引擎*/
(views(__dirname + '/views', {
map: {html: 'ejs'}
}))
上面的代碼中,指定了模板文件的目錄為/views,且使用ejs做為模板引擎。
1、3 在Koa中使用ejs:
通過er(', data:data),向模板文件傳遞數據:
/*Koa代碼*/
('/', async (ctx, next)=>{
let title = 'Hello Joyitsai'
await er('index', {title: title})
})
1、4 ejs綁定上面發送的數據用等號<%=title%>:
<!--html模板代碼-->
<!DOCTYPE html>
<html lang="en">
<head></head>
<body>
<h3><%=title%></h3>
</body>
</html>
1、5 ejs綁定html語句:
如果從後端傳送的數據是html語句,那麼要用<%-data%>來解析html語句:
('/', async (ctx, next)=>{
let data = '<h2>這是從後端發來的html語句</h2>'
await er('index', {data:data})
})
<!DOCTYPE html>
<html lang="en">
<head></head>
<body>
<!--解析後端發送的html語句用減號-->
<%-data%>
</body>
</html>
1、6 ejs引入模板:
在實際開發中,像導航欄這樣公共的頁面結構會單獨分離成一個模板文件,然後在其他頁面中直接導入即可,同樣,這裏也可以通過<%include %>引入模板頁面,模板文件結構如下:
|——
|—— ...
|——views
|——public
|——
|——
其中,為要在中引入的模板,那麼引入代碼如下:
<!--public/-->
<h2>這是頭部信息頁面</h2>
<!-->
<!DOCTYPE html>
<html lang="en">
<head></head>
<body>
<!--默認views/為主目錄了,引入路徑不加雙引號或單引號-->
<%include public/%>
</body>
</html>
1、7 ejs模板判斷語句:
在ejs模板中。..語句要包在<%%>中
/**後端代碼*/
('/', async (ctx, next)=>{
let age = 24
await er('index', { age:age})
})
<!DOCTYPE html>
<html lang="en">
<head></head>
<body>
<%if(age>20){%>
大於20歲
<%}else{%>
小於等於20歲
<%}%>
</body>
</html>
1、8 ejs模板中的循環數據:
同樣,將for(var i=0i&thi++){}循環包含在<%%>中,示例代碼如下:
/**後端代碼*/
('/', async (ctx, next)=>{
let datalist = ['joyitsai', 'ming', 'bob']
await er('index', {datalist:datalist})
})
<body>
<br/>
<ul>
<%for(var i=0i&thi++){%>
<li><%=datalist[i]%></li>
<%}%>
</ul>
</body>
另外,如果需要在每一個頁面都要獲取像用户信息這樣的數據,每次er()時都傳遞這個數據會比較麻煩,解決辦法是,通過e = {data:data}來設置公共數據,綁定在e上的數據,可以在任何一個頁面中直接調用,而不需要通過er()來傳遞了。
關於ejs模板引擎的一些常用用法都列舉出來了,多多練習就記熟了,其實並沒什麼難度。
2、 art-template模板引擎的使用:
art-template是常用模板引擎中渲染速度最快的,看下面一張測試圖:
image.png
art-template支持ejs語法,所以可以完全按照ejs的語法來寫。
2、1 安裝art-template引擎:
npm install art-template --save
npm install koa-art-template --save
2、2 引入並配置art-template:
const Koa = require('koa')
const render = require('koa-art-template')
const path = require('path')
const app = new Koa()
render(app, {
root: (__dirname, 'views'), //模板文件所在目錄
extname: ', //聲明模板文件的後綴名
debug: _ENV !== 'production' //是否開啟調試模式
})
2、3 art-template模板引擎語法:
基本與ejs的相同,除引入其他模板文件除外,在art-template中,引入其他模板文件的語法如下:
<body>
<!--art-template中引入模板時要加括號和引號-->
<%include(')%>
<h3><%=title%></h3>
</body>
其他語法自行參考官方文檔:art-template語法。