## 前提条件 [[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-v2"> <div class="link-card-v2-site"> <img class="link-card-v2-site-icon" src="https://fresh.deno.dev/favicon.ico" /> <span class="link-card-v2-site-name">fresh.deno.dev</span> </div> <div class="link-card-v2-title"> Fresh - The simple, approachable, productive web framework. </div> <div class="link-card-v2-content"> Fresh features just-in-time edge rendering, island based interactivity, and zero-configuration TypeScript suppor ... </div> <img class="link-card-v2-image" src="https://fresh.deno.dev/og-image.webp?__frsh_c=2c36becff09efdcb6ffd9f482200fbf6bb88735d" /> <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]]でも書けるようになってほしい