【Vue.js】 SCSS や LESS を使う方法
やりたいこと
Vue.js で scss
やless
を使ってみたい。ということで Vue.js + scss
の環境とVue.js + less
の環境を構築してみる。そして、どちらとも少し利用してみる。
Vue.js + SCSS
Vue CLIで簡単にSCSSを入れる
まずは、scssを入れてみる。これはVue CLIで簡単にインストールできる。試してみたところ、scssが2つあった。なんで?
Vue CLI v3.7.0 ? Please pick a preset: Manually select features ? Check the features needed for your project: Babel, TS, CSS Pre-processors, Linter ? Use class-style component syntax? No ? Use Babel alongside TypeScript for auto-detected polyfills? Yes ? Pick a CSS pre-processor (PostCSS, Autoprefixer and CSS Modules are supported by default): ❯ Sass/SCSS (with dart-sass) Sass/SCSS (with node-sass) Less Stylus
以下の二つ。
sassの実装言語が違うみたい。dart-sassの方が新しいので、せっかくだからdart-sassを使ってみる。
Nesting
ネストしてかけるのがいいよね!template言語ブロックのネストに合わせてstyle言語ブロックでネストできるのが好きな感じ。
<template> <ul id="app"> <li>hoge</li> <li>fuga</li> <li>hogeo</li> </ul> </template> <script lang="ts"> import Vue from "vue"; export default Vue.extend({ name: "app" }); </script> <style lang="scss"> #app { text-align: center; li { color: red; } } </style>
Operators
計算ができるようになりみたい。calcとは違うのかな?よくわからない。でも、わざわざcalcと書かなくてもいいのは嬉しい。
<template> <ul id="app"> <li>hoge</li> <li>fuga</li> <li>hogeo</li> </ul> </template> <script lang="ts"> import Vue from "vue"; export default Vue.extend({ name: "app" }); </script> <style lang="scss"> #app { text-align: center; li { min-height: 10px + 10px + 10px; } } </style>
browserで見たときのcss。しっかり30pxになってる。
#app li { min-height: 30px; }
インラインで計算したらどうなるの?
できなかった。
Vue.js + LESS
Vue CLI で簡単にLESS入れる
今度は、lessを触ってみる。こちらもVue CLIで簡単にインストールすることができる。
Vue CLI v3.7.0 ? Please pick a preset: Manually select features ? Check the features needed for your project: Babel, TS, CSS Pre-processors, Linter ? Use class-style component syntax? No ? Use Babel alongside TypeScript for auto-detected polyfills? Yes ? Pick a CSS pre-processor (PostCSS, Autoprefixer and CSS Modules are supported by default): Sass/SCSS (with dart-sass) Sass/SCSS (with node-sass) ❯ Less Stylus
Nesting
ネストができる。
<template> <ul id="app"> <li>hoge</li> <li>fuga</li> <li>hogeo</li> </ul> </template> <script lang="ts"> import Vue from "vue"; export default Vue.extend({ name: "app" }); </script> <style lang="less"> #app { text-align: center; li { color: red; } } </style>
Operators
計算もできる。
<template> <ul id="app"> <li>hoge</li> <li>fuga</li> <li>hogeo</li> </ul> </template> <script lang="ts"> import Vue from "vue"; export default Vue.extend({ name: "app" }); </script> <style lang="less"> #app { text-align: center; li { min-height: 10px + 10px + 10px; } } </style>
scssと何が違うの?
疑問に思った。cssを生成する言語が違うことはなんとなくわかった。lessはnode.jsで、sassはdartかrubyらしい。
google trend で比較してみたけど、sassの方が検索されてるみたい。
要調査。
まとめ
scssとlessは、どちらも簡単にVue CLIでインストールすることができる。それに直感的に扱うことできる。これからは、より良いcssライフを送ることができそう。
参考文献
- Sass: Sass Basics,入手先 https://sass-lang.com/guide
- Getting started | Less.js 入手先,http://lesscss.org/