Deno Fresh環境の構築とチュートリアル

少し前になるが、DenoにおけるフロントエンドWeb開発フレームワークとしてFreshがリリースされている

https://fresh.deno.dev/

今月のWEB+DB Press の裏表紙を見たら、Denoが広告を打っていて超びっくりした

せっかくなのでさわりとして、いくつかの情報をまとめた

Denoとは

Node.js の作者であるライアン・ダール氏によって作成された、Node.jsにおける反省点を踏まえて作られたJavaScript 及び TypeScript のランタイム環境

Node.js環境下では、TypeScriptはトランスパイラを通したりビルドしたりする必要があるがDenoはTypeScriptをそのまま実行することができるようになります。

特にNode.jsと比較して強化されているのはセキュリティ周りです。
Denoはデフォルトでサンドボックス内で動作する形を取っているため、明示的にアクセスを許可してあげないとファイルシステムなどへのアクセスの確認が頻発したりします。

Fresh

TypeScriptのランタイム環境としてのDenoは、それはそれでTypeScript使いに取ってはいいものに見えましたが、Webフロントエンド開発は別に用意する必要がありました。

ところが、今年の7月にDeno用のフルスタックWebフレームワークとしてFreshをリリースしました

ちなみに、8/16現在でバージョンは1.0.2
できたてホヤホヤですな

Freshの特徴としては Islands Architecture を採用しており極力SSRで処理を行う形でクライアント側でのJavaScript配信を行わないような思想のようです

Islands Architecture
https://www.patterns.dev/posts/islands-architecture/

環境構築とチュートリアル

せっかくなので環境はDockerを使ってやろうと。
このあたりは、あちこち参考にさせていただきながらやっているのでツッコミどころは満載かも知れないが、誰かの役に立てればと思いDockerFileを公開する

FROM debian:stable-slim

WORKDIR /var/www/html

RUN apt-get -qq update \
  && apt-get -qq -y install curl zip unzip \
  && curl -fsSL https://deno.land/x/install/install.sh | sh \
  && apt-get -qq remove curl zip unzip \
  && apt-get -qq remove --purge -y curl zip unzip \
  && apt-get -qq -y autoremove \
  && apt-get -qq clean \
  && echo 'export DENO_INSTALL="/root/.deno"' >> ~/.bash_profile \
  && echo 'export PATH="$DENO_INSTALL/bin:$PATH"' >> ~/.bash_profile

CMD ["/bin/bash", "-c", "source ~/.bash_profile && bash"]

チュートリアルに関しては公式を参照

Getting Started
https://fresh.deno.dev/docs/getting-started

Denoでは、Deploy先としてDeno Deployというエッジ環境を提供してくれているので、Githubと連携させたりしてPush=Deployの環境の構築も簡単にできた。

チュートリアルがうまくいかない?

Deno の Web フレームワーク Fresh チュートリアル
https://zenn.dev/azukiazusa/articles/fresh-tutorial

チュートリアルを用意してくれている人もいたので、こちらもやってみた。
ただ、スタイルの適用が何故かうまく行ってくれずに困っている

https://krote–ample-resh.deno.dev/blog

このあたり、フロントエンド開発はからっきしなので、ちょっと詰まってしまったなぁ。
開発者ツールで見る限りでは、想定した通りのclassが割り当てられているようにみえるんだけど。。。

まだまだですねぇ
教えて、偉い人。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください