node.js,express入门看详细篇
先最简单的代码
安装 npm install express
app.js 代码内容
const express = require('express')
const app = express()
//单项流动
const mid1 = () => (req, res, next) => {
res.body = '请求1<br/>'
next()
}
const mid2 = () => (req, res, next) => {
res.body += '请求2<br/>'
next()
}
app.use(mid1())
app.use(mid2())
app.get('/', (req,res,next) => {
res.send(res.body +'业务处理中')
})
app.listen()
打开 localhost:2334端口可以看到
在上一个丰富点的代码,包含 swig模版引擎,静态资源加载,mongoose使用
var express = require('express'); //引入express
var swig = require('swig'); //引入swig模版引擎 同类的还有ejs bug
var mongoose = require('mongoose'); // 引入数据库 mongoose 需预先安装数据库
//加载 bodeyparser
var bodyParser = require('body-parser'); // 引入 body-parser 中间键
var Cookies = require('cookies'); // 引入cookies
var app =express(); // 实例化 express
var User = require('./models/User');
//设置静态文件托管
app.use('/public',express.static(__dirname + '/public')); // app.use 加载中间键
//加载模板模块
app.engine('html',swig.renderFile)
//设置模板目录第一个参数固定
app.set('views','./views');
// 注册所有使用模板引擎 第一个参数必须是view engine
app.set('view engine','html');
swig.setDefaults({cache: false}); // 默认缓存静态页面 false方便调试
app.use(bodyParser.urlencoded({extended: true}));
app.use(function(req,res,next){
req.cookies = new Cookies(req,res);
//解析登录用户的cookie信息
req.userInfo ={};
if(req.cookies.get('userInfo')){
try{
req.userInfo = JSON.parse(req.cookies.get('userInfo'));
//获取当前登录用户类型 操作数据方法
User.findById(req.userInfo._id).then(function(userInfo){
req.userInfo.isAdmin = Boolean(userInfo.isAdmin);
next(); //next() 指引前往下一步
})
}catch(e){
next();
}
}else{
next();
}
});
//划分路由到不同的文件夹
app.use('/admin',require('./routers/admin'));
app.use('/api',require('./routers/api'));
app.use('/',require('./routers/main'));
// MONGOOSE 链接数据库
mongoose.connect('mongodb://localhost:27017/test',function(err){
if(err){
console.log("数据库链接失败");
}else{
console.log("数据库链接成功");
app.listen();
}
});
我在上面代码中做了详细的注写,还会详细完善
github地址:https://github.com/xiaoyanbin/bolg
一个完整的node.js +mongoose + express 实现的代码
node.js,express入门看详细篇的更多相关文章
- Node.js快速入门
Node.js是什么? Node.js是建立在谷歌Chrome的JavaScript引擎(V8引擎)的Web应用程序框架. 它的最新版本是:v0.12.7(在编写本教程时的版本).Node.js在官方 ...
- Node.js最新技术栈之Promise篇
前言 大家好,我是桑世龙,github和cnodejs上的i5ting,目前在天津创业,公司目前使用技术主要是nodejs,算所谓的MEAN(mongodb + express + angular + ...
- Node.js Express 框架学习
转载:http://JavaScript.ruanyifeng.com/nodejs/express.html#toc0 感觉很牛的样子,不过觉得对初学者没太大用,里面很多例子用的api都没有详细的说 ...
- Windows下Node.js+Express+WebSocket 安装配置
Linux参考: Linux安装Node.js 使用Express搭建Web服务器 Node.js是一个Javascript运行环境(runtime).实际上它是对Google V8引擎进行了封装.V ...
- Nodejs学习笔记(六)--- Node.js + Express 构建网站预备知识
目录 前言 新建express项目并自定义路由规则 如何提取页面中的公共部分? 如何提交表单并接收参数? GET 方式 POST 方式 如何字符串加密? 如何使用session? 如何使用cookie ...
- Nodejs学习笔记(六)—Node.js + Express 构建网站预备知识
前言 前面经过五篇Node.js的学习,基本可以开始动手构建一个网站应用了,先用这一篇了解一些构建网站的知识! 主要是些基础的东西... 如何去创建路由规则.如何去提交表单并接收表单项的值.如何去给密 ...
- Node.js开发入门—HelloWorld再分析
在Node.js开发入门(1)我们用http模块实现了一个简单的HelloWorld站点,这次我们再来细致分析下代码.了解很多其它的细节. 先看看http版本号的HelloWorld代码: 代码就是这 ...
- modeJS 深了解(1): Node.js + Express 构建网站预备知识
转载:http://www.cnblogs.com/zhongweiv/p/nodejs_express_webapp1.html 目录 前言 新建express项目并自定义路由规则 如何提取页面中的 ...
- React入门看这篇就够了
摘要: 很多值得了解的细节. 原文:React入门看这篇就够了 作者:Random Fundebug经授权转载,版权归原作者所有. React 背景介绍 React 入门实例教程 React 起源于 ...
随机推荐
- android:padding和android:margin的区别 详解
转载请说明博客地址:http://blog.csdn.net/qq_32059827/article/details/51487997 看了网上的类似博客,并没有给出确定的区别.现在具体分析一下pad ...
- 【Unity Shaders】Reflecting Your World —— Unity3D中简单的Cubemap反射
本系列主要参考<Unity Shaders and Effects Cookbook>一书(感谢原书作者),同时会加上一点个人理解或拓展. 这里是本书所有的插图.这里是本书所需的代码和资源 ...
- Java实现简易的文件的迁移器
Java作为世界上最受欢迎的一门编程语言,自然是有原因的.比如说我们可以直接的方便的调用其中的函数来实现我们想要的功能. 一个偶然的机会,我浏览API文档时发现了一个名为FileDialog的类,然后 ...
- Java 开源Wiki:XWiki
XWiki是一个由Java编写的基于LGPL协议发布的开源wiki和应用平台.之前只接触过MediaWiki,但是MediaWiki是用PHP写的,一直想找找看有没有熟悉的JAVA语言的Wiki系统. ...
- UML之对象图
对象图对包含在类图中的事物的实例建模,对象图显示了在某一时间点上一组对象以及他们之间的关系.对象图用于对系统的静态设计视图或静态交互视图建模,这包括对某一时刻的系统快照建模,表示出对象集.对象的状态以 ...
- Obj-C中内存的管理一瞥
注意,ARC仅仅(自动)释放你手工管理的Objective-C类实例的内存, 但是不会释放由C函数或者Core Foundation(Cocoa的底层,C语言的变体)申请的内存.
- struts ajax多级下拉菜单
先看项目截图: 看看要加入的jar包 除了struts核心的那个几个之外,我们还需要这两个 OK先看struts.xml <?xml version="1.0" encodi ...
- 写论文如何做相关工作(realted work)的调研
1.找一篇目标研究领域的中文综述,读懂,对该领域有了些基本的了解,如何找到好的综述,就是要关注一些大牛的实验组的综述和进展: 2.找该中文综述引用的外文文献来看,通常是一些比较经典的文献 3.找这些外 ...
- AngularJS进阶(十六)脏值检查
脏值检查 注:请点击此处进行充电! 需求 在项目开发过程中,需要对药店信息进行更改.如下图所示.现在的需求是:当药店信息没有发生变化时,点击"更新信息"按钮,提示"药店信 ...
- 标准会话管理器——StandardManager
用于保存状态的会话对象已经有了,现在就需要一个管理器来管理所有会话,例如会话id生成.根据会话id找出对应的会话.对于过期的会话进行销毁等等操作.用一句话描述标准会话管理器:提供一个专门管理某个web ...