ノード-ノード.js


Deno JavaScriptとTypesScript(公式サイトから)のための安全なランタイムです.いい文章ですね.
ノードとは何か.JS ?
Node.js また、ChromeのV 8 JavaScriptエンジンに組み込まれたJavaScriptランタイムです.(公式のnode . jsから)
上記の文から、denoとnodeの両方を言うことができます.JSは同じですか?はい.
だからノードを与えた開発者.JSも代替案としてデノを開発した.
まあライアンdalノードの作成者.JSはそれについていくつかの後悔を持っています、そして、denoは単に「より良いバージョンのノード. js」です.
それで、ノードの開発者はどうでしたか.JSはそれで間違っていたと思います?

Nodeと間違っていること.JS ?
最も重要なことは何もノードと間違っています.というのは、denoが存在するからである.
ノード.JSは、何千もの開発者と会社によって使われます、そして、それは非常に活発なコミュニティ―ノード―で巨大で安定した生態系を持ちます.JSはどこにも行かない.
しかし、改善される可能性がありますが、影響の多くを持っていないいくつかの弱点があります.
  • ノード.JSはJavaScriptだけに焦点を当て、ネイティブの静的なタイプを使用しません.
  • インポート構文はノードに非常に固有です.私たちがESモジュールから知っているものではなく、JS.
  • これは、約束のような現代のJavaScript機能をサポートしていません.
  • デフォルトでは安全ではありません.
  • 最後のポイントはトリッキーなものであり、間違って解釈することができます.
    ノード.JSはあなたが安全なアプリケーションを構築することができます.
    しかし、ノードスクリプトにはビルトインセキュリティモデルがありません.正確には、デフォルトでは、すべてのノードスクリプトは、ファイルシステム、ネットワーク、環境へのフルアクセスがあります.
    これはノードを作る.JSは非常に柔軟ですが、それはまた、あなたのファイルシステム上のファイルを理論的には何でもEslintのようなツールを意味する.

    どのように、Denoはこれらの問題を解決しますか?
    ノードと同じものを使用できます.jsこれは、ノードとしてWebサーバーを構築するために使用することができます.その他のユーティリティスクリプト.
    でも、デコ
  • デフォルトでは、ノードとは異なり、typescriptをサポートします.したがって、それはJavaScriptとTypeScript実行時です.
  • 使用してESモジュールのインポートシステムではなく、独自の.
  • 抱擁約束のような現代のJavaScript機能.
  • デフォルトでは安全です.

  • 試してみましょう
    デコをインストールするにはcurl -fsSL https://deno.land/x/install/install.sh | sh
    タイプスクリプトのサポート
    通常のJavaScriptスクリプトを書くことができますが、typescriptコンパイラがデフォルトで提供されているので、任意の点に対して任意の点に切り替えることもできます.
    let text: string;
    text = hello world;
    console.log(text);
    
    このコードは、ノードで実行されたときに失敗します.しかし、DEOと一緒の作品.
    しかし、これは完全に任意ですが、それを使用する場合は、カスタムTypeScriptプロジェクトのコンパイルフローを設定する必要はありません.

    ESモジュールサポート
    ノード.JSは独自のモジュールシステム
    const http = require(http);
    
    しかし、それが現代のウェブフレームワークになるとき、我々は異なる形式に慣れています
    import {http} from some_node_module;
    
    さらに、ノードプロジェクトではNPMを使用してプロジェクトパッケージを管理します.このツールはそれらをダウンロードし、nodehuモジュールのディレクトリに格納します.
    このフォルダは簡単に非常に大きくなることができます、そして、それはすでにノードの重要な部分です.JSデザイン.
    ノードで.我々が我々が急行に頼るウェブサーバをつくるとき.JSとWebサーバのようなものになる
    const express = require(express);
    const app = express();
    
    ここではモジュールをnodeoundモジュールディレクトリからインポートします.
    しかし、denoは簡素化します
    import {serve} from https://deno.land/[email protected]/http/server.ts’;
    const server = serve({ port: 3000 });
    
    これはサーバからサーブ関数をインポートします.WebからのTSパッケージ.
    Denoは自動的にダウンロードして、それが初めて動くとき、このパッケージをキャッシュします.

    近代
    デコは、約束のような最新のJavaScript機能をサポートし、非同期のイテレータボックスから.
    完全なサーバーを回転させる
    import {serve} from https://deno.land/[email protected]/http/server.ts’;
    const server = serve({ port: 3000 });
    for await (const req of server) {
        req.respond(Hello world!!!);
    }
    
    また、ラップする必要はなくなります.

    セキュリティ
    前述のように、デコは内蔵セキュリティを持っています.
    しかし、これはDEOアプリケーションが常に確保されることを意味しません.
    これは単にdenoアプリケーションがあなたのファイルシステム、ネットワークと環境をコントロールしていないことを意味します.
    たとえば、アプリケーションを実行するときdeno run server.ts
    Compile file:///home/sharein/Desktop/deno_samples/server.ts
    Download https://deno.land/[email protected]/http/server.ts
    .
    .
    .
    Download https://deno.land/[email protected]/http/http_status.ts
    Download https://deno.land/[email protected]/bytes/mod.ts
    error: Uncaught PermissionDenied: network access to "0.0.0.0:3000", run again with the --allow-net flag
        at unwrapResponse ($deno$/ops/dispatch_json.ts:43:11)
        at Object.sendSync ($deno$/ops/dispatch_json.ts:72:10)
        at Object.listen ($deno$/ops/net.ts:51:10)
        at listen ($deno$/net.ts:152:22)
        at serve (https://deno.land/[email protected]/http/server.ts:261:20)
        at file:///home/sharein/Desktop/deno_samples/server.ts:3:16
    
    上記のエラーは、ネットワークにアクセスする許可を与えずにサーバを実行できないことを明確に示します.
    スクリプトは、deno run --allow-net server.tsこの場合は--allow-net ネットワークへのアクセス許可を提供します.同様にアクセス許可を(--allow-read) と書き込み(--allow-write) .

    結論
    あなたはdenoに切り替える必要があります、それは完全にあなた次第です.
    しかし、DENOバージョン1.0は最近リリースされました、そして、ちょうどそれが主要なリリースであるので、それはそれが生産準備ができているというわけではありません.
    それは非常に新しいとアクティブな開発の下、今はパッケージの生態系に飛び込む時間です.
    ノードの置換になるかどうかはわかりません.唯一の時間は、それに答えることができます.