在vue里如何使用pug模板引擎
vue使用pug模板引擎
pug,原名jade,是流行的HTML模板引擎,它是HAML在JavaScript上的實現(xiàn),最大的特色是使用縮進排列替代成對標簽。
在vue中使用的話 需要事先安裝依賴
#安裝支持pug依賴 npm install pug pug-loader pug-filters -D #安裝支持jade依賴 npm install jade jade-loader -D
后在你的vue項目文件中的webpack.base.conf.js中,在module的rules節(jié)點下添加配置:
{
test: /\.jade$/,
loader: "jade"
},
{
test: /\.pug$/,
loader: 'pug'
}然后在template標簽中 lang=“pug” 即可啟用
當然 怎么用就得去官網(wǎng)查看了 pug官網(wǎng)
pug模板引擎基本用法
Pug是jade的新版,jade由于商標已被注冊,所以更名為pug。
縮進標注:Pug模板和大多數(shù)模板不同,它有自己的語法特點,采用縮進的方式進行標注,使用這種方式,使得代碼更加清晰。
無尾標簽:這種語法不需要類似 /html 這樣的尾標簽。
文本書寫:在標簽后 +空格+內(nèi)容 的方式進行書寫文本,例如下面代碼中 h1后跟的 website即為標題名文本。
屬性添加:在標簽后用()括號對屬性進行編寫。
//views文件夾下index.pug文件
html
head
title Home
link(rel="stylesheet" href="/lib/bootstrap/css/bootstrap.min.css" rel="external nofollow" )
script(src="/lib/bootstrap/dist/js/bootstrap.min.js")
style
include myStyle.css
body
div(class='container')
h1 website
div(class='row')
div(class='col') column1
div(class='col') column2
div(class='col') column3
script
include myScript.js
引入方式:
自編寫文件:使用include +文件名對文件進行引入。
第三方包文件:在服務(wù)器上通過nodejs結(jié)合express方式,使用app.use引入中間件。(此處例子導入bootstrap,需提前安裝—— 在命令行通過npm install bootstrap進行安裝)
//server.js文件
const express = require('express')
const app = express()
const expressPort = 3000
app.listen(3000, () => {
console.log(`App listening on port ${expressPort}`);
})
app.set('view engine','pug');
//通過app.set方式讓pug進入node項目中
//app.set('views','./views'),pug默認地址會在一個叫views的文件夾里
app.use('/lib/bootstrap',express.static('node_modules/bootstrap/dist'))
//use方法作用:即引入一個所謂的中間件(將工作目錄中動態(tài)文件變成靜態(tài)文件提供給服務(wù)器)
//引用提前安裝好的bootstrap(npm init bootstrap)
//'/lib/bootstrap'是一個虛擬地址,并不存在這個文件夾,但是可以通過這個路徑對bootstrap文件進行訪問。
app.get('/',(req,res)=>{
res.render('index');
})傳參方式:具體為在后端代碼中與pug模板引擎的傳參方式。
在server.js后端代碼中準備好傳參數(shù)據(jù):
app.get('/',(req,res)=>{
const options={
name:'WangJunjie',
age:'21'
}
res.render('index',options); //options為傳入?yún)?shù),直接在統(tǒng)一作用域中進行調(diào)用
})在index.pug文件中進行使用(通過 #{ } 的方式):
body
div(class='container')
h1 #{name}'s website //通過#{參數(shù)內(nèi)部屬性名}方式
div(class='row')
div(class='col') column1
div(class='col') column2
div(class='col') column3
script 
這樣就拿到了后端中的name數(shù)據(jù),將name數(shù)據(jù)渲染到.pug文件上了。
同時,可以通過 script.的方式,將后端代碼中的變量賦值給前端代碼:
body
div(class='container')
h1 website
div(class='row')
div(class='col') column1
div(class='col') column2
div(class='col') column3
script.
const name = '#{name}';
const age = '#{age}';
script
include myScript.js特殊字符:
- “|” ,|后的字符會被原樣輸出。
- “.” ,.表示下一級的所有字符都會被原樣輸出,不再被識別。是|的升級版,實現(xiàn)批量處理。
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
vue2+elementui上傳照片方式(el-upload超簡單)
這篇文章主要介紹了vue2+elementui上傳照片方式(el-upload超簡單),具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-03-03
詳解如何提高 webpack 構(gòu)建 Vue 項目的速度
這篇文章主要介紹了詳解如何提高 webpack 構(gòu)建 Vue 項目的速度,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-07-07
vue3項目配置按需自動引入自定義組件unplugin-vue-components方式
這篇文章主要介紹了vue3項目配置按需自動引入自定義組件unplugin-vue-components方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-03-03
Vue數(shù)據(jù)變了但頁面沒有變的幾種情況及解決方法
如果,你發(fā)現(xiàn)自己需要在Vue中做一次強制更新,99.99%的情況,是你在某個地方做錯了事,本文給大家就介紹了Vue數(shù)據(jù)變了,但頁面沒有變的幾種情況及解決方法,并通過代碼示例介紹的非常詳細,需要的朋友可以參考下2024-08-08
vue-seamless-scroll 實現(xiàn)簡單自動無縫滾動且添加對應(yīng)點擊事件的簡單整理
vue-seamless-scroll是一個基于Vue.js的簡單無縫滾動組件, 基于requestAnimationFrame實現(xiàn),配置多滿足多樣需求,目前支持上下左右無縫滾動,單步滾動,及支持水平方向的手動切換功能,本節(jié)介紹,vue添加 vue-seamless-scroll實現(xiàn)自動無縫滾動的效果,并對應(yīng)添加點擊事件2023-01-01

