Tag: v8

为什么Node.js 0.12.0版本中的V8需要SSE2 CPU指令?

尝试将Node.js从0.10.x升级到0.12.0。 首先注意到的是,我得到一个错误,指出我的CPU不支持SSE2指令(实际上他们不是)。 试图从源代码编译Node.js,但由于相同的原因失败。 在deps/v8/src/ia32/assembler-ia32.cc有一行说明 CHECK(cpu.has_sse2()); // SSE2 support is mandatory. 我想知道是否有办法摆脱Node.js 0.10.x中不需要的SSE2依赖。 只是注释掉这条线没有帮助,它会在制作过程中抛出一个Illegal instruction错误。

从nodejs插件发送事件到JavaScript

我目前正在build立一个应用程序(电子),我需要连接一个C ++库。 我已经完成了使用NodeJS c ++插件的大部分绑定,但是我错过了一个重要的部分,它与在我的Javascript代码中接收由c ++库生成的事件有关。 void Event1(int64_t id) { ArrayBufferAllocator allocator; Isolate::CreateParams create_params; create_params.array_buffer_allocator = &allocator; Isolate* isolate = Isolate::New(create_params); { v8::Locker locker(isolate); Isolate::Scope isolate_scope(isolate); HandleScope handle_scope(isolate); Local<Context> context = Context::New(isolate); Context::Scope context_scope(context); v8::Local<v8::Value> argv[1] = { Nan::New("OnWillPlayTrack").ToLocalChecked(), // event name }; Nan::MakeCallback(isolate->GetCurrentContext()->Global(),"emit", 1, argv); } isolate->Dispose(); } Event1被c ++ lib调用,与V8无关,现在我想将一个事件触发到JavaScript,返回Node(EventEmitter?)。 我认为最大的问题是,现在大部分的v8function都需要隔离,而且在整个networking中发现的大多数例子都非常老旧。 在MakeCallBack Event1代码崩溃: […]

命名闭包是否污染了全局/窗口对象?

根据这个节点风格指南 ,给封闭一个名字是一个好的做法: 对 req.on('end', function onEnd() { console.log('winning'); }); 错误 req.on('end', function() { console.log('losing'); }); 不过,我已经习惯了 function someName() { someStatements(); } …语法作为为该函数创build全局variablessomeName或window.someName东西。 这是一个很好的做法,还是一个非常糟糕的风格指南?

我在哪里可以看到Node.js中JavaScript方法的源代码,如hasOwnProperty?

我一直在研究JavaScriptalgorithm和Big O面试。 我被告知知道内置方法的运行时间,比如Object.prototype.hasOwnProperty和Array.prototype.map ,是非常重要的。 什么是在node.js中查看这些函数的源代码的简单方法? 我有一个node.js的本地副本,我试图在我的文本编辑器中search这些方法,但并不像我想象的那么简单。

Node.js和V8有什么关系?

我一直在想这个问题一段时间,似乎无法find答案。 Node.js和V8有什么关系? 和Node.js可以在没有V8的情况下工作吗?

如何在nodejs插件中抽取窗口消息?

在一个Windows nodejs插件中,我创build了一个用于接收消息的窗口。 Handle<Value> MakeMessageWindow(const Arguments &args) { // exposed to JS … CreateWindow(L"ClassName", NULL, 0, 0, 0, 0, 0, HWND_MESSAGE, 0, 0, 0); … } 我有一个wndproc函数。 Local<Function> wndProc; LRESULT APIENTRY WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { // pack up the arguments into Local<Value> argv wndProc->Call(Context::GetCurrent()->Global(), 3, argv); } 现在我需要抽取消息。 通常情况下,你会做类似的事情 MSG msg; […]

如何在Nodejs中模拟“窗口”对象?

在浏览器中运行时,附加到“窗口”对象的所有内容都将自动成为全局对象。 我如何创build一个类似于Nodejs的对象? mySpecialObject.foo = 9; var f = function() { console.log(foo); }; f(); // This should print "9" to console

在v8和Node.js中保存函数callback

你将如何将一个JavaScript提供的callback保存在一个v8包装的对象中,以便将来不仅在当前的函数调用中使用。 基本上我想在C ++中创build一个JavaScript对象,当用新的Object()提供一个函数callback。 然后在整个c ++对象的生活中使用该callback。 看下面的例子: 我所遇到的问题是,当我试图在一个不同的静态函数中使用句柄对象时,它会导致错误。 在节点js文件中: var Object = require("./customModule"); var obj = new Object(function(){console.log("Callback called…")}) // Emit callback obj.emitCallback(); 在c + +模块头 class Object : public node::ObjectWrap { public: static void Init(v8::Handle<v8::Object> target); Object(); protected: v8::Handle<v8::Function> m_faceDetectCallback; static v8::Handle<v8::Value> New(const v8::Arguments& args); static v8::Handle<v8::Value> onEmitCallback(const v8::Arguments& args); } v8::Handle<v8::Value> Object::New(const v8::Arguments& args) […]

Node.js V8通过引用传递

我很好奇如何在V8中完成内存pipe理,看看这个例子: function requestHandler(req, res){ functionCall(req, res); secondFunctionCall(req, res); thirdFunctionCall(req, res); fourthFunctionCall(req, res); }; var http = require('http'); var server = http.createServer(requestHandler).listen(3000); 每个函数调用都会传递“req”和“res”variables,我的问题是: V8是否通过引用来传递它,或者是否在内存中进行复制? 2.是否可以通过引用来传递variables,请看这个例子。 var args = { hello: 'world' }; function myFunction(args){ args.newHello = 'another world'; } myFunction(args); 的console.log(参数); //这将打印: "{ hello: 'world', newWorld: 'another world' }" 感谢您的帮助和解答:)

Node.js的RSS(Resident Set Size)与每个请求一起增长是否正常,直到达到某个上限?

我注意到,我的node.js应用程序的RSS(驻留集大小)随着时间的推移而增长,考虑到我的服务器上有一个“JS对象分配失败 – 内存不足”的错误,这似乎是一个可能的原因。 我设置了以下非常简单的Node应用程序: var express = require('express'); var app = express(); app.get('/',function(req,res,next){ res.end(JSON.stringify(process.memoryUsage())); }); app.listen(8888); 通过简单地按住“刷新”热键@ http:// localhost:8888 /我可以观看RSS /堆/等。 直到RSS达到50MB以上(在我感到无聊之前)。 等待几分钟,然后回来,RSS下降 – 大概GC已经运行。 我试图弄清楚这是否解释了为什么我的实际节点应用程序崩溃了…我的产品应用程序迅速达到100Mb的RSS大小,当它崩溃时,一般在200Mb-300Mb之间。 尽我所知,这应该不会太大(节点应该能够处理1.7Gb左右,我相信),但是我担心我的生产服务器上的RSS大小向上趋势(衰退代表崩溃):