ホームページ > 記事 > ウェブフロントエンド > あまり知られていない JavaScript の再生方法
Stack OverFlow の共同創設者である Jeff Atwood は、かつて次のような有名な「アトウッドの法則」を提案しました。 JavaScript で実装できるアプリケーションは、最終的には JavaScript で実装されることになります。
JavaScript が現時点で最も人気のあるプログラミング言語の 1 つであることに疑いの余地はありません。これについては、フロントエンドとバックエンド、さらにはフルスタックについて議論する必要はありません。エンジニアは間違いなくあなたのことを心配しているでしょう。最近、ハッカーアートは、2016 年の主流のプログラミング言語の使用法について説明したブログ投稿を公開しました:
したがって、彼らは、今年最も人気のある言語は次のものになると予測しています:
JavaScriptJava
Python
PHP
Matlab
Arduino
Swift
は、JavaScriptを拡張しました多くの領域への触手 多くの新しい方法があります。次のコンテンツでは、あまり知られていない JavaScript の再生方法をいくつか試してみます:
Espruino は、マイクロコントローラー (MCU) 用に特別に設計された JavaScript インタプリタで、最小リソース オーバーヘッドは 128KB のフラッシュと 8KB RAM です。 、MPL-2.0プロトコルを使用するオープンソース。
この巨人の肩には、自分で開発したハードウェアと互換性を持たせるためにいくつかの変更を加えました。変更したコードを GitHub に送信しました。興味のある友人はそれを複製して遊ぶことができます。
Star
$ git clone http://www.php.cn/ $ cd Espruino # 将 YS-Beacon 连接至 PC $ YS_BEACON=1 RELEASE=1 make flash # 终端跳出一大堆字符,板子上的蓝色灯闪烁,最后一切轻松搞定~ ... [====================] 100% DEBUG:root:reset stop on Reset INFO:root:Programmed 446464 bytes (109 pages) at 14.56 kB/s DEBUG:root:uninit board <pyOCD.board.mbed_board.MbedBoard object at 0x1025e8a90> DEBUG:root:closing interface
Espruino にはサポート開発ツール Espruino Web IDE もあり、コードの編集、プログラムのダウンロード、さらにはグラフィカル プログラミングにも使用できます。以下は、単純に LED の点滅を実装するコードです。
var on = false; setInterval(function() { on = !on; LED1.write(on); }, 500);
興味深いことに、Espruino ハードウェアは JavaScript インタプリタを実行し、それにアップロードされた JavaScript コードは RAM にのみ保存されます。これはブラウザとまったく同じであり、動的解析特性も反映しています。
JerryScript
Espruino が少しおもちゃっぽいとしたら、JerryScript はより製品指向であると言うべきで、JerryScript のリソース オーバーヘッドは高くなく、RAM は 64KB 未満、ROM は 200KB 未満にすることができます。 JerryScript に関して言えば、IoT.js と Samsung は切っても切れない関係にあります。その「三角関係」は次のとおりです。IoT.js は JavaScript で書かれた IoT アプリケーション プラットフォームです。デバイス用の小さな JavaScript エンジン、Samsung のオープンソースの IoT.js および JerryScript。 全体の内部構造は次のとおりです:次の小さなコードは、JerryScript の基本的なワークフローを示しています: エンジンの初期化 → JavaScript コードの解析 → コードの実行 → 実行の終了とメモリの解放。
{ jerry_init(JERRY_FLAG_ENABLE_LOG); char script[] = "print ('Hello, World!');"; jerry_parse(script, strlen(script)); jerry_run(); jerry_cleanup(); }
JerryScript のソース コードを確認すると、既に一部の RTOS (Zephyr、mbed OS など) で実行できることがわかります。昨年深センで開催された mbed Connect Asia 2016 カンファレンスで、Jan Jongboom 氏は mbed OS 5 に JerryScript を導入したと述べ、いくつかの簡単な例を紹介しました。
mbed OS 5 がサポートされているので、開発するハードウェアを簡単にサポートできます。開発環境の構築については、README を参照することができます。実装は難しくありません。
$ git clone http://www.php.cn/ $ cd mbed-js-example # 国内的朋友可以使用淘宝镜像安装依赖:cnpm install $ npm install # 此处 gulp 用于获取 JerryScript 源码 $ gulp # 获取 mbed os 最新源码 $ cd ./build/jerryscript/targets/mbedos5/mbed-os $ git checkout master $ git pull # 从我的仓库拉回相关目标硬件配置文件 $ git remote set-url origin http://www.php.cn/ $ git pull # 指定目标板子,自动编译 $ gulp --target=YS_BEACON
JavaScript で書かれたアプリケーションのソース コードを見てみましょう。奇妙でありながらも親しみを感じますか:
// blink_leds.js var led = DigitalOut(LED1); var blink = function() { led.write(led.read() ? 0 : 1); print("blink! LED is now " + led.read()); }; module.exports = blink; // main.js var blink = require('./blink_leds'); setInterval(function() { blink(); }, 1000);コンパイルされた mbedos5.hex ファイルをターゲット ボードにダウンロードし、結果が正しいかどうかを確認してください。欲しいもの:
Blockly
プログラミング言語やコマンドラインウィンドウのカーソルの点滅が怖いなら、Blockly があなたを救い、楽しく興味深いものにしてくれるツールかもしれません。 Blockly は、Google が開発しオープンソース化した JavaScript ライブラリで、変数、式、ループなどを表すいくつかのグラフィカル ブロックをドラッグして組み合わせるだけでプログラミングが完了します。いいね?
実際、Blockly はビジュアル編集とコード生成という 1 つのことだけを行います。 Blockly はコードの背後にある動作を気にしないため、開発者には想像力の余地がたくさんあります。たとえば、Ozobot は、Blockly を使用してロボットの動作をプログラムできます。
ビデオタグをサポートしていません。
楽しいじゃないですか?ロボットがいないのが残念です。ただし、Espruino を使用して最初に Blockly のゲームプレイを体験し、その後段階的に独自のロボットを構築することができます (はい、前述の Espruino は Blockly をサポートしています):
まだ十分に楽しんでいませんか?私はまだもっと面白いことを模索中です。興味のある方はぜひシェアしてください。
上記は JavaScript のあまり知られていないゲームプレイの内容です。その他の関連コンテンツについては、PHP 中国語 Web サイト (www.php.cn) に注目してください。