昨日書いた「もしも今新しいサービスを作るならどういう技術を採用するか」 で Svelte とか NestJS 触ってみたい的なことを書いたので、早速触ってみた。
TODOアプリにすらなってないくらいだけど、とりあえずCURD的なことをサーバーサイド・クライアントサイドの両方でやってみれた。
ちゃんとZennに書くほどの内容はないので、雑に感想を記録しておく。
Svelte
SvelteTodoClient
https://github.com/takyam-git/svelte-todo-client
とりあえずセットアップしてコードを見ると $: xxx = xxxx
みたいなのがTS書くエリアにでてきて、「キモッ」って感想になった。
が、これはドキュメントにも書いてあるんだけど、一応JS標準の「label」って機能が使われてるだけで、構文自体が独自なわけではなかった。
「これはリアクティブな値です」をlabelっていう実行時には意味のなくなる構文で表現してるのは、むしろイケてるんじゃ?という気持ちに最終的には落ち着いた。
ルーティングももう細かいことはなくて、 /path/to/+page.svelte
っていう +page.svelte
ってファイル名のところがルートになる感じ。
ページやコンポーネントの書き味としては、かなりVueのSFCと似たようなもん。
Vueより抽象化が進んでる印象は受けた。 xxx.value
とか書かなくていいし、より楽に書けるのはSvelteって感じ。
CSSも同じファイル内で書けるしSCSSも普通に使える。
Svelte自体がSSRありき・・・とまでは言わんけど、無効にしない限りはSSRが使われるので、Nuxt使うくらいならSvelteでやったほうがいいと思う。
過去の資産とかあるならアレだけど、新規プロジェクトですよ〜Svelteですよ〜は全然アリな気がした。
NestJS
NestJsTodoServer
https://github.com/takyam-git/nestjs-todo-sever
Express/Koa以来にちゃんとNodeJSでサーバーサイドWebアプリ書いた気がする。何年ぶりだ。
とりあえずREST APIで作ってみたけど、まぁちゃんとしてる。
GraphQLもデフォでいい感じに対応してるっぽいから、それもアリっぽい。
ドキュメントもかなりしっかりしてるし、ググって出てくる情報量も多いので、そんなに詰まるところはなかった。
デコレータ多様してるからメタい雰囲気は強いけど、お作法に従ってる範囲内では難しくない印象。
ORMは何使ってもよさそうな事書いてあったけど、とりあえずデフォ?っぽいTypeORMで書いてみた。
Entityという名のActiveRecordなので、まぁ普通の感覚で書ける。
なんていうかRailsとかLaravelとかと似たような空気は感じた。良くも悪くも。
予想以上にちゃんと普通のフルスタックWebフレームワークだったので、サーバーサイドをNestJSにするも全然ありかなぁ。
Entity作ったら、勝手にテーブルまで作られたところだけ怖いからそこの動作はちゃんと調べないとアレかなとは思った。
まとめ
なんか適当にX(Twitter)見て「NestJSよさそう」「Svelteよさそう」って思ってたけど、実際悪くなかった。
いやーほんとNestJSが思ったより良かったから、前も後ろもTSでやります、がかなり現実的な世界に思えてきた。