介绍最近,全Javascript开发架构MEAN突然在Angular社区的原型开发者中流行起来。首字母代表:(M)ongoDB——NoSQL文档数据库,采用JSON风格存储数据,甚至使用JS进行sql查询;(E)xpress——基于节点的Web开发框架;(A))agular——JS前端开发框架,提供声明式双向数据绑定;(N)ode——基于V8的运行环境(JS语言开发),可以构建快速响应和可扩展的网络应用。MEAN架构示意图MEAN的支持者声称,如果整个开发栈都能使用JS,势必会大大提高效率,这无疑是一大卖点。这样,开发者(无论是前端还是后端)不仅可以使用一致的数据模型,而且在其他方??面也可以获得一致的编程体验。比如以Mongo为例,可以使用类JSON的格式(BSON,binaryJSON)来存储数据,然后在Express/Node中调用JSON查询语句,再将结果传递给前端Angular中显示JSON格式。这样一来,也自然让调试变得容易了很多。注意:其实在MEAN架构中,前端Angular并不是必须的,可以用其他前端框架代替,比如Backbone、Ember或者Polymer。为什么选择MongoDB?如上所述,这种架构最重要的优点是可以使用单一语言,这是选择Mongo的首要原因。noSQL的是非这里就不讨论了。一些人对MEAN架构的批评是,MongoDB可以很好地适用于中小型应用程序,但对于大型应用程序(***用户)可能会捉襟见肘。我想说的是,这完全取决于您如何使用它。SQL数据库本身是强类型的,所以在很大程度上可以保证一定程度的一致性,从而保证很多类型的脏数据无法在第一时间进入数据库。另一方面,NoSQL是弱类型数据库,无法进行数据校验,只能由开发者实现。基于这样的特点,它特别适合存储那些不规则的数据,尤其是在原型开发阶段。此时数据模型正在发生快速变化。SQL和noSQL之间的技术差异归结为性能和稳定性之间的平衡。在某些情况下,数据事务处理一旦设定,就不会轻易改变,此时使用Mongo是非常合适的;但是,有时候会涉及到更复杂的事务处理,涉及到很多独立的业务逻辑,由于Mongo没有提供简单的数据模型来支持一定程度的原子操作,这时候SQL就可以派上用场了。但无论如何,无论你是否选择MEAN中的M,最终还是需要根据自己的需求选择合适的工具来做合适的事情。为什么是快递?您可以简单地将Express视为构建在Node平台上的工具。Web应用程序的工具集。在Node的基础上,它提供了很多简单的接口来创建请求节点、处理cookies等,同时也提供了很多功能来帮助你搭建自己的服务器。总的来说,Express有以下几个方面的优势:设置REST路由简单***:app.get(/account/:id,function(req,res){/*req.params('id')可用*/});支持Jade或Mustache等模板引擎自动处理HTTP标头:app.get('/',function(req,res){res.json({object:'foo'});});支持Connect中间件,可以插入额外的请求或响应处理,比如用户认证提供辅助功能解析POST请求防止XSS优雅的错误处理如何快速上手MEAN如果你想快速上手MEAN,那就mean.io是一个很好的选择。该项目旨在解决MEAN架构中的一些常见集成问题。目前维护的很好,文档也很清楚。自己添加第三方库也很方便,也可以和Yeoman结合使用(viagenerator-meanbyJamesCryer)。在进一步阅读之前,假设我们同意以下几点:(a)Mongo至少非常适合制作完整的Javascript堆栈的原型;(b)承认即使Angular像现在这样流行,总有一天它会被其他一些JS框架取代,只要它们能够帮助我们快速轻松地构建这个架构。接下来是Yeoman,它由3个熟悉的工具组成:Grunt:用于生成、预览和自动测试您的项目,特别感谢Yeoman和grint-contrib团队创建的许多grunt任务。Bower:一款前端依赖管理工具,有了它你不再需要手动下载和管理第三方JS库。YO:快速生成一个新的应用程序,包括配置您的Grunt任务和您最有可能使用的Bower依赖项。一年前,作者和其他一些人创建了一个名为ExpressStack的项目。想法很简单,就是提供一些工具,可以快速生成构建全JSweb应用所需的一切。然而,这个项目死了,尽管如此,许多类似的项目如雨后春笋般涌现。以下是这些项目的一些介绍:注意:您可能需要安装Yeom(npminstall-gyo)和以下生成器(npminstall-g
