## 前提条件 [[Deno]]と[[TypeScript]]がインストールされている。 ```console $ deno --version deno 1.23.3 (release, x86_64-pc-windows-msvc) v8 10.4.132.8 typescript 4.7.4 ``` ## プロジェクト作成 Getting startedに従う。 <div class="link-card"> <div class="link-card-header"> <img src="https://fresh.deno.dev/favicon.ico" class="link-card-site-icon"/> <span class="link-card-site-name">fresh.deno.dev</span> </div> <div class="link-card-body"> <div class="link-card-content"> <div> <p class="link-card-title">fresh - The next-gen web framework.</p> </div> <div class="link-card-description"> Just in time edge rendering, island based interactivity, and no configuration TypeScript support usi... </div> </div> <img src="https://fresh.deno.dev/home-og.png?__frsh_c=q6f2cvd4157g" class="link-card-image" /> </div> <a href="https://fresh.deno.dev/#getting-started"></a> </div> ```console deno run -A -r https://fresh.deno.dev fresh-sandbox ``` [[Twind]]を使うか聞かれるのでyes。 ## 起動 ```console cd fresh-sandbox deno task start ``` `localhost:8000`にアクセスするとページが表示される。 ![[Pasted image 20220710215834.png]] [[tsx]]ファイルを変更すると自動でリロードされる。ラグが2~3秒あり、[[Vite]]ほどのサクサク感ではない。コードが増えたときにラグがどこまで増えるかは気になる。 ## ルーティング `routes`ディレクトリ配下がルーティングされる。 - View - `localhost/hoge` で `[name].tsx`に対応 (`name = hoge`) - API - `localhost:8000/api/joke`で`api/joke.ts`に対応 ## [[IntelliJ IDEA]]で開く 当たり前だが、プラグインなしでは動かなかった。[[Deno (IntelliJ)]]が必要。 > [!caution] > 定義へ移動などができない(固まる)場合は[[IntelliJ IDEA]]を再起動したらなおった。 ただ、[[tsx]]ファイル内で[[Preact]]の型定義が`any`になってしまう。 ```ts import { useState } from "preact/hooks"; ``` これで開発はキツそう... [[Deno (IntelliJ)]]の評価も高くないので[[VSCode]]も試す。 ## [[VSCode]]で開く もう一度プロジェクト作成をしなおす。[[VSCode]]を使うか? と質問されるところでyes。 ```console deno run -A -r https://fresh.deno.dev fresh-sandbox ``` [[IntelliJ IDEA]]と同様に、[[Deno (VSCode)]]が必要。[[VSCode]]だと`useState`も完璧に候補や型定義が補完される。 ## [[VSCode]]と[[IntelliJ IDEA]]の違い 定義へ移動したときのファイルが異なるようだ。 - [[IntelliJ IDEA]]では `[email protected]/deno/hooks.js` を見る - [[VSCode]]では `[email protected]/hooks/src/index.d.ts` を見る 現状、[[Fresh]]を[[IntelliJ IDEA]]で使う必要性はないので深追いせずここまでとしておく。 ## 感想 - 😁 30秒ほどでUI/APIを兼ね備えた[[TypeScript]]プロジェクトが作れるのは強い - 😃 久々に[[React]]の書き方をしたが、そんな違和感もない (正確には[[Preact]]だが...) - 😃 [[Tailwind CSS]]は普段使わないが、[[JSX]]にガンガン書けるので便利そう - 😃 ここ2年くらい[[Deno]]試しては苦労ばかりしたけど、今回は楽だった - 😃 [[SSR]]の経験ほぼないので、機会があれば使ってみたい - 😃 [[Deno Deploy]]で簡単にデプロイできそうなので、プライベートで試してみたい - 😅 [[IntelliJ IDEA]]でも書けるようになってほしい