NodeJS创始人: Node.js 编程的未来
发布于 11 年前 作者 newghost 14448 次浏览 最后一次编辑是 8 年前

Isaac Schlueter 8月14 最近有关node.js核心API有很多的争论,观点和请求;我这里基于以下几点,对这个项目的技术做一下澄清:

回调依然是实现异步的默认方式;Generators 和 Promises 的模式非常有意义,但不会设成默认;

Streams流会更持久,更快,和完全向下兼容。兼容模式(或老模式)的API更干净,你可以“暂停”流,然后再次安全地读取;我们会不断公布对流扩展的细节;

Domains会被重构以便支持更通用的持续追踪系统,或者由用户启动可选的错误处理机制;虽然他可以由用户来定制,但会一直放在Node的默认安装包里;

一个稳定的C API slime已经被添加, 以便用户编写出稳定的扩展插件;因为V8的API在0.12有重大改变,因此所以的可执行插件都不能工作了,而且绑定合适版本的openssl/zlib/c-ares/等等非常困难,我们正在处理

module(模块)系统不会被改变,所以功能已经完成一年,以后只会修改那些肯定会重现的BUG;

TypeScript和CoffeeScript不会被加入核心库,但因为模块系统已经不会变更,现在支持的以后也会一直支持;

因为一些新语言特性已经加入V8,在Node中他们会按自己的方式工作,我们没有关闭、开启的标志;请自己尝试你的代码,如果不支持会弹出错误信任;

VM模块已经被重写,以便将"contextify"模块放入核心库;这样"上下文"将会向大家希望的那样工作,VM模块已经添加了多文档的支持;

同步子线程机制最终被添加;

v0.12版本已经基本完成;一旦我们开发完了,我们会发布;v0.12版本之后,我们会不会添加新的API,我们将会关注性能提升,修BUG还有提高稳定性;

我们在node.js上做了重大改动。如果你的程序现在可以工作,我们将尽一切可能确保它能继续工作,而且最快,最靠谱;

这并不民主,但是这里有足够的空间去容纳不同意见,如果你有另人惊喜的,对node核心库的重大改进,并且你发现你的意见并不会被采纳,那么就请Fork joyent/node 项目,创建一个新的分支和图标,做你任何你想做的事情吧。

http://ourjs.com/detail/5226bceb583e062803000007

34 回复

Isaac是有多恨coffee啊

coffee 不行 , JS才是王道,这里有很多原因存在。

能否详细解释一下?

谁能解释一下啊?各种看不懂。

你應該誤會Isaac了 並不是討厭coffee,而是指這類的模組並不適合放進node.js的核心模組之中 他在不少研討會的場子上都有提到node.js的設計理念 核心維持精簡、只專注在最重要的需求,而不是一窩蜂的加功能,然後搭配npm蓬勃的生態圈

像TypeScript or CoffeeScript都只是JS Transcompiles 現階段並沒有重要的一定得放到核心不可 愛用者也可以透過npm install就裝來用,也不會有什麼不方便吧 ;p

js本身是很优雅很性感的,用了coffee,感觉戴套一样

没踩过坑的人都这么说

Isaac不是node的创始人, 是npm的开发者, nodejs现在的维护者.

实际控制人 ryan基本甩手掌柜了

同步子线程是啥?

coffee 的弱点让 TJ 大神已经阐述过了,是个SEX戴套的感觉。

还有个原因是交流费劲,JS作者也倡议共同JS编码,便于交流。

可以自己 fork 一个,然后增加内置coffee的node版本,让大家用,我相信你。

coffee就是个语法糖,其实学习成本还是不算高的,而且代码也不见得易读。。网上看源码,只要看到coffee的就直接x了··

C 不行, 汇编才是王道, 同样有很多原因在…

@robertlyc 的确, 现在是iSaac在维护node

@robertlyc

    all : function(next){
        db.cookie.all(function(err,users){
            var pos = 0;
            function nextCommand(){
                function next2(){
                    pos += 1;
                    if (pos < users.length)
                        process.nextTick(nextCommand);
                    else
                        next();
                };
                controller.test(users[pos].username,next2);
            } nextCommand();
        });
    }

最后我还是喜欢写这种代码,coffee如果能完全兼容js的话大概还可以,毕竟窝不喜欢coffee的所有特性。为了把function(xxx,xxx)写成(xxx,xxx)->而带上一大堆不喜欢的特性实在不划算。 PS:类挺棒的,但是恶心的地方也很多。

应该是child_process 支持Sync方式了吧……

缩进的写小段程序好看,程序逻辑多了,业务复杂了,有更新的时候就麻烦了

@jiyinyiyong 汇编不行,二进制才是王道,同样有很多原因在…

@yuyue007 呃, 我看微博上说, 那位谁为了调试 LuaJIT, 写 Lua 时候一般脑海里, 或者干脆敲命令生成一遍 LuaJIT 的汇编指令代码, 以此来调试和优化代码性能. 出于性能等等苛刻的原因, 我觉得切换到机器原生跑的代码很值得. CoffeeScript 并不是适用所有场景的, 浏览器不进行原生支持, 这没办法

@robertlyc 你踩到坑了,避免就好了不是么。。再说最佳实践不是挺多的么。js确实太过于灵活,爽也头疼有时候,但coffee写起来就不是很爽。。。

一个星期以前看这个帖子的时候,我和楼上很多人一样不喜欢coffee script。

不过现在,呵呵。我恨不得把我之前写过的代码全部采用coffee script重写一次。

至于为什么,晚上写一篇文章来谈谈最近使用coffee-script的感受。

PS:@yangff ,把你的代码用coffee写是这样的,不知道你觉得怎么样:

all = ->
    db.cookie.all (err, users)->
        pos = 0
        nextCommand = do ->
            next2 ->
                pos += 1
                if pos<users.length then process.nextTick nextCommand else next()
            controller.test users[pos].username, next2

@brighthas 这个是,虽然大家都会,用得少,看着自然也不怎么习惯。

混着看两种“语言”很不舒服,团队作事,用起来很麻烦。

next2 ->应该写成next2 = ->

next() 中的 next在哪声明的?

漏了,sorry。编辑器拷过来一行行按空格效率低啊 all = (next)-> db.cookie.all (err, users)-> pos = 0 nextCommand = do -> next2 -> pos += 1 if pos<users.length then process.nextTick nextCommand else next() controller.test users[pos].username, next2

@jiyinyiyong 我也不算太喜欢coffeescript,可能是自身本来对这个就不熟悉吧。但是他们说coffeescript编译出的代码,可能比自己写的javascript效率还要高一些,不知道真假。。如果真是这样的话,那coffeescript就非常值得用了。

@yuyue007 不会, 少写不少字符, 写代码会快很多, 运行速度基本一样, 除非说新手的话, 写代码质量不太高, 那用 CoffeeScript 会快一点点. CoffeeScript 减少的是写代码的门槛了难度, 如果已经精通 JS, 没必要转 Coffee.

我也喜欢Coffee

我决定就像Quora上说的,为什么有的人不喜欢Coffee?因为它很新

所以我想写惯了JS的可能会不喜欢,但像我这样的新码农对Coffee是爱不释手啊

回到顶部