前言

作为一个从后端转全栈的码农,我一直使用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的依赖里加上ngResourcevar 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;});   //取数据});

怎么样,是不是很方便,以后只需要在后端添加新的数据定义和在前端绑定新的数据接口就可以啦。

转载于:https://www.cnblogs.com/lkiversonlk/p/4878139.html

Mongo, Express, Angular, Node-- MEAN Stack搭建相关推荐

  1. paip.最好的脚本语言node js 环境搭建连接mysql

    paip.最好的脚本语言node js 环境搭建连接mysql #====下载node...走十一个exe..容易的.. 1 #0----Hello world   .js 2 #---------模 ...

  2. 用Node.JS+MongoDB搭建个人博客(成品展示)

    在博客里可以随意畅写和分享自己喜欢的技术,和网友分享知识也是一种提升.根据自己所发表的博客也能更加加深印象. 与此同时写博客也可以提高自己的写作能力(虽然不咋地),但我相信博客只会越写越有质量的. 个 ...

  3. 腾讯技术课|基于Elastic Stack 搭建日志分析平台

    为了让读者们可以更好的理解「如何基于Elastic Stack 搭建日志分析平台」,腾讯技术工程公众号特别邀请腾讯基础架构部的陈曦工程师通过语音录播分享的方式在「腾讯技术课」小程序里同步录制了语音+P ...

  4. node.js开源文件服务器,本地node.js服务器搭建

    本地node.js服务器搭建并通过浏览器访问服务器 1 2 3 github下载express https://github.com/expressjs/express 1.首先 检查是否安装了nod ...

  5. Node.js环境搭建npm安装

    Node.js环境搭建 什么使Node.js呢?我们知道JavaScript开始作为客户端语言,但早已在浏览器端一统江湖,这时,野心越来越大,它就想向服务器端拓展了,于是Node.js就是这样的,我们 ...

  6. node+koa2+mysql搭建博客后台

    本文将详细讲解使用node+koa2+mysql搭建博客后台的全过程. 开发环境 node 8.3.0及以上 npm 5.3.0及以上 mysql 5.7.21 具体的环境配置可查看我的上一篇文章 准 ...

  7. 使用Express在Node.js中实现非常基本的路由

    by Pau Pavón 通过保罗·帕文(PauPavón) 使用Express在Node.js中实现非常基本的路由 (Really, really basic routing in Node.js ...

  8. express路由子路由器_使用Express在Node中构建您的第一个路由器

    express路由子路由器 本文最初发布在Okta开发人员博客上 . 感谢您支持使SitePoint成为可能的合作伙伴. 如果最近几年您使用Node进行过任何Web开发,那么您可能已经使用过Expre ...

  9. node Express.js node:internal/modules/cjs/loader:988 throw err; ^ Error: Cannot find module ‘

    文章目录 报错信息 报错原因及解决方案 报错信息 PS D:xxx\Front-End\Ajax> node Express.js node:internal/modules/cjs/loade ...

  10. 如何快速用node在本地搭建一个服务器

    众所周知,服务器是通过安装特殊的软件(或者运行特殊的代码)来提供网络服务的机器.那么我们的电脑可不可以弄成一个服务器,来供他人访问呢? 答案是可以的,这里我们需要按照一下node.js这个软件.具体按 ...

最新文章

  1. python sql语句传参数_pyMySQL SQL语句传参问题,单个参数或多个参数说明
  2. 浮动和清除(闭合)浮动
  3. centos 7 163 yum 源 python 2.7.5
  4. Jupyter 中 ValueError: Duplicate names are not allowed.的问题解决
  5. zabbix server is not running解决办法
  6. 英语语音识别软件_识别英语语音的软件_英文语音识别软件 - 云+社区 - 腾讯云...
  7. 【音频处理】WAV 文件格式分析 ( 逐个字节解析文件头 | 相关字段的计算公式 )
  8. MUI 的侧滑菜单 详解
  9. ArcGIS中的 .tpk数据
  10. 微信开发如何优雅的注入token(2)
  11. 完整的OpenDDS的发布订阅编写及源码(Windows)
  12. 铁矿石加速下跌,沪铜认购大涨,甲醇09-01季节性反套2022.4.22
  13. 正点原子DS100手持示波器测试记录
  14. OpenGL总结6-圆柱纹理贴图
  15. HTML 之 块级元素、行内元素和行内块元素之间的嵌套规则
  16. 什么是promise?promise的作用是什么?
  17. NovAtel 卫星接收机 718D 数据手册简介
  18. ESP32学习一-程序下载(windows工具)
  19. 海信电视出现信息服务器,电视机一直显示启动中是什么原因_海信电视一直系统启动...
  20. 使用Office Tool Plus+KMS部署Office365和Visio等工具

热门文章

  1. java 方法 内部类,Java 面向对象 之 方法中内部类
  2. vue是否可以做行车轨迹_特斯拉-概念自行车,是否可以走进大众生活
  3. 《统计学习方法》——逻辑斯蒂回归
  4. 关键词提取算法TF-IDF
  5. PostgreSQL高级扩展之IP4R
  6. Spring基础精华知识点
  7. Mac的一些使用技巧
  8. Windows8中pid为4的system进程占用80端口的解决办法
  9. [asp.net控件]asp.net页面传值汇总
  10. PHP 和 AJAX MySQL 数据库实例