Mongo, Express, Angular, Node-- MEAN Stack搭建
前言
作为一个从后端转全栈的码农,我一直使用express,jade & bootstrap, jquery的组合。重复了几次相同的工作后,看到网上开始流行MEAN Stack,于是也对其研究了一番。
MEAN Stack在我看来最大的意义是可以节省很多繁琐重复的数据操作代码,按照正常方式,页面上需要数据时,前端需要写ajax调用代码取数据,后端需要写接口接受数据请求,然后向Mongo发送请求取数据,最后返回到前端。而在MEAN Stack的体系里,这只需要在前端通过类似ORM的方式就可以直接存取数据了,可以节省大量的精力。
我花了一些时间研究了下MEAN.io和MEAN.js,但是都觉得他们做的太繁琐了,没办法,只能自己另起炉灶搭一个MEAN Stack了,又Google了下,发现不少介绍MEAN Stack搭建的文章教的都是自己在Express中写restful接口然后操作数据,如果这些都需要自己写代码,我用MEAN Stack的意义何在?本着偷懒到底的精神,我找到了express-restify-mongoose。恩,这下手头材料齐全了,我们就来搭一个MEAN Stack。
环境准备:Mongo, Angular, Express
这个我就不教大家了,请大家自己搭建。注意就是我们需要angular-resource.min.js,这是angular处理Restful绑定的功能。
Mongo, Express Restful接口搭建
首先安装express-restify-mongoose
npm install express-restify-mongoose --save
然后新建一个router做Restful Service,假设我们的数据类是Customer,需要一个name字段和一个可选的comment字段.
/* models.js */
var express = require('express');
var router = express.Router();
var mongoose = require("mongoose");
var resify = require("express-restify-mongoose")
mongoose.connect("mongodb://localhost/test");
resify.serve(router, mongoose.model('Customer', new mongoose.Schema(
{
name : {type : String, required : true},
comment : {type : String}
}
)))
module.exports = router;
然后把这个router注册到express里
/* in app.js */
var models = require("[models.js位置]");
...
app.use(models)
OK,现在运行server测试下: http://localhost:3000/api/v1/Customers,Restful接口已经有了~
Angular Restful接口绑定
我在layout.jade里加入了对angular库文件的引用
/* in layout.jade */
script(src="/javascripts/lib/angular.min.js")
script(src="/javascripts/lib/angular-route.min.js")
script(src="/javascripts/lib/angular-resource.min.js")
然后在app.js(这是加载在前端的angular用的app.js,不要跟后端express的app.js混淆了)里绑定restful接口
//注意在app的依赖里加上ngResource
var app = angular.module('**', ['ngResource']);
...
app.factory("Customer", function($resource){
return $resource("/api/v1/Customers/:id");
});
搞定,这样我们就可以在Controller中简单的存取数据了!
app.controller("CustomerListCtrl", function($scope, Customer){
var customer = {
name : "jerry",
comment : "handsome"
};
Customer.save(customer); //存数据
Customer.query(function(customers){
$scope.customers = customers;
}); //取数据
});
怎么样,是不是很方便,以后只需要在后端添加新的数据定义和在前端绑定新的数据接口就可以啦。
Mongo, Express, Angular, Node-- MEAN Stack搭建的更多相关文章
- soket.io.js + angular.js + express.js(node.js)
soket.io.js + angular.js + express.js(node.js) 今天搭建个soket.io.js + angular.js + express.js的环境, 采坑无数,特 ...
- LIGHTX-CMS —— 基于 Node.js,Express.js 以及 SQLite 3 搭建的个人博客系统
概述 LIGHTX-CMS 是我基于 Node.js,Express.js 以及 SQLite 3 搭建的个人博客发布系统. 项目本身可以拿来部署个人博客网站,同时我认为其也适合用以新手学习 Node ...
- paip.最好的脚本语言node js 环境搭建连接mysql
paip.最好的脚本语言node js 环境搭建连接mysql #====下载node...走十一个exe..容易的.. 1 #0----Hello world .js 2 #---------模 ...
- 前端框架(kraken、Express、Node、MVC)
You know my loneliness is only kept for you, my sweet songs are only sang for you. 前端框架相关知识记录. krake ...
- express+mysql+vue开发环境搭建
最近开始做一个实验室资产管理系统,后台使用node.js的Express框架,前端使用vue,数据库使用mysql.在这里开始简单记录一下开发过程和遇到的问题. 今天要说的是express+mysql ...
- Express入门( node.js Web应用框架 )
运用Express框架构建简单的NodeJS应用 Start 确认安装了NodeJS之后(最新的Node安装好后NPM也会自带安装了),npm可理解为nodejs的一个工具包.可通过查看版本来检测是 ...
- Node.js 环境搭建及简单应用
Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境.Node.js 使用了一个事件驱动.非阻塞式 I/O 的模型.如果你想创建自己的服务,那么Node.js是一个非 ...
- nodejs,node原生服务器搭建实例
nodejs,node原生服务器搭建实例
- 用Node.JS+MongoDB搭建个人博客(页面模板)(五)(结束)
<差不多先生> 我是差不多先生,我的差不多是天生.也代表我很天真,也代表我是个闲人.这差不多的人生,总是见缝插针. 求学的道路上总是孤独的,即使别人不理解我,认为我是奇葩!但没关系,我会坚 ...
随机推荐
- CSS3的自定义字体@font-face:将图片ICON转为字体
大家都知道现在各个浏览器都支持CSS3的自定义字体(@font-face),包括IE6都支持,只是各自对字体文件格式的支持不太一样.那么对于网站中用到的各种icon,我们就可以尝试使用font来实现, ...
- 带jsk证书,请求https接口
首先是三个返回的实体类 BaseVo.java package https2; import java.io.Serializable; import java.lang.reflect.Invoca ...
- 《JAVA多线程编程核心技术》 笔记:第二章:对象及变量的并发访问
一.基本概念1.安全的变量和不安全的变量2.脏读的理解3.锁重入:4.锁释放5.死循环:二.synchronized 的理解:三.synchronized 同步方法3.1 同步方法不具有继承性.3.2 ...
- ES6通过Set数组去重
一.Set 1.定义 Set对象是ES6中新定义的数据结构,类似于数组,它允许你存储任何类型的唯一值,不管是原始值还是对象引用. 2.语法 new Set([iterable]) iterable:可 ...
- Line---CodeForces 7C(扩展欧几里得算法)
题目链接:http://codeforces.com/problemset/problem/7/C AX+BY=C已知 A B C 求 X Y: #include <iostream> # ...
- 我的Android进阶之旅------>解决Android Studio全局搜索搜不到结果的问题
1.问题描述 今天使用Android Studio时,想通过使用快捷键Ctrl+Shift+F来进行全局搜索指定字符串,如下图所示:想搜索字符串"码农偷懒了", 打开string. ...
- curl: (60) SSL certificate problem: unable to get local issuer certificate
国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html 内部邀请码:C8E245J (不写邀请码,没有现金送) 国 ...
- PAT 甲级真题
1019. General Palindromic Number 题意:求数N在b进制下其序列是否为回文串,并输出其在b进制下的表示. 思路:模拟N在2进制下的表示求法,“除b倒取余”,之后判断是否回 ...
- git--公司中暂时用到的命令操作
使用的版本控制工具 git + phabricator arc Phabricator是软件开发管理工具,集成了code review, task tracking, version control ...
- 集成ssm+shiro出现的 问题
1.springmvc-servlet.xml .applicationContext.xml该如何配置include和exclude?,目前的做法是将.applicationContext.xml全 ...