4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Denoを今更触ってみたとVue開発の現状

Last updated at Posted at 2022-10-05
1 / 16

Denoについて

DenoはNode.jsに代わる次世代のjavascript/typescriptのランタイムです。
Node.jsの作者であるライアン・ダール氏自身が、Node.jsが抱える問題点を改善すべく開発されました。


…余談ですが

Denoって名前可愛いですよね🦕

Denoはnodeのアナグラムらしいです。


Denoのインストール

インストールの公式ドキュメントはこちら
ここではwsl上でのインストールについて記載します。

curl -fsSL https://deno.land/install.sh | sh

.bashrcにパスを通すためのコードを追記します。
これも上記コマンド実行後に出力されたテキストをコピペしただけです。

# deno global
export DENO_INSTALL="/home/{username}/.deno"
export PATH="$DENO_INSTALL/bin:$PATH"

Denoプロジェクトの作成

Denoプロジェクトを作成するには以下のコマンドを実行します。

deno init project_name

これで生成されるのは以下の構成になります。

project_name
├── main.ts
└── main_test.ts

実はDenoにはnpmで使われていたpackage.jsonnode_moduleのような構成ファイルは存在しません。

javascriptファイル、もしくはtypescriptファイル一つあればdenoで実行することができます。


VSCodeのセットアップ

こちらも公式のVSCodeセットアップ記事がありました

denoland.vscode-deno拡張をインストールします
image.png

Ctrl+Shift+Pを押して Deno: Initialize Workspace Configurationを実行します。


上記コマンドで有効になるのはワークスペースになります。
もちろんグローバルで有効にすることもできますが、
vscodeには組み込みの JavaScript/TypeScript language serverが存在しますが、Deno拡張はそれを無効にしてしまうため、すでにJavascript、Typescriptプロジェクトが存在している場合はDeno拡張はグローバルで有効にしないほうが無難でしょう。


Node.jsとの違い

Denoはnpmを使用しません。

URLまたはファイルパスとして参照されたモジュールを使用します。
Denoは、モジュール解決アルゴリズムでpackage.jsonを使用しません。

Denoにおいて、すべての非同期アクションにはPromiseを返します。したがって、DenoはNodeとは異なるAPIを提供します。

Denoは、ファイル、ネットワーク、および環境へのアクセスに明示的なパーミッションを必要とします。

Denoは常にエラーがどこにもキャッチされないとき、終了します。

「ESモジュール」を使用し、require()をサポートしません。サードパーティのモジュールは、URLを介してインポートされます。

Deno 日本語マニュアル 前置きより


DenoはES Modulesがデフォルトになったことや、Web APIが標準で搭載されているなど、Nodeのときよりモダンブラウザに寄せられていて
ブラウザならあれが使えるのに、みたいなもどかしさが減っていそうだなと感じました。

node_moduleが無くなったことで、Denoはライブラリをグローバルにキャッシュして持つようになりました。

これは個々のプロジェクトで巨大なnode_moduleを抱えなくて良くなるということで、プロジェクトを作りすぎてHDDを圧迫するような心配が減るということです。


npmのサポート

Deno Ver1.25(今年の8月くらい)から実験的にNPMのサポートが開始されました。

試しに以下のようなコードを書いて実行してみます。

import_npm.ts
import _ from "npm:lodash";
console.log(_.join(['a', 'b', 'c'], '~'));
deno run --unstable import_npm.ts
# --unstableを忘れずに

これで問題なく実行されます。
node_modulesも作成されません。

ただ型安全は無いようですべてany型になっています。


Vueの利用

調べたところVue公式はまだDenoをサポートはしていませんでした。

代わりに以下のようなフレームワークを見つけました。


vno

VueをDeno向けにパッケージしたライブラリがありました。

プロジェクト作成と開発環境立ち上げ

deno install --allow-net --unstable https://deno.land/x/vno/install/vno.ts
vno create hello-vno
cd hello-vno
vno run dev

aleph.js

プロジェクト作成と開発環境立ち上げ

deno run -A -r https://alephjs.org/init.ts
cd hello-alephjs
deno task dev

所感

deno自体は高いポテンシャルを持ったランタイムだなと感じました。
しかし、Vueやその他フレームワークがNodeで蓄えられた財産が丸々流用できないために大規模な開発に取りかかれないとも感じました。
npmのサポートも実験的とはいえされてきているので、今後NodeプロジェクトをDenoに移植しやすくなるのではないかと思います。

参考

4
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?