2009-07-19 13 views

cevap

22

Burada nasıl yaptığımı olduğunu elle bu işlevselliği eklemek zorunda:

Handle<Value> Include(const Arguments& args) { 
    for (int i = 0; i < args.Length(); i++) { 
     String::Utf8Value str(args[i]); 

     // load_file loads the file with this name into a string, 
     // I imagine you can write a function to do this :) 
     std::string js_file = load_file(*str); 

     if(js_file.length() > 0) { 
      Handle<String> source = String::New(js_file.c_str()); 
      Handle<Script> script = Script::Compile(source); 
      return script->Run(); 
     } 
    } 
    return Undefined(); 
} 

Handle<ObjectTemplate> global = ObjectTemplate::New(); 

global->Set(String::New("include"), FunctionTemplate::New(Include)); 

Temelde yük ve akım bağlamında bir javascript dosyası çalıştırabilirsiniz küresel erişilebilir işlevi ekler. Onu projemle kullanıyorum, rüya gibi çalışıyor.

// beginning of main javascript file 
include("otherlib.js"); 
+0

Hakkında güzel bir makale var Teşekkür ederim :) –

+0

Bu yanıt gönderildiği günden beri V8'in güncellendiği anlaşılıyor. Artık Functiontemplate en ihtiyaç - 'Set' çağrısında> GetFunction() erişimci: ör FunctionTemplate :: Yeni (Dahil) -> GetFunction() –

+0

En son v8 ile bugün (Aralık 17,2013), v8 :: Argüman artık yok (v8 :: internal :: Argüman var). Yani v8 :: Argüman & fonksiyon arg bildirimi v8 :: FunctionCallbackInfo & olarak değiştirilmelidir. – yoshi

3

Node.js veya herhangi bir CommonsJS uyumlu çalışma zamanı kullanıyorsanız, gereksinim (modül) kullanabilirsiniz; http://jherdman.ca/2010-04-05/understanding-nodejs-require/

+0

bağlantı artık –

+0

@JessBowers sabit bağlantısını bozuldu. Bu bağlantı – Petah

+0

tekrar bozuldu. Ben hızlı google yaptım ve başlık ve tahmin yazar göre bulabilmek olamazdı. – xaxxon

İlgili konular