JadeとStylusを使った、Pythonicなマークアップの勧め

似たようなレイアウトのHTMLファイルを量産するとき、コンポーネントやモジュールを意識してCSSを設計する時など色々な方法が世の中にはありますが、最近Jade×Stylusが一番学習コスト低く設計できたのではまっています。今回はそんなJade×Stylusの魅力について書いてみます。

まずJadeとStylusの特長を簡単に説明します。

  • インデント強制言語、pythonのような記法をとり、コードの見通しが良い
  • ejsのようなテンプレート言語と異なり、Jadeはextend(継承)やmixinが使いやすい
  • Stylusはscss記法と異なり、{}やセミコロンなど使わなくて済む。変数など直感的に扱える
  • gulpやgruntなどタスクランナーにも対応しているためコンパイルなどの自動化がしやすい
  • JadeもStylusも同じ人が開発しているので、学習コストが低い。

実際のJadeとStylusのコードは以下のようになります。

これだけでも閉じタグがいらない、クラス,ID名だけで済むなどのメリットがあげられます。

colorのように変数を定義したり、percentageのようなscss関数も使えたりします。また&記法でのネストもしやすいです。

このようにJadeもStylusもクラス,id名だけで管理できて、インデントを意識して中に記述を書いていくためテキストエディタを分割して、実装する際に同じような記述が並び見通しがスムーズです。

 

今回は、JadeとStylusを使ったより開発効率を上げる例を上げてみたいと思います。

Jadeは継承(extend)を使う事で開発が爆速になりますので簡単なサンプルを用意してみました。

1.まずベースとなるレイアウトを以下のように作ります。

このように一度、ベースのレイアウトを仮組して、blockで渡す中身だけを継承先で変える事ができます

またgulpなどを設計する際は、optionのbasedirで、ベースのディレクトリを設定することで、相対パス地獄から抜ける事も出来るのでおすすめです。

2.テンプレートを作成したら、それを継承先で読み込み、以下のように記述していきます。

以下がコンパイル後のHTMLソースコードです。

このように骨組みのテンプレートだけ作り、継承先で必要な記述を書くとコードを書く量は大幅に削減され、量産を行う際も必要な情報だけを記述するだけで済むので開発は爆速になります。

タイトルやメタ情報なども変数として扱うと見通しも良くなります。extend元のテンプレートにはincludeやmixinの読み込みもできるので、パーツごとにJadeファイルを整理するとより見通しも良くなります。

このように、JadeとStylusを組み合わせれば、不必要な記述も減り開発効率は以前より増すはずです!  

今回はざっくりと概要を説明しましたので、基本的な記述方法などは、公式のドキュメントを読んでいただければと思います。

以上、Jade×Stylusでpythonicなマークアップのすすめでした。

●この記事を書いた人