标签: v8

什么是Node.js?

我没有完全了解Node.js的全部内容.也许是因为我主要是一个基于Web的业务应用程序开发人员.它是什么以及它的用途是什么?

到目前为止,我的理解是:

  1. 编程模型是事件驱动的,尤其是它处理I/O的方式.
  2. 它使用JavaScript,解析器是V8.
  3. 它可以很容易地用于创建并发服务器应用程序.

我的理解是否正确?如果是,那么即使I/O有什么好处,它对于并发性的东西更多吗?另外,Node.js的方向是成为一个类似于基于JavaScript(V8的)编程模型的框架吗?

javascript v8 evented-io node.js

506
推荐指数
9
解决办法
47万
查看次数

Bluebird的util.toFastProperties函数如何使对象的属性"快速"?

在Bluebird的util.js文件中,它具有以下功能:

function toFastProperties(obj) {
    /*jshint -W027*/
    function f() {}
    f.prototype = obj;
    ASSERT("%HasFastProperties", true, obj);
    return f;
    eval(obj);
}
Run Code Online (Sandbox Code Playgroud)

出于某种原因,在返回函数之后有一个声明,我不知道它为什么存在.

同样,它似乎是故意的,因为作者已经沉默了JSHint对此的警告:

'return'后无法访问'eval'.(W027)

这个功能到底是做什么的?难道util.toFastProperties真的让一个对象的属性"快"?

我在Bluebird的GitHub存储库中搜索了源代码中的任何注释或者问题列表中的解释,但我找不到任何注释.

javascript performance v8 node.js bluebird

165
推荐指数
1
解决办法
1万
查看次数

为什么<=慢于<在V8中使用此代码段?

我正在阅读幻灯片使用V8破解Javascript速度限制,并且有一个示例,如下面的代码.我无法弄清楚为什么<=<这种情况慢,有人可以解释一下吗?任何评论都表示赞赏.

慢:

this.isPrimeDivisible = function(candidate) {
    for (var i = 1; i <= this.prime_count; ++i) {
        if (candidate % this.primes[i] == 0) return true;
    }
    return false;
} 
Run Code Online (Sandbox Code Playgroud)

(提示:素数是一个长度为prime_count的数组)

快点:

this.isPrimeDivisible = function(candidate) {
    for (var i = 1; i < this.prime_count; ++i) {
        if (candidate % this.primes[i] == 0) return true;
    }
    return false;
} 
Run Code Online (Sandbox Code Playgroud)

[更多信息]速度提升很显着,在我的本地环境测试中,结果如下:

V8 version 7.3.0 (candidate) 
Run Code Online (Sandbox Code Playgroud)

慢:

 time d8 prime.js
 287107
 12.71 user 
 0.05 system 
 0:12.84 elapsed 
Run Code Online (Sandbox Code Playgroud)

快点: …

javascript v8

165
推荐指数
4
解决办法
1万
查看次数

Node.js 0.12中提供ECMAScript 6功能

新的稳定版本的Node.js(0.12)最近已经升级了Google的v8 JavaScript引擎v3.28.73.

Node.js中当前存在哪些ECMAScript 6功能,而不使用该--harmony标志?

我检查了几个声称要列出ES 6功能的网站但是所有这些功能看起来都已过时 - 最突出的是,这个表(更新: 现在更新时的当前Node.js状态为0.12),因为有几个功能列为--harmony当我发现其中一些是默认启用时需要标志(地图,集合,符号,仅举几例).更新:节点特定表已经可用

此外,尝试谷歌这个信息纯粹为v8引擎提供了太新的信息 - 当前的v8版本是4.2.*,这远远超过了Node.js使用的.

我希望这个问题(及其答案)将成为Node.js开发人员现在可以使用的ES 6功能的全面总结.

在Node.js 0.12中启用ES 6功能我目前知道:

  • Maps,Sets/WeakMaps,WeakSets
  • 符号
  • Object.observe
  • 承诺
    • .isInteger
    • .isSafeInteger
    • .isNaN
    • 小量
    • .MIN_SAFE_INTEGER
    • .MAX_SAFE_INTEGER
  • 数学
    • .clz32
    • .imul
    • .标志
    • .log10
    • .log2
    • .log1p
    • .expm1
    • .cosh
    • .sinh
    • .tanh
    • .acosh
    • .asinh
    • .atanh
    • .trunc
    • .fround
    • .cbrt
    • .hypot

javascript v8 node.js ecmascript-6

162
推荐指数
1
解决办法
4万
查看次数

如何检查我的NodeJS安装了哪个版本的v8?

V8如何与NodeJ一起安装?我目前的V8引擎是什么版本的?

v8 node.js

130
推荐指数
9
解决办法
9万
查看次数

没有浏览器执行JavaScript?

我正在研究没有浏览器的Javascript编程.我想从Linux或Mac OS X命令行运行脚本,就像我们运行任何其他脚本语言(ruby,php,perl,python ......)

$ javascript my_javascript_code.js
Run Code Online (Sandbox Code Playgroud)

我看了蜘蛛猴(Mozilla)和v8(谷歌),但这两个似乎都是嵌入式的.

是否有人使用Javascript作为脚本语言从命令行执行?

如果有人好奇,为什么我期待到这一点,我一直在关注着Node.js的.node.js的性能让我想知道javascript是否可以成为处理大数据的可行脚本语言.

javascript unix scripting command-line v8

125
推荐指数
6
解决办法
11万
查看次数

运行V8 Javascript Engine Standalone

我想在V8之上运行Javascript控制台.我该怎么做呢?

javascript v8

124
推荐指数
6
解决办法
8万
查看次数

node.js process.memoryUsage()的返回值代表什么?

从官方文档(来源):

process.memoryUsage()

返回一个对象,描述以字节为单位测量的Node进程的内存使用情况.

var util = require('util');

console.log(util.inspect(process.memoryUsage()));
Run Code Online (Sandbox Code Playgroud)

这将产生:

{ rss: 4935680, heapTotal: 1826816, heapUsed: 650472 }
Run Code Online (Sandbox Code Playgroud)

heapTotal和heapUsed是指V8的内存使用情况.

究竟rss,heapTotalheapUsed代表什么?

这似乎是一个微不足道的问题,但我一直在寻找,到目前为止我找不到一个明确的答案.

v8 node.js

119
推荐指数
3
解决办法
3万
查看次数

何时使用next()并在Node.js中返回next()

场景:考虑以下是节点Web应用程序的代码部分.

app.get('/users/:id?', function(req, res, next){
    var id = req.params.id;
    if (id) {
        // do something
    } else {
        next(); //or return next();
    }
});
Run Code Online (Sandbox Code Playgroud)

问题:我正在检查哪一个next()或只是return next().上面的示例代码对两者都完全相同,并且没有显示执行上的任何差异.

问题:有人可以对此有所了解,何时使用next()以及何时使用return next()和一些重要区别?

v8 connect node.js express

114
推荐指数
4
解决办法
6万
查看次数

为什么Math.pow()(有时)在JavaScript中不等于**?

我刚刚发现ECMAScript 7功能a**b作为Math.pow(a,b)(MDN参考)的替代方案,并且在该帖子中遇到了一个讨论,其中他们显然表现不同.我在Chrome 55中测试了它,可以确认结果有所不同.

Math.pow(99,99) 回报 3.697296376497263e+197

99**99 回报 3.697296376497268e+197

因此记录差异会Math.pow(99,99) - 99**99导致-5.311379928167671e+182.

到目前为止可以说,它只是另一种实现,但将它包装在一个函数中的行为又有所不同:

function diff(x) {
  return Math.pow(x,x) - x**x;
}
Run Code Online (Sandbox Code Playgroud)

调用diff(99)返回0.

为什么会这样?

正如xszaboj指出的那样,这可以缩小到这个问题:

var x = 99;
x**x - 99**99; // Returns -5.311379928167671e+182
Run Code Online (Sandbox Code Playgroud)

javascript google-chrome v8 ecmascript-7

114
推荐指数
1
解决办法
7766
查看次数