共有するのが良いフロントエンドプログラマ電王あるもの、それはNode.jsの違いを、Node.jsの作成者ライアン・ダールは年間過ごし、半分の研究電王、これは新しいJavaScriptの実行では、すべての固有のノードを解決することができます問題。
誤解しないで、ノードJS 自体は、それが持っている主な理由は、偉大なサーバーサイドJavaScriptのランタイムで非常に大規模な生態系とJavaScriptを。しかし、Node.jsの作成者ライアン・ダールは、少数を示すために、安全性、モジュールとの依存関係-彼はより多くを考慮すべきであることを認めました。
彼の防衛では、プラットフォームは、数が増加します、彼は時間のような短い期間に想像することができるという意味ではありません。また、初期の2009年には、JavaScriptがまだこの奇妙な小さな言語である、誰もが、まだその機能の多くの楽しみを作ったが、。
だから、電王は、それが何であるかの主な特徴は何ですか?
1. 電王は、Googleのランタイムエンジンの活字体に建てられたV8ベースのセキュリティです。
それは確立します:
L 錆(電王のコアは、さび、C ++で記述されたノードに書き込まれます)
L 東京(さびイベントループに書き込まれます)
L typescriptです(電王は、箱から出してJavaScriptと活字体をサポート)
L V8(JavaScriptを可能にGoogle Chromeで、ノード使用)
2. これは、Tを支持するy軸。ボックス、用がないパッケージ変更のうちpe2.8をJ 息子、無NPM によるノードの追求と互換性がありませんが、URL の代わりに依存した方法を導入し、ロードされたと地元のモジュールを介して最初の実行にキャッシュされました、および更新を依存し、コードを実行するためにのみ使用されます。
nは 、デフォルトのサンドボックスコードアクセス読み取り専用ファイルシステムへのアクセス、ないネットワークアクセスを実行するために、ファイルシステムやネットワークへのアクセスを制御することができます。V8とGolangメッセージとの間のアクセスのみ定義いるProtobufの順序により行うことができます。
nは 最終的には単一の実行可能ファイルを作成します。
nが サポートしている トップレベル の のawaitを;
n個 の究極の目標は、互換性のあるブラウザです。
nが 、自分の構築に使用されるライブラリとして導入することができる JavaScriptのランタイムを。
これらの機能は、ある多くのより多くのために存在していた ノードのJS 痛みのポイントは、非含め、来る package.jsonの、導入と更新モード広くTucao大きすぎるために依存。
同時に、何ももはや互換性の追求ない ノードを、それを考慮することができる RY 完全に放棄したい ノード 良く作成するには、負担を JSの 実行時間を。
そのセキュリティは、その最も重要な機能の一つは非常に安全で、かつNodeJs反し、非常に心強いです電王の実行されている意味、デフォルトのサンドボックスのコードの実行は、アクセスを許可されていません。
のは、それがどのように動作するかを見てみましょう。
(非同期()=> {
CONSTエンコーダ=新しいTextEncoder()。
const型データ= encoder.encode( 'こんにちは、世界');
Deno.writeFile( 'HelloWorld.txt'、データ)を待ちます。
Deno.writeFile( 'HelloWorld2.txt'、データ)を待ちます。
})();
このスクリプトは、メッセージを含む二つのテキストファイルを作成します。コードはサンドボックス内で実行されているので、ファイルシステムにアクセスすることはできません。HelloWorld.txt HelloWorld2.txtこんにちは
また、我々が使用していることに注意してください電王の名前空間ではなく、 FS のように、モジュールをノードのように。電王の名前空間には、多くの基本的なヘルパー関数を提供します。名前空間を使用することにより、我々は、ブラウザの互換性を失っています。
当然我们用到Deno的时候,会想到浏览器的兼容性,Deno旨在浏览器兼容。从技术上讲,在使用ES模块时,我们不必使用任何构建工具(如webpack)来使我们的应用程序啊可以在浏览器中使用。
但是像Babel这样的工具会将代码转换成ES5版本的JavaScript,因此 即使在不支持该语言所用最新功能的旧版浏览器中,代码也可以运行。但这也是最终文件中包含大量不必要的代码并使输出文件膨胀为代价的。
由我们决定我们的主要目标是什么,并相应地做出选择。
TypeScript支持开箱即用
Deno使得无需任何配置文件即可轻松使用TypeScript。仍然可以用纯JavaScript编写程序并使用Deno执行它们而不会有任何麻烦。
Deno是TypeScript和JavaScript的新运行时,是一个有趣的项目,现在已经稳定增长了很长一段时间。但是在它被认为是生产就绪之前还有很长的路要走。
借助它的分散式方法,它需要从集中式软件包注册表(即npm)中释放JavaScript生态系统。