こんにちは、私の名前は王富鵬です。
私はシニア フルスタック エンジニアであり、17.5k のオープンソース プロジェクト PMP の作成者です。現在、Notion スタイルのナレッジ ベースを開発しています
React Nextjs と Supabase を使用した、AI の作成とコラボレーションを含む HuashuiAI。
エヴァン・ユーとVoidZero
2 か月前、Vue と Vite の作者 Evan You は VoiceZero 会社の設立を発表し、数百万ドルの投資を受けました。
VoidZero は Vite に基づいており、フロントエンド JS ツールチェーンを統合するために、Rolldown と Oxc という 2 つの主要なツールを開発します。断片化、非互換性、低効率などの問題を解決します。
VoidZero コア ツールは Rust 言語で開発されており、高い実行効率と高速性を備えています。
JS ツールチェーンの問題は何ですか
JS ツールチェーンには主に、セマンティック分析、トランスフォーマー、リンター、トランスフォーマー、ミニファイアー、バウンダーなどのプロセスが含まれています。
私たちは現在、この種のツールをどのように使用していますか?現在利用可能なツールは何ですか?彼らの間にはどのような関係があるのでしょうか?本当に非効率で断片化しているのでしょうか?以下、一つずつご紹介していきます。
これらの関係はやや混沌としており、コンパイルとパッケージ化が可能なものもあれば、重複する関数が多数あるため、強制的に分類して比較する必要はないことに注意してください。
JSランタイム
いわゆるランタイムとは、言語の実行環境を指します。ランタイムがない場合、言語は単なる文字列または文字列ファイルであり、解析して実行することはできません。
- Nodejs は最も一般的な JS ランタイムであり、安定していて成熟しており、非常に豊富なエコシステムを備えています。
- Deno は、TS サポートとネットワーク セキュリティに焦点を当てて、近年開発された JS ランタイムです。最初の 2 年間で 2,000 万ドルの投資を受け、最近 Deno 2.0 をリリースしました。現在急速に開発中です
- Bun JS ランタイム、パフォーマンス重視とオールインワン
// Nodejs Deno 或 Bun,都是写 JS 代码 const server = Bun.serve({ port: 3000, fetch(request) { return new Response("Welcome to Bun!"); }, }); console.log(`Listening on localhost:${server.port}`);
注: JS ランタイムは JS ツールチェーンの一部ではなく、最も基本的な機能にすぎませんが、これらのツールと用語を理解すると、JS ツールチェーンと区別するのに役立ちます。使用したことがないかもしれませんが、その存在とその機能を知っておく必要があります。
パーサー/コンパイラー
最新のブラウザはまだ TS JSX と最新の ES コードを直接実行できないため、Web フロントエンド開発ではさまざまなブラウザとの互換性を考慮する必要があります。
したがって、開発環境の TS JSX ES およびその他のコードを、ブラウザ (通常は ES5) で実行できる JS コードに変換する必要があります。
Babel は、豊富なエコシステムとプラグインを備えた JS を使用して開発され、この仕事を最初に実行したものの 1 つであり、長い間 webpack ロールアップなどのパッケージ化ツールに統合されてきました。
ただし、Babel は JS で開発されているため、実行効率は比較的低くなります。さらに、Babel は TS JSX をコンパイルするときに手動で構成する必要があり、これは非常に面倒です。
SWC は Rust 言語で開発された JS コンパイラーで、Babel よりも 20 ~ 70 倍 (異なる CPU 上で) 高速で、TS および JSX 構文をネイティブにサポートし、Babel を置き換えることを目指しています。 Vite は内部で SWC を使用しています。
Rspack は Rust 言語を使用して開発されていますが、単なる JS コンパイラーではありません。効率性の高い総合的なパッケージングツールです。
Rspack と同様、ESBullid は Go 言語を使用して開発されており、JS コンパイラーを含む包括的なパッケージ化ツールであるため、非常に効率的です。
リンターとフォーマッター
このセクションで一般的に使用されるのは ESLint と Prettier ですが、それらの使用法にはいくつかの混乱もあります
- ESLint には多くの構成標準 (Recommended、Airbnb、Google、StandardJS など) があり、人によって使用方法が異なります。プロジェクトが異なれば、構成も異なる場合があります
- ESLint と Prettier には重複した機能があり、使用する際の選択が難しく、構成が重複する可能性があります
ミニファイアー
UglifyJS は、JS コードの圧縮に最初に使用されたものの 1 つであり、現在、そのダウンロード量も非常に大きくなっています。
Terser は UglifyJS ソース コードに基づいて開発され、ES6 の新しい構文をサポートし、ツリーの揺れを最適化します。
ただし、SWC や esbulid などの新しいツールは JS コード圧縮もサポートするようになり、実行効率が向上しました。結局のところ、Rust や Go は本質的に JS よりもはるかに高い実行効率を持っています。
結界師
私たちが最も頻繁に接触するのは、Webpack Vite や Parcel などのパッケージャーです。後者は一般的には使用されないかもしれませんが、十分に確立されたツールでもあります。
Vite は、非常に効率的な SWC をインタープリターとして使用します。開発環境でのパッケージ化には esbulid を使用し、運用環境でのパッケージ化にはロールアップを使用します。
一方、esbulid (前に紹介したように Go 言語で開発) と rollup はパッケージ化ツールとして個別に使用することもでき、多くのサードパーティ JS プラグインは rollup を使用してパッケージ化されています。
Turbopack は、Next.js プロジェクト用に Rust を使用して Vercel によって開発された JS パッケージ化ツールであり、単独で使用することもできます。
Rspack は、Rust (JS コンパイラとともに) を使用して開発された JS パッケージング ツールで、webpack を置き換えることができ、非常に高速です。
SWC は独自のパッケージング ツール swcpack も開発しています。非常に多くのツールがあるので、面倒だと思いませんか?断片的ですか?
Rustを使用する理由
なぜこれほど多くのツールを Rust 言語で開発する必要があるのか、不思議に思われるかもしれません。ポイントは大きく2つあります
- Rust は、ネイティブ コードにコンパイルして直接実行できるコンパイル言語であり、C に匹敵するパフォーマンスを備えています
- Rust のメモリ管理はより安全ですが、C のメモリ管理はバグが発生しやすいです
終わり
JS ツールチェーンに関する 3 つの問題を振り返る
- 断片化: これはあまりにも明白です。さまざまな分野、特にボルダーには反復的なツールがたくさんあります
- 非互換性: 古いツールは新しい構文、特に TS JSX と互換性があり、過剰な構成が必要です
- 効率が低い: これも非常に明白です。ツール分野では、JS は Rust ほどうまく機能せず、淘汰されるのは時間の問題です (パニックにならないでください。これはツール分野だけであり、アプリケーション分野は依然として JS と TS です)
Vue の作者である Evan You は鋭い観察力を持っており、非常に正確に観察し、問題を直接指摘することができます。さらに、このパート、つまりヴィートにおいては強力なアドバンテージとグリップ力を持っている。現在、Vite には多数のユーザーがおり、優れたエントリーポイントとして機能します。
Vue などの Web フレームワークや Vite などの単一ツールが開発中にボトルネックに遭遇した場合、Evan はこの循環から抜け出し、より高いレベルの問題を発見し、それらを現場で実行できるようになります。これは私たちが学ぶべきことです。
最後に、VoidZero は多額の投資を行っているため、投資収益率が必要です。今後どのように商品化されるのでしょうか? Vite に直接課金することは不可能なので、どうやってお金を稼ぐことができますか?
フォローしてください。次のセクションで詳しく分析します。これはテクノロジーやコードよりも価値があります。
ところで、私は国際的な仕事の機会を探しています。機会があれば、私の Github プロフィールに連絡してください。
以上がEvan You は VoidZero を作成して何をしていますか?また、JS ツールチェーンにはどのような問題がありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

JavaScriptは、フロントエンドおよびバックエンド開発に使用できます。フロントエンドは、DOM操作を介してユーザーエクスペリエンスを強化し、バックエンドはnode.jsを介してサーバータスクを処理することを処理します。 1.フロントエンドの例:Webページテキストのコンテンツを変更します。 2。バックエンドの例:node.jsサーバーを作成します。

PythonまたはJavaScriptの選択は、キャリア開発、学習曲線、エコシステムに基づいている必要があります。1)キャリア開発:Pythonはデータサイエンスとバックエンド開発に適していますが、JavaScriptはフロントエンドおよびフルスタック開発に適しています。 2)学習曲線:Python構文は簡潔で初心者に適しています。 JavaScriptの構文は柔軟です。 3)エコシステム:Pythonには豊富な科学コンピューティングライブラリがあり、JavaScriptには強力なフロントエンドフレームワークがあります。

JavaScriptフレームワークのパワーは、開発を簡素化し、ユーザーエクスペリエンスとアプリケーションのパフォーマンスを向上させることにあります。フレームワークを選択するときは、次のことを検討してください。1。プロジェクトのサイズと複雑さ、2。チームエクスペリエンス、3。エコシステムとコミュニティサポート。

はじめに私はあなたがそれを奇妙に思うかもしれないことを知っています、JavaScript、C、およびブラウザは正確に何をしなければなりませんか?彼らは無関係であるように見えますが、実際、彼らは現代のウェブ開発において非常に重要な役割を果たしています。今日は、これら3つの間の密接なつながりについて説明します。この記事を通して、JavaScriptがブラウザでどのように実行されるか、ブラウザエンジンでのCの役割、およびそれらが協力してWebページのレンダリングと相互作用を駆動する方法を学びます。私たちは皆、JavaScriptとブラウザの関係を知っています。 JavaScriptは、フロントエンド開発のコア言語です。ブラウザで直接実行され、Webページが鮮明で興味深いものになります。なぜJavascrを疑問に思ったことがありますか

node.jsは、主にストリームのおかげで、効率的なI/Oで優れています。 ストリームはデータを段階的に処理し、メモリの過負荷を回避します。大きなファイル、ネットワークタスク、リアルタイムアプリケーションの場合。ストリームとTypeScriptのタイプの安全性を組み合わせることで、パワーが作成されます

PythonとJavaScriptのパフォーマンスと効率の違いは、主に以下に反映されています。1)解釈された言語として、Pythonはゆっくりと実行されますが、開発効率が高く、迅速なプロトタイプ開発に適しています。 2)JavaScriptはブラウザ内の単一のスレッドに限定されていますが、マルチスレッドおよび非同期I/Oを使用してnode.jsのパフォーマンスを改善でき、両方とも実際のプロジェクトで利点があります。

JavaScriptは1995年に発信され、Brandon Ikeによって作成され、言語をCに実現しました。 2。JavaScriptのメモリ管理とパフォーマンスの最適化は、C言語に依存しています。 3. C言語のクロスプラットフォーム機能は、さまざまなオペレーティングシステムでJavaScriptを効率的に実行するのに役立ちます。

JavaScriptはブラウザとnode.js環境で実行され、JavaScriptエンジンに依存してコードを解析および実行します。 1)解析段階で抽象的構文ツリー(AST)を生成します。 2)ASTをコンパイル段階のバイトコードまたはマシンコードに変換します。 3)実行段階でコンパイルされたコードを実行します。


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

DVWA
Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

ZendStudio 13.5.1 Mac
強力な PHP 統合開発環境

SublimeText3 英語版
推奨: Win バージョン、コードプロンプトをサポート!

メモ帳++7.3.1
使いやすく無料のコードエディター
