虚拟研讨会:Node.js生态系统之框架、库、最佳实践
Node.js的创建者Ryan Dahl在JSConf 2010上做了演讲,简单介绍了什么是Node.js(PDF) :
- 服务器端的JavaScript
- 基于Google的V8创建
- 事件触发、非阻塞的I/O。 类似于EventMachine或Twisted。
- CommonJS模块系统。
- 有8000行C/C++代码, 2000行Javascript代码,14个贡献者。
Node.js最近越来越受关注,Yahoo! Mail的首席工程师Peter Griess也提到, 他们公司正在研究如何在产品中使用Node.js。
目前在GitHub上,大约有三百个项目都与Node.js有关 ,InfoQ联系了其中几个最受欢迎项目的创建者, 与他们展开了此次讨论。
参与者包括:
- 来自Express的TJ Holowaychuk, Express是受Sinatra影响的Node.js Web开发框架。(译注: Sinatra是用Ruby编写的开源Web应用框架、 领域特定语言。)
- Socket.IO的Guillermo Rauch,Socket. IO是一个简单的HTTP套接字接口实现及服务器。
- 来自Geddy的Matthew Eernisse,Geddy是个Node. js的Web开发框架,类似于Merb、Rails、 Pylons、Django等框架。
- node-xmpp的Astro,node- xmpp是遵循XMPP协议的Node.js库。
- StackVM的Peteris Krumins和James Halliday,StackVM是一家初创公司, 正尝试用Node.js来简化虚拟机在Web上的使用。
InfoQ:能向大家简单介绍一下你们的项目么? 项目试图解决什么问题?又是如何去做的呢?
TJ(Express):正如你们所了解的, Express很大程度上受到了Sinatra的影响, 最初主要是想让开发人员在新的平台上自如使用新的语法。 不过我们在1.x版本做了很多改进, Express现在利用了流行的中间件框架Connect( 我是共同编写者),并移除了一些不适合项目的依赖。
有些Node框架只关注自身,但大部分还是想成为“最重要的” 库。我期望Express是可选的,不会带来什么局限。
Guillermo(Socket.IO):Socket. IO提供了一个简单的API, 可以抽象出各个浏览器在HTTP传输实现上的不同, 借此让实时JavaScript应用的构建成为可能。
Matthew(Geddy):Geddy是个全JavaScript堆栈的MVC Web框架。 Geddy想让开发人员很容易地用JavaScript编写复杂的Web应用、在客户端和服务器之间共享代码。
Geddy使用了现有MVC框架中的常见模式, 比如Rails和Django中用控制器/行为、模型、 模板化的函数。 不过Geddy中的这些功能都是用JavaScript完成的, 所以模型、验证、模板之类的内容也都可以在浏览器中使用。
Geddy有简单、基于资源的路由机制,还有准确的内容协商, 所以用它来开发传输结构化数据的轻量Web Service会超级简单。
Astro(node-xmpp):我的目标是创建一个能在Node.js环境中容易使用的XMPP库。 先前的库以适用于浏览器的Strophe.js为基础, 不符合Node.js的约定; 也没有利用EventEmitter和支持SRV的DNS解析器 ,最重要的是,它既不支持XMPP客户端,也不支持组件连接。
Peteris和James(StackVM):我们的项目叫StackVM, 它可以借助HTML和JavaScript让虚拟机在浏览器上运 行。StackVM显示了虚拟机不绑定到桌面时可以进行的操作。 比如说,用户可以在他们的网站里嵌入虚拟机、 与合作者共享工作内容、为应用创建在线的产品演示, 还可以创建以前不可能实现的Mashup。
TJ(Express):正如你们所了解的, Express很大程度上受到了Sinatra的影响, 最初主要是想让开发人员在新的平台上自如使用新的语法。 不过我们在1.x版本做了很多改进, Express现在利用了流行的中间件框架Connect( 我是共同编写者),并移除了一些不适合项目的依赖。
有些Node框架只关注自身,但大部分还是想成为“最重要的” 库。我期望Express是可选的,不会带来什么局限。
Guillermo(Socket.IO):Socket. IO提供了一个简单的API, 可以抽象出各个浏览器在HTTP传输实现上的不同, 借此让实时JavaScript应用的构建成为可能。
Matthew(Geddy):Geddy是个全JavaScript堆栈的MVC Web框架。 Geddy想让开发人员很容易地用JavaScript编写复杂的Web应用、在客户端和服务器之间共享代码。
Geddy使用了现有MVC框架中的常见模式, 比如Rails和Django中用控制器/行为、模型、 模板化的函数。 不过Geddy中的这些功能都是用JavaScript完成的, 所以模型、验证、模板之类的内容也都可以在浏览器中使用。
Geddy有简单、基于资源的路由机制,还有准确的内容协商, 所以用它来开发传输结构化数据的轻量Web Service会超级简单。
Astro(node-xmpp):我的目标是创建一个能在Node.js环境中容易使用的XMPP库。 先前的库以适用于浏览器的Strophe.js为基础, 不符合Node.js的约定; 也没有利用EventEmitter和支持SRV的DNS解析器 ,最重要的是,它既不支持XMPP客户端,也不支持组件连接。
Peteris和James(StackVM):我们的项目叫StackVM, 它可以借助HTML和JavaScript让虚拟机在浏览器上运 行。StackVM显示了虚拟机不绑定到桌面时可以进行的操作。 比如说,用户可以在他们的网站里嵌入虚拟机、 与合作者共享工作内容、为应用创建在线的产品演示, 还可以创建以前不可能实现的Mashup。