nuxtにpugを入れてみた。

javascript

nuxtでpugを使ってみました。
インストール方法と、pugの使い方を簡単に記載しています。

pugとは

HTMLを効率的に書くためのテンプレートエンジンです。
インデントに意味を持たせて、終了タグを省略したり、クラス属性を簡単につけれたり
慣れるとHTMLを書くスピードが上がります。

インストールする

yarnを使っているので、下記でインストールしました。
(エラーが発生したので、内容を後述しています)

yarn add pug pug-loader pug-plain-loader 

使ってみた

書いてみたコード

<template lang="pug"> 
  v-rows 
    v-col(cols='12') 
      v-card 
        v-card-title Pugで書いてみた 
        v-card-text.font-weight-bold 
          hr.mb-2 
          div pugでいろいろ書いてみるテスト 
          div タグ名.クラスでクラスがつけれる 
          div 属性はタグ名(属性='属性値')でつけれる 
          v-btn(color="primary" @click="clickTest()") 
            span ボタン 
          hr.mt-2.mb-2 
</template> 

<script> 
  import Logo from '~/components/Logo.vue' 
       import VuetifyLogo from '~/components/VuetifyLogo.vue' 

  export default { 
      components: {}, 
      methods: { 
        clickTest: function() { 
          alert("Hello!!"); 
        }   
      },  
  } 
</script> 

やっていること

使う時は、templateタグのlang属性に指定して使います。

<template lang="pug"> 

終了タグは書かずに開始タグだけ書いて、タグの中の要素はインデントします。

  v-rows 
    v-col(cols='12') 
      v-card 

上記のように書くと、v-rowsの下にv-colがあって、その下にv-cardがある感じです。
インデントに意味を持っているので、しっかりインデントしないと意図した表示ができません。

チーム内でインデントしない人が出てこないので、
コードが綺麗になって、みやすくなるのでいいですね。

クラスを付与する

タグにクラスをつける時は、タグ名の後ろに「.」を書いてその後にクラス名を書きます。

hr.mt-2.mb-2 

上記はhrタグにmt-2, mb-2のクラスを適用しています。

属性の値を設定する

属性値を設定する時は、タグの後ろに「()」で囲んで、属性=”値”で設定します。

v-btn(color="primary" @click="clickTest()") 

上記のように書くと、color属性にprimaryを設定しているのと、
@clickでクリックした時のイベントを設定しています。

エラー

pugをyarnインストール際にエラー発生。
xcodeを入れたら解決しました…

gyp: No Xcode or CLT version detected! 
gyp ERR! configure error  
gyp ERR! stack Error: `gyp` failed with exit code: 1 
gyp ERR! stack     at ChildProcess.onCpExit (/usr/local/Cellar/node/13.7.0/libexec/lib/node_modules/npm/node_modules/node-gyp/lib/configure.js:351:16) 
gyp ERR! stack     at ChildProcess.emit (events.js:321:20) 
gyp ERR! stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:275:12) 
gyp ERR! System Darwin 19.3.0 

サンプル

コメント

タイトルとURLをコピーしました