MEAN是一个Javascript平台的现代Web开发框架总称,它是MongoDB + Express +AngularJS + NodeJS 四个框架的第一个字母组合。

  • MongoDB是一个使用JSON风格存储的数据库,非常适合javascript 。(JSON是JS数据格式)
  • ExpressJS是一个Web应用框架,提供有帮助的组件和模块帮助建立一个网站应用。
  • AngularJS是一个前端MVC框架。
  • Node.js是一个并发 异步 事件驱动的Javascript服务器后端开发平台。

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

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

MEAN的架构原理如下图:

相关工具:

  • NPM – NodeJS包管理器,类似Java的Maven。
  • Grunt – 一个Javascript任务运行器。

安装

两种安装方式:

  • 通过mean.io网站下载
    或通过git下载:git clone https://github.com/linnovate/mean.git
  • 使用Yeoman
    首先安装:npm install -g generator-meanstack
    创建app: yo meanstack 
    各种MEAN生成器可见这个:link ,通过'mean'过滤查询。
  • vagrant 方案

上述安装步骤完成后,使用 cd 进入你已经安装了MEAN 的目录,你应当安装了 grunt-cli .在grunt命令行在端口3000开始一个服务器,然后通过浏览器访问 http://localhost:3000:

MEAN说明

MEAN堆栈是一个完整功能的应用引擎,它使用各种方式实现安全认证:Facebook, GitHub, Twitter 或 Google或者简单 e-mail和 password.

MEAN的安装后目录如下:

服务器后端部分

在MEAN这个目录中,服务器后端有下面三个目录:

  • app 目录 - 包含控制器, 模型 和视图
  • config 目录 - 包含控制应用行为部分的文件 Node.JS部分
  • server.js - 应用的服务器端点设置 Node.JS部分

APP目录:

在app目录中驻扎着整个后端的代码,包含控制器 模型和视图的几个子目录,还有一个路由目录。

缺省情况下有一个案例,是有关“文章"和"用户"的,有它们的控制器,以及用于根路径的index文件,文章和用户的模型也已经被创建,它们的路由等都已经存在。

缺省视图文件如下:

includes目录中包含页面的头部和尾部模板,能够插入这个应用的所有页面,布局layout目录是有关页面布局的文件,index.html中也拓展了这个布局。

users目录包含用户注册 登录和授权有关页面。

在视图views根目录,除了index.html文件,还有两个显示404和500错误的页面。

config目录

这个目录包含各种配置文件,有一个env目录包含开发 产品和测试各个阶段的配置。

也有一些配置是有关应用自身的,express部分和 登录的passport配置。

server.js目录

这是启动整个应用的文件,负责:

  • 加载配置:配置应用自身 授权 和数据库连接的 加载。
  • 引导模型:这是通过遍历模型目录实现的,加载其下面所有文件。包括子目录。
  • 启动passport
  • 初始化express
  • 配置express
  • 配置express路由
  • 在指定端口启动服务器

客户端前端部分

客户端部分在public目录下,这个目录包含css img等子目录,请注意js目录包含了Angular代码,views目录部分包含案例文章的创建 编辑 显示 查看等文件。lib目录是Angular的代码库。

测试

github这个项目提供了基于MEAN的TDD和BDD:

  • 自动化
  • Mockist单元测试
  • BDD/ATDD t测试
  • 端到端系统测试

Karma也是一个测试项目,可以自动开启浏览器启动测试。

MEAN案例源码

联系人管理系统

todo list 案例

MEAN: AngularJS + NodeJS的REST API开发教程

参考:

Node.js教程

AngularJS框架介绍

MongoDB专题

英文MEAN视频教程1

Introduction to the MEAN stack

MEAN-Framework

为什么AngularJS发展前途巨大?

Node.js也许是下一个革命

以上内容转自:http://www.jdon.com/idea/js/mean.html

认识MEAN开发框架[转]的更多相关文章

  1. Enterprise Solution 3.1 企业应用开发框架 .NET ERP/CRM/MIS 开发框架,C/S架构,SQL Server + ORM(LLBL Gen Pro) + Infragistics WinForms

    行业:基于数据库的制造行业管理软件,包含ERP.MRP.CRM.MIS.MES等企业管理软件 数据库平台:SQL Server 2005或以上 系统架构:C/S 开发技术 序号 领域 技术 1 数据库 ...

  2. 从零开始编写自己的C#框架(27)——什么是开发框架

    前言 做为一个程序员,在开发的过程中会发现,有框架同无框架,做起事来是完全不同的概念,关系到开发的效率.程序的健壮.性能.团队协作.后续功能维护.扩展......等方方面面的事情.很多朋友在学习搭建自 ...

  3. CRL快速开发框架系列教程十三(嵌套查询)

    本系列目录 CRL快速开发框架系列教程一(Code First数据表不需再关心) CRL快速开发框架系列教程二(基于Lambda表达式查询) CRL快速开发框架系列教程三(更新数据) CRL快速开发框 ...

  4. CRL快速开发框架系列教程十二(MongoDB支持)

    本系列目录 CRL快速开发框架系列教程一(Code First数据表不需再关心) CRL快速开发框架系列教程二(基于Lambda表达式查询) CRL快速开发框架系列教程三(更新数据) CRL快速开发框 ...

  5. CRL快速开发框架系列教程十一(大数据分库分表解决方案)

    本系列目录 CRL快速开发框架系列教程一(Code First数据表不需再关心) CRL快速开发框架系列教程二(基于Lambda表达式查询) CRL快速开发框架系列教程三(更新数据) CRL快速开发框 ...

  6. CRL快速开发框架系列教程十(导出对象结构)

    本系列目录 CRL快速开发框架系列教程一(Code First数据表不需再关心) CRL快速开发框架系列教程二(基于Lambda表达式查询) CRL快速开发框架系列教程三(更新数据) CRL快速开发框 ...

  7. CRL快速开发框架系列教程九(导入/导出数据)

    本系列目录 CRL快速开发框架系列教程一(Code First数据表不需再关心) CRL快速开发框架系列教程二(基于Lambda表达式查询) CRL快速开发框架系列教程三(更新数据) CRL快速开发框 ...

  8. CRL快速开发框架系列教程七(使用事务)

    本系列目录 CRL快速开发框架系列教程一(Code First数据表不需再关心) CRL快速开发框架系列教程二(基于Lambda表达式查询) CRL快速开发框架系列教程三(更新数据) CRL快速开发框 ...

  9. CRL快速开发框架系列教程六(分布式缓存解决方案)

    本系列目录 CRL快速开发框架系列教程一(Code First数据表不需再关心) CRL快速开发框架系列教程二(基于Lambda表达式查询) CRL快速开发框架系列教程三(更新数据) CRL快速开发框 ...

  10. CRL快速开发框架系列教程五(使用缓存)

    本系列目录 CRL快速开发框架系列教程一(Code First数据表不需再关心) CRL快速开发框架系列教程二(基于Lambda表达式查询) CRL快速开发框架系列教程三(更新数据) CRL快速开发框 ...

随机推荐

  1. hdu1171Big Event in HDU(01背包)

    Big Event in HDU Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others ...

  2. python 终极篇 ---- 中间件

    中间件------------------------>>>>>>>>>>>>> 中间件是一个用来处理django的响应与 ...

  3. HDU 1394Minimum Inversion Number

    The inversion number of a given number sequence a1, a2, ..., an is the number of pairs (ai, aj) that ...

  4. 试用Markdown来写东西

    试用Markdown来写东西 前言 之前有过一段时间的写东西的习惯,但是后来因为各种原因(主要是因为自己懒惰拖延),所以一直没有写,现在想再开始写,目的很明确,就是发现很多时候,写作能够很好的练习自己 ...

  5. linux NULL 的定义

    #undef NULL #if defined(__cplusplus) #define NULL 0 #else #define NULL ((void *)0) #endif

  6. html常用小知识

    请求重定向:加载页面之后,除了用js做重定向之外,我们还可以直接用<meta>标签做重定向. <meta http-equiv="refresh" content ...

  7. 一键部署 Docker Datacenter ---简化docker数据中心安装步骤

    DDC 简介 2016年2月下旬,Docker发布了企业级容器管理和服务部署的整体解决方案平台-Docker Datacenter,简称DDC.DDC 有三个组件构成:1. Docker Univer ...

  8. 用命令从mysql中导出/导入表结构及数据

    在命令行下mysql的数据导出有个很好用命令mysqldump,它的参数有一大把,可以这样查看:mysqldump最常用的:mysqldump -uroot -pmysql databasefoo t ...

  9. HDU 2491 Priest John's Busiest Day(贪心)(2008 Asia Regional Beijing)

    Description John is the only priest in his town. October 26th is the John's busiest day in a year be ...

  10. Python中的__future__

    在Python中,你如果在某一个版本的Python想使用未来版本中的功能,可以使用如下语法实现: from __future__ import futurename 这条语句必须放在module文件的 ...