2009-07-19 5 views
12

v8 में .js स्क्रिप्ट फ़ाइल के अंदर आप एक और स्क्रिप्ट फ़ाइल कैसे शामिल करते हैं?
एचटीएमएल में < स्क्रिप्ट > टैग है लेकिन यह v8 एम्बेडेड प्रोग्राम के अंदर कैसे किया जा सकता है?आप Google की v8 में एक और जेएस फ़ाइल कैसे शामिल करते हैं?

उत्तर

22

आप इस कार्यक्षमता मैन्युअल रूप से जोड़ने के लिए, यहाँ है कि कैसे मैं यह किया है:

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)); 

यह मूल रूप से एक विश्व स्तर पर सुलभ समारोह है कि लोड और वर्तमान संदर्भ में एक जावास्क्रिप्ट फ़ाइल चला सकते हैं कहते हैं। मैं इसे अपने प्रोजेक्ट के साथ उपयोग करता हूं, एक सपने की तरह काम करता है।

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

पर बहुत अच्छा लेख है :) –

+0

ऐसा लगता है कि इस उत्तर को पोस्ट करने के बाद से V8 अपडेट किया गया था। अब आपको 'Set' पर कॉल में Functiontemplate की -> GetFunction() एक्सेसर की आवश्यकता है: उदा। FunctionTemplate :: नया (शामिल करें) -> GetFunction() –

+0

आज के रूप में नवीनतम v8 (17,2013) के साथ, v8 :: तर्क अब मौजूद नहीं है (v8 :: आंतरिक :: तर्क आप है)। तो v8 :: तर्क और फ़ंक्शन में तर्क घोषणा को v8 :: FunctionCallbackInfo और में बदला जाना है। – yoshi

3

आप Node.js या किसी CommonsJS अनुरूप क्रम का उपयोग कर रहे हैं, तो आप (मॉड्यूल) की आवश्यकता होती है उपयोग कर सकते हैं; http://jherdman.ca/2010-04-05/understanding-nodejs-require/

+0

कि लिंक अब –

+0

@ जेसबॉवर्स लिंक टूटा हुआ है। – Petah

+0

कि लिंक फिर से टूट गया है। मैंने एक त्वरित Google किया और इसे शीर्षक और अनुमानित लेखक के आधार पर नहीं मिला। – xaxxon

संबंधित मुद्दे