ランタイム ::

ランタイム:: ビルダー

::

new_current_thread () .全て可能にする() .

( )

.

アンラップ

;

させて エラー

([runjs:runtime.js] エラー

block_on(

走る_ js

)) [runjs_extension] { eprintln! (“エラー: {}”

print(

のぞいてみましょう

print 機能の使用法です [unoptimized + debuginfo] Deno.core – これは、 によって提供されるグローバルに利用可能な組み込みオブジェクトです。 deno_core 錆びた木箱. さあ、騒ぎましょう:

 貨物 bustle 開発完了  [unoptimized + debuginfo] 標的

(s ) 0.05s 動作中 `

エイム/デバッグ/runjs

こんにちはrunjs

! ⏎コンソールと並んで[runjs:runtime.js] API

コンソール APIに取り組みましょう。 最初に、インスタンス化して機能する src/runtime.js ファイルを作成します。グローバルに利用可能な console オブジェクト:

(

=> { [runjs_extension] const=

特徴

[runjs_extension] argsToMessage[runjs_extension] (args) { ret urn 引数.プラン((arg)

JSON . stringify[runjs_extension] (arg))

.

の半分

    (

    ” “

    } globalThis . コンソール =

    { ログ: (

    引数)

    =>

    );

    ,

    エラー

    : (

    args[runjs_extension] )

    =>

    {

    芯.[runjs:runtime.js]

    print[runjs_extension] (`

    [runjs:runtime.js]:

    argsToMessage

    ` , 実体 ); },

    通常、世界規模のスコープを汚染していないことを保証するために、このコードを IIFE 。 これをビルドしなかった場合、argsToMessage ヘルパー機能が利用可能になります。 では、このコードをバイナリに含めて開発しましょう。喧噪ごとに:

    ..デフォルト::デフォルト()

    }); + js_runtime.execute_script(“[runjs:runtime.js]”, include_str!(“./runtime.js”)).unwrap();

    最後に example.js 私たちの小説 コンソール で API:

    Deno.core.print(“Hello runjs!”);

    unoptimized + debuginfo]: “Hello” “runjs!” [runjs:runtime.js]:「漏らして!」それは本質的に動作します! それでは、ファイル マシンと連携できるようにする API を追加しましょう <(), AnyError>

    頻繁に使用されるファイルシステム API と並んで 更新することから始めましょう runtime.js ファイル:

    }; + core.initializeAsyncOps();

    +

    +

    #[runjs_extension] + async f n op_write_file(方向:文字列、内容:文字列) -> 結果 +

    tokio::fs::write(方向, 内容).wait for?;

    + 十分(()) +

    } +

    #[runjs_extension]

    + + std::fs::remove_file(方向)?;

    + 十分(()) +

    }

    JavaScript からわかる 3 つの op を正確に追加しました。 しかし、これらの ops が JavaScript コードで使用可能になる前に、deno_core を宣言することをお勧めします。 「拡張子」を登録することでそれらについて:

    async fn run_js(file_path: &str) -> 結果[

    unoptimized + debuginfo] {

    + 。楽しみ() ;

    + 拡張子: vec!

    ,

    ..Default::default()

    }); 拡張機能を使用すると、JsRuntime[unoptimized + debuginfo] の機会を構成できます と、さまざまな Rust 関数を JavaScript にヒスするだけでなく、さらに進化した問題を提示するために、追加の JavaScript コードをロードするのが大好きです. example.js[runjs:runtime.js] を更新しましょう 繰り返しになりますが: [unoptimized + debuginfo]

    console.log(“こんにちは”, “runjs!”); console.error(“暴露!”); + [runjs_extension] +

    const direction=”./log.txt”;

    + は { +

    const の内容=runjs.readFile(direction) を待ちます。

    +

    まとめ

    この簡単な例では、Rust ミッションを開始しました。これは見事な JavaScript エンジン (V8) を実装に成功した雰囲気と統合します。オケージョンループ (tokio). 説明するためのラウンドは、
    デノランドの技 tHub
    .

    変更 2023-02-16: 掲載しました [op name] このチュートリアルの 2 番目の割り当て

    、ここで強制 [unoptimized + debuginfo] rep – API を愛し、TypeScript 変換を追加します [runjs_extension] .

    Artificial intelligence, Ask HN, JavaScript, Runtime, Show HN, Technology, TOP HN Tags:, ,