Node是一个开源,跨平台的用来执行javascript的运行环境。它建立在google的v8引擎上,而v8引擎正是google chrome浏览器的执行引擎,能够快速的将javascript代码转为原生的机器码。
在Node诞生之前,javascript只能在浏览器执行。在2009年,Ryan Dahl使用开源的google v8 javascript引擎来构建node,使它成为一个独立于浏览器之外的javascript运行环境。这使得javascript开发者能够在服务端使用javascript来构建大部分的web apis。
题外话:我觉得有两个技术的普及让web前端的有了较大的发展。一是混合应用的出现,包括移动端的混合应用如phone gap、ionic等框架和PC端的混合应用如hex、酷狗音乐等,这一技术的诞生让前端工作从简单的类似制作ppt一般地展现页面效果的工作升级成了开发应用程序的级别;二是node.js的出现,让js可以运用于服务端开发,让前端工程师能低门槛地转成js全栈,通过node.js开发后端又可以与数据库连接,让js开发人员可以参与到web的前端、后端、数据库整个系统,从而为js工程师提供了一条晋升到web架构师的有利通道,为js工程师插上了一双翅膀。
(1)综述
MEAN是一个Javascript平台的现代Web开发框架总称,它是MongoDB + Express +AngularJS + NodeJS 四个框架的第一个字母组合。它与传统LAMP一样是一种全套开发工具的简称(如下图所示)。
(2)具体组成
MongoDB
MongoDB 是NoSQL的文档数据库,使用JSON风格来存储数据,甚至也是使用JS来进行sql查询。在mongoDB中我们可以直接存储JSON格式的数据,然后在ExpressJS和的NodeJS服务器编写一个基于JSON的查询,并无缝地传递JSON到AngularJS前端。
Express
Express是基于Node的Web开发框架,即是一个在Node平台下搭建Web应用的工具集。Express在以下几个方面有优势:
设置REST路由简单致极。
支持Jade或Mustache等模板引擎。
自动HTTP头处理。
支持Connect中间件,可以插入额外请求或响应处理。
提供辅助函数解析POST请求。
防范XSS。
优雅的错误处理。
Aagular
Aagular是JS的前端开发框架。最为核心的是特性是MVVM、模块化、自动化双向数据绑定、语义化标签和依赖注入。在MEAN架构中,前端的Angular并不是必须的,可将它替换成其他的前端框架,如Backbone、Ember或者Polymer。
Node
Node是基于V8的运行环境(JS语言开发),其用于方便地搭建响应速度快、易于扩展的网络应用。Node.js 使用事件驱动, 非阻塞I/O 模型而得以轻量和高效,非常适合在分布式设备上运行的数据密集型的实时应用。