<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                核心模塊被編譯進二進制文件需要遵循一定的規則。作為Node的使用者,盡管幾乎沒有機會參與核心模塊的開發,但是了解如何開發核心模塊有助于我們更加深入的了解Node。 核心模塊中的JavaScript部分幾乎與文件模塊的開發一樣,遵循CommonJS模塊規范,上下文中除了擁有require、module、exports外,還可以調用Node中的一些全局變量,這里不做描述。 下面我們以C/C++模塊為例演示如何編寫內建模塊。為了便于理解,我們先編寫一個極其簡單的JavaScript版本的原型,這個方法返回一個Hello World! 字符串: ~~~ exports.sayHello = ()=>{ console.log('Hello World!'); }; ~~~ 編寫內建模塊通常分兩步完成:編寫頭文件和編寫C/C++文件。 (1).將以下代碼保存為node_hello.h,存放到Node的src目錄下: ~~~ #ifndef NODE_HELLO_H_ #define NODE_HELLO_H_ #include <v8.h> namespace node{ //預定義方法 v8::Handle<v8::Value> SayHello(const v8::Arguments& args); } #endif ~~~ (2).編寫node_hello.cc,并存儲到src目錄下: ~~~ #include <node.h> #include <node_hello.h> #include <v8.h> namespace node{ using namespace v8; //實現預定義的方法 Handle<Value> SayHello(const Arguments& args){ HandleScope scope; return scope.Close(String::New("Hello World!")); } //給傳入的目標對象添加sayHello方法 void Init_Hello(Handle<Object> target){ target=>Set(String::NewSymbol("sayHello"),FunctionTemplate::New(sayHello)->GetFunction()); } } //調用NODE_MODULE()將注冊方法定義到內存中 NODE_MODULE(node_hello, node::Init_Hello) ~~~ 以上兩步完成了內建模塊的編寫,但是真正要讓Node認為它是內建模塊,還需要更改`src/node_extensions.h`,在`NODE_EXT_LIST_END`前添加`NODE_EXT_LIST_ITEM(node_hello)`,以將`node_hello`模塊添加到`node_module_list`數組中。 其次,還需要讓編寫的兩份代碼編譯進執行文件,同時需要更改Node的項目生成文件node.gyp,并在'target_name':'node'節點的sources中添加上新編寫的兩個文件。然后編譯整個Node項目,具體的編譯步驟請參見附錄A。 編譯和安裝后,直接在命令行中運行以下代碼,將會得到期望的效果: ~~~ $ node > var hello =process.binding('hello'); undefined >hello.sayHello(); 'Hello World!' > ~~~ 至此,原生編寫過程中需要注意的細節都已表述過了。可以看出,簡單的模塊通過JavaScript來編寫可以大大提高生產效率。這里我們寫作本書的目的是希望有能力的讀者可以深入Node的核心模塊,去學習它或者改進它。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看