🦒 pugファイルの継承について
作成日: 2022/01/09
2

includeと継承の違い

includeは「丸々コピー」
継承は「部分的に変更」
 →title、discription、keywordsをページ毎に変更したい場合有効

まずは前回のinclude同様、丸々コピーしてみる。

現在の階層構造

webpack-tutorial
├dist/
|   ├──css/
|   |   └──style.css
|   ├──js/
|   |   └──bundle.js
|   └──index.html
|
├node_modules/
├src/
|   ├──images/
|   ├──js/
|   |   ├──index.js
|   |   └──sub.js
|   ├──scss/
|   |   └──style.scss
|   └──templates/
|   |   ├──_header.pug //追加
|   |   ├──_headerNav.pug
|   |   ├──index.pug
|       ├──index.html
|   |   └──menu.pug
|
├package-lock.json
├package.json
└webpack.config.js

_header.pug

doctype html
html(lang="en")
    head
        meta(charset="UTF-8")
        meta(http-equiv="X-UA-Compatible", content="IE=edge")
        meta(name="viewport", content="width=device-width, initial-scale=1.0")
        title Document
    body 
        include _headerNav.pug
        block mainContent

index.pug

//- ここから変更
extends _header.pug
block mainContent
    //- ここまで変更
    h1 webpackチュートリアル
        span (SCSSを追加)
    img(src="/src/images/mountain.jpg", alt="")
    img(src="/src/images/sea.jpg", alt="")

menu.pug

//- ここから変更
extends _header.pug
block mainContent
    //- ここまで変更
    h1 メニュー
        span (SCSSを追加)
    img(src="/src/images/mountain.jpg", alt="")
    img(src="/src/images/sea.jpg", alt="")

webpackを起動後、ブラウザ確認

ちゃんとheaderナビも表示されているのを確認。

各ファイルを変更

各ファイルのtitle,description,keywordsを変更してみる。

「titile」と「description,keywords」の書き方が違うので注意!

_header.pug

doctype html

//- ここから追加
block metaTags
    - var description = ''
    - var keywords = ''
    - var title = '';
//- ここまで追加

html(lang="en")
    head
        meta(charset="UTF-8")
        meta(http-equiv="X-UA-Compatible", content="IE=edge")
        meta(name="viewport", content="width=device-width, initial-scale=1.0")
        meta(name="description", content=description)
        meta(name="keywords" content=keywords)
        title #{title}
    body 
        include _headerNav.pug
        block mainContent

index.pug

extends _header.pug

//- ここから追加
block metaTags 
    - var description = 'トップページのディスクリプションです'
    - var keywords = 'サイト, トップ, webpack'
    - var title = 'トップページ'
//- ここまで追加

block mainContent
        h1 webpackチュートリアル
            span (SCSSを追加)
        img(src="/src/images/mountain.jpg", alt="")
        img(src="/src/images/sea.jpg", alt="")

menu.pug

extends _header.pug

//- ここから追加
block metaTags 
    - var description = 'メニューページのディスクリプションです'
    - var keywords = 'サイト, メニュー, webpack'
    - var title = 'メニューページ'
//- ここまで追加

block mainContent
        h1 メニュー
            span (SCSSを追加)
        img(src="/src/images/mountain.jpg", alt="")
        img(src="/src/images/sea.jpg", alt="")

webpackを起動

npm run build

ブラウザで確認

各ページでtitle, description, keywordsが変更されている。


事業会社にてコーダーをしています。制作は6年目。 インプットしたことをアウトプットしています。