こんにちわ、hisayukiです。
最近ちょっと立て込んでて、なかなか書く時間が取れないうちに3月も中旬になりました・・・
目標月8枚ですが、最低1枚は書こうと思いますw
今回は以前書いたこちらの記事で紹介したSvelteについて書いていこうと思います。
Svelteとは
まず、軽くて早い
Svelte(スヴェルト)は拡張子が「.svelte」のテンプレートファイルをコンパイルするコンパイラです。
コンパイル後に吐き出されるコードは、Virtual DOM形式のUIを持つピュアなJSファイルとCSSファイルになります。
コンポーネントに必要な機能のみがコンパイルされるため、JSの容量を最小限に抑えことができます。
そしてReact、Angular、Vueのどれよりも高速で軽量なのがウリです。
そしてコード量が少ない!
テンプレートファイルに書くのは主にHTMLとCSS、JSになります。
こちらもReact、Angular、Vueのどれよりも記述量が少なくなります。
個人的にはどんどん使っていきたいのですが、日本の浸透度はかなり低いと思います。
まぁ、日本語ドキュメントはないので😅
あと、ES5サポートを放棄してるのでES5形式で書く場合はBabelを使う必要あります。
コンパイラのスピードを重視するためにES6以上を対象に切り替えたようです。
豊富なサンプル
Svelteは公式ページのサンプル集が非常によく揃ってます。
ちょっとしたアプリ感覚のものもありますので、作りながら試すが楽しく出来ると思います❗
Storeが基本搭載されている
Svelte本体がstoreを内包している!
storeがデフォルトで使えるので、コンポーネント間の値のやり取りもスムーズにすることができます。
これが結構ありがたくて、ReactのReduxのように別途導入する必要がありません。
言語仕様でprop地獄を回避してくれるのは嬉しいですw
svelte-preprocessが優秀
非公式ですがSvelteの要って言うくらい、超大事なパッケージです。
これがないとかなり辛いです。
Typescript対応
「.svelte」のテンプレートファイルのTypescriptについてはsvelte-preprocessがピュアJSに変換してくれます。
ただし、Rootに当たるmain.jsは対象外です。
こちらもmain.tsにしたい場合は、rollup.config.jsにtypescript({ typescript: typescriptCompiler })
を追加する必要があります。
こちらについてはQiitaにまとめてありますので、そちらを参照してください。
![](https://qiita-user-contents.imgix.net/https%3A%2F%2Fcdn.qiita.com%2Fassets%2Fpublic%2Farticle-ogp-background-412672c5f0600ab9a64263b751f1bc81.png?ixlib=rb-4.0.0&w=1200&mark64=aHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTk3MiZoPTM3OCZ0eHQ9JUUzJTgwJTkwU3ZlbHRlJUUzJTgwJTkxJUU2JTlDJTgwJUU0JUJEJThFJUU5JTk5JTkwJUUzJTgxJUFFJUU0JUJGJUFFJUU2JUFEJUEzJUUzJTgxJUE3VHlwZVNjcmlwdCVFNSVBRiVCRSVFNSVCRiU5QyVFMyU4MSU5NyVFMyU4MSVBNiVFMyU4MSVCRiVFMyU4MSVCRSVFMyU4MSU5NyVFMyU4MSU5RiVFMyU4MCU5MCVFNSU4OCU5RCVFNiU5QyU5RiVFOCVBOCVBRCVFNSVBRSU5QSVFMyU4MCU5MSZ0eHQtYWxpZ249bGVmdCUyQ3RvcCZ0eHQtY29sb3I9JTIzMjEyMTIxJnR4dC1mb250PUhpcmFnaW5vJTIwU2FucyUyMFc2JnR4dC1zaXplPTU2JnM9MWU5Yjg0YWY2YTk0ZDI1ZDEwNjU3OWZkOWUzNmI1ZWU&mark-x=142&mark-y=57&blend64=aHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZoPTc2Jnc9NzcwJnR4dD0lNDBoaXNheXVraSZ0eHQtY29sb3I9JTIzMjEyMTIxJnR4dC1mb250PUhpcmFnaW5vJTIwU2FucyUyMFc2JnR4dC1zaXplPTM2JnR4dC1hbGlnbj1sZWZ0JTJDdG9wJnM9OTY4MDk3ZGExN2FmOGMwNzRkOTNhODE3MjU4YzNjZGE&blend-x=142&blend-y=486&blend-mode=normal&s=7f4f8574e9e9d9276d422353ceeb4013)
Sass対応
SassやScssにも対応してます!
scss記法であればそのままで自動的に変換をしてくれます。
sass記法だとrollupjsでpostcssのプラグインに頼る必要があります。
最初はsass記法で環境立てたのですが、多少ですが手間が増えます。
sass記法にこだわりがなければscss記法をオススメします。
Pug対応
<template lang="pug">
で囲われた部分をPug記法として認識してコンパイルしてくれます。
個人的には最初使っていたのですが、そもそもPugそのものにちょっと恩義を感じられなくなってきたので外しました😅
その他
他にもこれだけのパッケージに対応してます。babel
はES5を対応するなど対応範囲を広げる場合に、使う機会がありそうですね。
- babel
- postcss
- coffeescript
- less
- stylus
Rollup.jsの使用
SvelteはビルドにRollup.jsを推奨してるみたいですね🤔
僕自身も初めて使いましたが、さほど使いづらさは感じなかったです。
ただやっぱり、普段Webpackなどを使ってる人からすると多少の学習コストはあります。
CommonJS
とES5以下
は対応してないので、別途プラグインで対応が必要です。
というか、ほとんどの機能はプラグイン拡張なので上記の対応も同じ感覚でやれます。
CSS framework
![](https://qiita-user-contents.imgix.net/https%3A%2F%2Fcdn.qiita.com%2Fassets%2Fpublic%2Farticle-ogp-background-412672c5f0600ab9a64263b751f1bc81.png?ixlib=rb-4.0.0&w=1200&mark64=aHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTk3MiZoPTM3OCZ0eHQ9U3ZlbHRlJUUzJTgxJUE3JUU0JUJEJUJGJUUzJTgxJTg4JUUzJTgyJThCVUklRTMlODIlQjMlRTMlODMlQjMlRTMlODMlOUQlRTMlODMlQkMlRTMlODMlOEQlRTMlODMlQjMlRTMlODMlODglRTMlODMlQTklRTMlODIlQTQlRTMlODMlOTYlRTMlODMlQTklRTMlODMlQUElRTMlODIlOTIlRTMlODElQkUlRTMlODElQTglRTMlODIlODElRTMlODElQTYlRTMlODElQkYlRTMlODElOUYmdHh0LWFsaWduPWxlZnQlMkN0b3AmdHh0LWNvbG9yPSUyMzIxMjEyMSZ0eHQtZm9udD1IaXJhZ2lubyUyMFNhbnMlMjBXNiZ0eHQtc2l6ZT01NiZzPTE0OWQ5ZTcxZGIzNmQzY2ZlZjVlOGIwMThkMGY3Y2Mz&mark-x=142&mark-y=57&blend64=aHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZoPTc2Jnc9NzcwJnR4dD0lNDBvZWthenVtYSZ0eHQtY29sb3I9JTIzMjEyMTIxJnR4dC1mb250PUhpcmFnaW5vJTIwU2FucyUyMFc2JnR4dC1zaXplPTM2JnR4dC1hbGlnbj1sZWZ0JTJDdG9wJnM9YjhhNDBlODE3MzM4YzI1ZGI2MGY4ZjA3Y2I0ODA0MmE&blend-x=142&blend-y=436&blend-mode=normal&txt64=aW4g5qCq5byP5Lya56S-44Ko44Kk44OB44O844Og44Op44Kk44OV44OH44K244Kk44Oz&txt-width=770&txt-clip=end%2Cellipsis&txt-color=%23212121&txt-font=Hiragino%20Sans%20W6&txt-size=36&txt-x=156&txt-y=536&s=a0f3fcb5347ace829a7a34ec1ada078e)
Svelte Material UI
正直まだ辛い💦
今の所まだこれしか使ったことないです。
使えなくはないんですが・・・まだBetaなので色々不備があります。
特にドキュメントが揃ってないので、コンポーネントへの設定値などはDemoサイトのソースをGithubで探すという方法しかありませんw
その他
まだ使ったこと無いのでなんとも言えないですね🤔
MaterialUIが辛いなーって思ったときに、sveltestrap
はちょっと使ってみたいなって思いました。
Bootstrapからの派生なので、比較的使いやすいのかなって思います🤔
まとめ
ちゃんと作っていけばReactやVueよりも使いやすいんじゃないかって思ってます。
コード量もスピード感も増えていくので、そのアタリが開発者には嬉しいですね✨
試み的には面白く、海外では情報も増えてきてはいます。
ただ、日本での情報はカナリ少なくアーリーアダプター向けの言語ではあります。
日本ではまだまだこれからなので、今後伸びていくことを期待してます❗
コメント