Как вы включаете другой файл JS в Google V8? - PullRequest
12 голосов
/ 19 июля 2009

Как включить другой файл сценария в файл сценария .js в v8?
В HTML есть тег , но как это сделать во встроенной программе v8?

Ответы [ 2 ]

23 голосов
/ 23 августа 2009

Вы должны добавить эту функцию вручную, вот как я это сделал:

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

В основном добавлена ​​глобально доступная функция, которая может загружать и запускать файл javascript в текущем контексте. Я использую это с моим проектом, работает как сон.

// beginning of main javascript file
include("otherlib.js");
3 голосов
/ 24 ноября 2010

Если вы используете Node.js или любую совместимую с CommonsJS среду выполнения, вы можете использовать require (module); Об этом есть хорошая статья на http://jherdman.ca/2010-04-05/understanding-nodejs-require/

...