Question

I want to use the V8 javascript engine standalone, e.g. I will run it in command line as explained here:

$> ./v8-shell -e 'print("10*10 = " + 10*10)'

I want the javascript to perform some http requests, preferably using jQuery APIs but XMLHttpRequest is also ok.

Is there any built in method in V8 to do this? If not is there any way to achieve it without implementing accessors/cpp extensions?

Was it helpful?

Solution

Is there any built in method in V8 to do this?

Not in V8 directly, but there is NodeJS that adds network and file system functionality, among other features.

To steal an example from the documentation:

var options = {
  host: 'www.google.com',
  port: 80,
  path: '/upload',
  method: 'POST'
};

var req = http.request(options, function(res) {

     // callback invoked when response is received
  console.log('STATUS: ' + res.statusCode);
  console.log('HEADERS: ' + JSON.stringify(res.headers));
  res.setEncoding('utf8');

  res.on('data', function (chunk) {

      // 'data' event is fired whenever a chunk of the response arrives
    console.log('BODY: ' + chunk);
  });
});

req.on('error', function(e) {
  console.log('problem with request: ' + e.message);
});

// write data to request body
req.write('data\n');
req.write('data\n');
req.end();

OTHER TIPS

Here's a good example: when you use Node's vm.createContext() method, basically a direct binding to V8 functionality, here's what that global context has:

  Errors:     [Error, EvalError, RangeError, ReferenceError,
               SyntaxError, TypeError, URIError],

  Types:      [Array, Boolean, Date, Function, Map, Number,
               Object, Proxy, RegExp, Set, String, WeakMap], //--harmony: [Map, Proxy, Set, WeakMap]


  Primitives: [Infinity, NaN, undefined],

  Dicts:      [Math, JSON],

  Methods:    [decodeURI, decodeURIComponent, encodeURI, encodeURIComponent,
               escape, eval, isFinite, isNaN, parseFloat, parseInt, unescape]

It doesn't even have set/clearTimeout, set/clearInternal (not native javascript functions). JavaScript as a language is much more tightly focused than most realize. It always exists in a host environment that adds more stuff on top.

V8 is just a javascript engine, it doesn't have browser host methods like alert or host objects like XMLHttpRequest.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top