皆さん、
この投稿は、WebAssembly を探求するシリーズの一部です。 ここで他の部分をチェックしてください [シリーズの他の部分へのリンク]。
WebAssembly について聞いて、複雑すぎると思ったことはありますか? 今日は、単純な WebAssembly プロジェクトを最初から構築します。 ランダムな 16 進数のカラー コード ジェネレーターという非常に基本的なものを維持しています。 「Hello, World!」のようなものだと考えてください。 WebAssembly にカラフルなひねりを加えたものです。 JavaScript を使用して簡単な WebAssembly コードを作成、コンパイルし、使用してブラウザーでランダムな色を生成する方法を学びます。
WebAssembly のセットアップ
このシリーズでは C と C の例を使用するため、Emscripten を使用して C/C を WASM にコンパイルします。 他の言語はそれぞれのコンパイラで使用できます。
Emscripten のセットアップは簡単です。次の手順に従ってください: https://www.php.cn/link/b1fb3726a5a825732f9a25e210426c4a
macOS ユーザーは Homebrew を使用できます:
brew install emscripten
Linux ユーザーは次の手順に従ってください: https://www.php.cn/link/cdcc686a434d09ed24e4b736d593858f
インストール後、次のように確認します:
emcc -v
簡単な追加の例
カラー ジェネレーターを構築する前に、WASM ワークフローを理解するために簡単な加算アプリケーションを作成しましょう。まず JavaScript でビルドしてから、WASM に変換します。 index.html
:
<!-- index.html --> <input type="number" id="num1"> + <input type="number" id="num2"> = <p id="result"></p> <button onclick="addNumbers()">Add</button> <script src="add.js"></script>
次に、add.c
:
// add.c int addTwoNumbers(int num1, int num2) { return num1 + num2; }
C コードを WASM にコンパイルします。
emcc add.c -o add.js -s EXPORTED_FUNCTIONS="['_addTwoNumbers']" -s "EXTRA_EXPORTED_RUNTIME_METHODS=['ccall', 'cwrap']"
このコマンド:
-
add.c
を JavaScript (add.js
) にコンパイルします。 - JavaScript で使用するために
addTwoNumbers
関数をエクスポートします (アンダースコアはコマンドの一部です)。 - JavaScript の対話に必要なランタイム関数 (
ccall
、cwrap
) をエクスポートします。
これにより、add.wasm
(WASM バイナリ) と add.js
(グルー コード) が作成されます。 index.html
を変更して WASM 機能を含めます:
<!-- index.html (modified) --> <input type="number" id="num1"> + <input type="number" id="num2"> = <p id="result"></p> <button onclick="addNumbers()">Add</button> <script> const Module = { onRuntimeInitialized: () => { const addTwoNumbers = Module.cwrap('addTwoNumbers', 'number', ['number', 'number']); function addNumbers() { const num1 = parseInt(document.getElementById('num1').value); const num2 = parseInt(document.getElementById('num2').value); document.getElementById('result').innerText = addTwoNumbers(num1, num2); } } }; </script> <script src="add.js"></script>
ローカルサーバー (例: python -m http.server
、python3 -m http.server
、または live-server
) を使用してこれを実行します。 2 つの数字を入力し、[追加] をクリックして結果を確認します。
JavaScript は DOM 操作を処理し、WASM (C コード) は追加を実行します。 完全なコードはここ [コードへのリンク] から入手できます。
16 進数を理解する
16 進数 (基数 16) は 16 個のシンボル (0 ~ 9、A ~ F、A=10 など) を使用します。 6 桁の 16 進コードは色を表します (例: #FF5733
、#42A5F5
)。 16 進数の色の詳細については、こちら [説明へのリンク] をご覧ください。
ランダムカラージェネレーター
random_color.c
を作成:
// random_color.c #include <stdlib.h> #include <time.h> char* intToHex(int num) { static char hexStr[3]; const char hexDigits[] = "0123456789ABCDEF"; hexStr[0] = hexDigits[(num >> 4) & 0xF]; hexStr[1] = hexDigits[num & 0xF]; hexStr[2] = '<pre class="brush:php;toolbar:false"><code class="language-bash">emcc random_color.c -o random_color.js -s EXPORTED_FUNCTIONS="['_generateRandomHexColor']" -s "EXTRA_EXPORTED_RUNTIME_METHODS=['ccall', 'cwrap', 'UTF8ToString']"'; return hexStr; } char* generateRandomHexColor() { static char color[8]; srand(time(NULL)); color[0] = '#'; char* r = intToHex(rand() % 256); color[1] = r[0]; color[2] = r[1]; char* g = intToHex(rand() % 256); color[3] = g[0]; color[4] = g[1]; char* b = intToHex(rand() % 256); color[5] = b[0]; color[6] = b[1]; color[7] = ''; return color; }
コンパイル:
brew install emscripten
この関数を使用するには、HTML を作成 (または変更) します: [WASM 関数を呼び出し、背景色を更新する HTML コード]。
ボタンをクリックすると、ページの背景色が変わります。
完全なコード: [コードへのリンク]
結論
シンプルな WebAssembly アプリケーションを構築しました。これは、WebAssembly が高性能コードを Web にもたらす能力を示しています。 今後の投稿では、より高度なアプリケーションを検討していきます。乞うご期待!
以上が最初の WebAssembly プロジェクトを構築するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

JavaScriptコアデータ型は、ブラウザとnode.jsで一貫していますが、余分なタイプとは異なる方法で処理されます。 1)グローバルオブジェクトはブラウザのウィンドウであり、node.jsのグローバルです2)バイナリデータの処理に使用されるNode.jsの一意のバッファオブジェクト。 3)パフォーマンスと時間の処理にも違いがあり、環境に従ってコードを調整する必要があります。

javascriptusestwotypesofcomments:シングルライン(//)およびマルチライン(//)

PythonとJavaScriptの主な違いは、タイプシステムとアプリケーションシナリオです。 1。Pythonは、科学的コンピューティングとデータ分析に適した動的タイプを使用します。 2。JavaScriptは弱いタイプを採用し、フロントエンドとフルスタックの開発で広く使用されています。この2つは、非同期プログラミングとパフォーマンスの最適化に独自の利点があり、選択する際にプロジェクトの要件に従って決定する必要があります。

PythonまたはJavaScriptを選択するかどうかは、プロジェクトの種類によって異なります。1)データサイエンスおよび自動化タスクのPythonを選択します。 2)フロントエンドとフルスタック開発のためにJavaScriptを選択します。 Pythonは、データ処理と自動化における強力なライブラリに好まれていますが、JavaScriptはWebインタラクションとフルスタック開発の利点に不可欠です。

PythonとJavaScriptにはそれぞれ独自の利点があり、選択はプロジェクトのニーズと個人的な好みに依存します。 1. Pythonは、データサイエンスやバックエンド開発に適した簡潔な構文を備えた学習が簡単ですが、実行速度が遅くなっています。 2。JavaScriptはフロントエンド開発のいたるところにあり、強力な非同期プログラミング機能を備えています。 node.jsはフルスタックの開発に適していますが、構文は複雑でエラーが発生しやすい場合があります。

javascriptisnotbuiltoncorc;それは、解釈されていることを解釈しました。

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

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


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

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

PhpStorm Mac バージョン
最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

SAP NetWeaver Server Adapter for Eclipse
Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

Safe Exam Browser
Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。

WebStorm Mac版
便利なJavaScript開発ツール
