日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Pug/jade快速上手教程

發布時間:2024/8/1 编程问答 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Pug/jade快速上手教程 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 1.為什么要使用模板引擎
  • 2. pug的介紹
    • 2.1關于pug的一特點:
    • 2.2 pug的安裝
  • 3.pug語法
    • 3.1 標簽語法
    • 3.2 屬性
    • 3.3 文本
    • 3.4 pug條件語句
    • 3.5 pug循環語句
    • 3.6 mixin混合
    • 3.7 模板繼承
      • 3.7.1 在pug中支持block和extends來繼承模板
      • 3.7.2 包含
  • 4. express渲染

1.為什么要使用模板引擎

在nodejs中為什么要使用模板引擎。首先我們先想象一個場景,當前端請求到后端的一組數據后,我們要渲染dom,以前的常規操作就是使用js進行字符串的拼接,這樣做雖然可以解決問題,但是這無疑增加了降低了代碼的可讀性和可維護性。一旦需求發生改變我們將束手無策。

在express框架中有很多模板引擎供我們選擇。ejs、pug\jade等。

2. pug的介紹

實際上pug就是jade,jade改名后就成了pug。下面我們介紹一下pug的基本語法以及在express框架的使用。

pug 是一個高性能的模板引擎,它深受 Ham影響,它是用 JavaScript 實現的,并且可以供 Node 使用。 通 過一套語法把某一段靜態的模板,通過模板引擎將動態的數據替換進去,然后將生成的html交給瀏覽器去解析和渲 染。

2.1關于pug的一特點:

1.超強的可讀性

2.客戶端支持

3.靈活易用的縮進

4.安全,默認代碼是轉義的

5.命令行下編譯jade模板

6.模板繼承

7.塊擴展

8.編譯及運行時的上下文錯誤報告

9.HTML5模式

10.可選的內存緩存

11.聯合動態的靜態標記類

12.利用過濾器解析樹的處理

13.沒有前綴的標簽

14.原生支持 express 模塊

2.2 pug的安裝

首先要想使用pug先要進行全局安裝。

npm i pug -g//全局安裝npm i pug-cli -g//全局安裝腳手架

在項目中使用 pug時,還需要進行局部安裝。

npm init //安裝package.jsonnpm i pug --save-dev //局部安裝

編譯

pug pug文件名 -o 目標路徑 -P -w

vscode可以安裝插件進行編譯(不適合在項目中使用):

Sass/Less/Stylus/Pug/Jade/Typescript/Javascript Compile Hero Prowscats.eno預覽版

3.pug語法

基本骨架:

doctype html html(lang="en")headmeta(charset="UTF-8")meta(http-equiv="X-UA-Compatible", content="IE=edge")meta(name="viewport", content="width=device-width, initial-scale=1.0")title Documentbody

3.1 標簽語法

每層級標簽之間都采用多一個縮進表示嵌套關系,無需閉合標簽,無需尖括號。

h1 這是一個pug模板案例divullispanpinput

上述代碼的 li 元素比 ul元素多一個縮進,則表示 ul嵌套了 li 標簽。

3.2 屬性

  • 標簽屬性看起來與html相似,但是它們的值只是一般的JavaScript。
  • div(class="box") this is a div elelement
  • 可直接運行javascript變量
  • - var bool = true div(class=bool?"true":"false") // 三元運算
  • 當屬性很多時,可以換行顯示。
  • - var bool = true div(class=bool?"true":"false") // 三元運算
  • 布爾屬性(默認為true)。
  • input(type='checkbox', checked)
  • 樣式屬性(可以是字符串,也可以是對象)。
  • p(style="color:#999999;font-size:18px") h2(style={color:"#666666","font-size":"20px"})
  • 類屬性(可以是字符串,像普通屬性,也可以是數組)。
  • div.foo div.foo.bar div(class="foo bar") -var classes = ['box1','box2','box3'] div(class=classes) div.bing(class=classes)
  • id屬性。
  • div#box1 div(id="box2") // 由于div是標簽常見的選擇,所以可以省略,也是標簽的默認值 .oh #no #foo.oh.no

    3.3 文本

    若要輸出文本非常簡單,只需在元素后面添加即可。

    h1 這是一個h1標簽 .box hello pug

    動態輸出內容:

    - var obj = {name:'tom'} p #{obj.name} is a man

    輸出屬性值:

    - var url = 'http://www.baidu.com' a(href=url) 百度一下

    3.4 pug條件語句

    pug支持純原生的javascript,所以也可以支持條件語句。

    - var flag = true if flag p= flag else p= flag

    3.5 pug循環語句

    pug提供了兩種迭代的主要方法,each和while,當然,for循環還是可以使用的。

    for:

    - var arr = [1,2,3,4,5] ul - for(var i=0;i<arr.length;i++) li= arr[i]

    each:

    - var arr = {name:'binge',six:'man'} ul each val in arr li= val

    while:

    ul while num<5 li= num++

    3.6 mixin混合

    相當于函數,可傳參

    骨架:

    //- 定義函數 mixin study //- 代碼塊p good good study //- 函數的調用 + study

    實例:

    mixin show(time)h3= time//- 判斷是否存在blockif block blockelse p no show +show('2017-11-11') p Singing and dancing //block

    3.7 模板繼承

    3.7.1 在pug中支持block和extends來繼承模板

    在項目中經常出現代碼塊復用的情況。比如html文檔的head部分。所以我們可以將其抽離出來作為公共模塊。

    例子:

    common.pug

    doctype html html head title pug模板body h1 pug模板//- 哪個文件繼承,就調用哪個文件的block為content的模塊block content

    index.pug使用:

    // extends繼承語法,common,繼承的文件的路徑 extends common block content mixin show(name,...shows) p=name ul each show in shows li= show +show('binge','唱歌','跳舞','睡覺')

    生成的hmtl文件:

    <!DOCTYPE html> <html> <head> <title>pug模板</title> </head> <body> <h1>pug模板</h1> <p>binge</p> <ul> <li>唱歌</li> <li>跳舞</li> <li>睡覺</li> </ul> </body> </html>

    3.7.2 包含

    pug允許在文件中插入另一個文件內容。

    common.js

    doctype html html head //- 引入header.pug include header body h1 pug模板block content

    header.pug

    title pug模板 meta(charset="utf-8")

    生成html:

    <!DOCTYPE html> <html><head><title>pug模板</title><meta charset="utf-8"></head><body><h1>pug模板</h1></body> </html>

    4. express渲染

    express中使用pug/jade實際上非常容易。

    我這里使用生成器生成express mvc架構。

    使用方法(新建路由文件):

    var express = require('express'); var router = express.Router();/* GET home page. */ router.get('/', function(req, res, next) {res.render('index', { title: 'Express' }); }); router.get('/index',(req,res,next)=>{res.render('test'); })module.exports = router;

    至于具體實現可以看一下express架構的實現。

    這是普通使用:

    var express = require('express'); var app = express(); var bodyParser = require('body-parser'); app.set('views','./views'); //設置應用程序視圖的目錄(可以是數組,若是數組,則視圖按照它們在數組中出現 的順序進行查找) app.set('view engine','jade'); //設置當省略后綴名時,使用默認的引擎擴展 app.use(bodyParser.urlencoded({ extended: true })); //解析application/x-www-formurlencoded app.get('/',function(req,res){res.render('jade',{title:'index page',user:{username:'tom',password:123456}}) }) app.listen(8888,function(){console.log('project running at http://127.0.0.1:8888') })

    總結

    以上是生活随笔為你收集整理的Pug/jade快速上手教程的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。