Google V8編程詳解(二)HelloWorld

來源:互聯網
上載者:User

上一章講到了V8的編譯和安裝,這一章開始從一個demo著手。

這裡選用了官方文檔的一個非常簡潔的HelloWorld.cc,代碼如下:

#include <v8.h>using namespace v8;int main(int argc, char* argv[]) {  // Create a stack-allocated handle scope.  HandleScope handle_scope;  // Create a new context.  Persistent<Context> context = Context::New();  // Enter the created context for compiling and  // running the hello world script.  Context::Scope context_scope(context);  // Create a string containing the JavaScript source code.  Handle<String> source = String::New("'Hello' + ', World!'");  // Compile the source code.  Handle<Script> script = Script::Compile(source);  // Run the script to get the result.  Handle<Value> result = script->Run();  // Dispose the persistent context.  context.Dispose();  // Convert the result to an ASCII string and print it.  String::AsciiValue ascii(result);  printf("%s\n", *ascii);  return 0;}

我的目錄結構如下:

編譯運行:

g++ -I../include helloworld.cc  -o helloworld -lpthread -lv8
./helloworld

就可以在螢幕上看到輸出結果了。

看到demo上有一些Context,Scope,Value等等,先不要慌張,其實就是V8的一些基本 資料類型,這些在後面會逐個一一講到。                                                                                    

  Handle<String> source = String::New("'Hello' + ', World!'");

看到這句話,其實就是在載入一個js檔案了。只不過這個js檔案內容為:

'Hello' + ', World!'

那麼這裡,source就已經是載入過的js檔案字串內容了,接下來V8需要對js進行編譯解釋。

 Handle<Script> script = Script::Compile(source); Handle<Value> result = script->Run();

最後就是JS的執行了。這裡雖然只有簡單的幾個語句,但是V8對於JS的編譯和運行做了很多很複雜的操作。關於V8是如何編譯和運行JS的,在後面章節將做詳細的分析。


著作權申明:
轉載文章請註明原文出處,任何用於商業目的,請聯絡本人:hyman_tan@126.com

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.