完整的JavaScript开发堆栈:MEAN

正如当初PHP的LAMP、Spring的SSH等开发堆栈一样,Javascript带来了完整的MEAN开发堆栈,是MongoDB、ExpressJS,AngularJS和Node.js简称。

MongoDB是一个使用JSON风格存储的数据库,非常适合javascript。(JSON是JS数据格式)

ExpressJS是一个Web应用框架,提供有帮助的组件和模块帮助建立一个网站应用。

AngularJS是一个前端MVC框架。

Node.js是一个并发 异步 事件驱动的Javascript服务器后端开发平台。

在mongoDB中我们可以直接存储JSON格式的数据,然后在ExpressJS和的NodeJS服务器编写一个基于JSON的查询,并无缝地(无需像其他语言需要在JSON和语言数据模型之间转换)传递JSON到AngularJS前端。

同时,数据库调试和管理也变得轻松了许多,存储在数据库中的对象基本上等同于你在客户端看到的对象。更妙的是,前端工作人员也能够轻松了解后端代码和数据库查询,使用的是相同的语法和对象,你不必考虑多套语言的最佳实践,降低了入门门槛。

架构图如下:

为什么选择MongoDB?
虽然有人指出MongoDB适合小中型的应用程序,但没有大型的应用程序(例如100的数以百万计的用户)案例,这其实取决于你想做什么。

在性能和可靠性之间需要在SQL和NOSQL之间做一个权衡,如果数据一旦存储以后不太做修改,以读取为主的应用可以选择MongoDB,如果你有复杂的交易过程,这时传统关系数据库也许是一个好的选择。

为什么Express?
Express是Node.js用于Web应用的工具包,能够创建基于http的端口,处理cookie等,提供一切你可能需要建立自己的Web服务器的库包,主要有:

1. 简单的REST路由:如app.get(/account/:id, function(req, res){ /* req.params('id') is available */ });
2.通过Jade的简单模板化
3.自动化的http处理。
4.支持异步处理请求响应的中间件。
5.分析POST请求体
6.防止XSS攻击
7.错误处理

MEAN的安装

最后请注意的是,使用Node.js相比Ruby , Python或Java其他语言将面临更多挑战:必须管理内存泄漏,记住CPU绑定的计算循环(排除CPU密集型),小心处理异常防止崩溃等。

[该贴被banq于2014-03-10 18:44修改过]
[该贴被banq于2014-03-10 19:25修改过]

我感觉就冲着最后一段话。。。nodejs也难以大行其道。。。除非以后的版本把这些问题减轻了。。。

2014-03-10 18:07 "@banq"的内容
小心处理异常防止崩溃等。 ...

node中对未捕获的异常通过UnCatchException事件进行了封装,所以只需要监听该事件,应该还是比较好处理