Skip to content

crazyguagua/nodejs_learn

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Jan 3, 2017
0147d6c · Jan 3, 2017

History

5 Commits
Jan 3, 2017
Jan 3, 2017
Jan 3, 2017
Jan 3, 2017
Jan 3, 2017
Jan 3, 2017
Jan 3, 2017
Jan 3, 2017
Jan 3, 2017
Jan 3, 2017
Jan 3, 2017
Jan 3, 2017

Repository files navigation

#github地址 [email protected]:hahaxixi/nodejs_learn.git ##安装依赖

  1. express cnpm i [email protected] --save
  2. cnpm install -g supervisor 在开发过程中,每次修改代码保存后,我们都需要手动重启程序,才能查看改动的效果。使用 supervisor 可以解决这个繁琐的问题,全局安装 supervisor:运行 supervisor --harmony index 启动程序
  3. cnpm i ejs --save 模板引擎有很多,ejs 是其中一种,因为它使用起来十分简单,而且与 express 集成良好,所以我们使用 ejs。安装 ejs:

正式开发安装的依赖

npm i config-lite connect-flash connect-mongo ejs express express-formidable express-session marked moment mongolass objectid-to-timestamp sha1 winston express-winston --save 对应模块的用处: express: web 框架 express-session: session 中间件 connect-mongo: 将 session 存储于 mongodb,结合 express-session 使用 connect-flash: 页面通知提示的中间件,基于 session 实现 ejs: 模板 express-formidable: 接收表单及文件的上传中间件 config-lite: 读取配置文件 marked: markdown 解析 moment: 时间格式化 mongolass: mongodb 驱动 objectid-to-timestamp: 根据 ObjectId 生成时间戳 sha1: sha1 加密,用于密码加密 winston: 日志 express-winston: 基于 winston 的用于 express 的日志中间件

##知识点

  1. 路由获取参数的方法: req 包含了请求来的相关信息,res 则用来返回该请求的响应,更多请查阅 express 官方文档。下面介绍几个常用的 req 的属性: req.query: 解析后的 url 中的 querystring,如 ?name=haha,req.query 的值为 {name: 'haha'} req.params: 解析 url 中的占位符,如 /:name,访问 /haha,req.params 的值为 {name: 'haha'} req.body: 解析后请求体,需使用相关的模块,如 body-parser,请求体为 {"name": "haha"},则 req.body 为 {name: 'haha'}

  2. ejs 有 3 种常用标签: <% code %>:运行 JavaScript 代码,不输出 <%= code %>:显示转义后的 HTML内容 <%- code %>:显示原始 HTML 内容 3 中间件 express 中的中间件(middleware)就是用来处理请求的,当一个中间件处理完,可以通过调用 next() 传递给下一个中间件,如果没有调用 next(),则请求不会往下传递,如内置的 res.render 其实就是渲染完 html 直接返回给客户端,没有调用 next(),从而没有传递给下一个中间件。 通过 app.use 加载中间件,在中间件中通过 next 将请求传递到下一个中间件,next 可接受一个参数接收错误信息,如果使用了 next(error),则会返回错误而不会传递到下一个中间件. 看个小例子,修改 index.js 如下: var express = require('express'); var app = express();

    	app.use(function(req, res, next) {
    	  console.log('1');
    	  next(new Error('haha'));
    	});
    
    	app.use(function(req, res, next) {
    	  console.log('2');
    	  res.status(200).end();
    	});
    
    	app.listen(3000);
    

4 session 中间件会在 req 上添加 session 对象,即 req.session 初始值为 {},当我们登录后设置 req.session.user = 用户信息,返回浏览器的头信息中会带上 set-cookie 将 session id 写到浏览器 cookie 中,那么该用户下次请求时,通过带上来的 cookie 中的 session id 我们就可以查找到该用户,并将用户信息保存到 req.session.user 5 中间件的加载顺序很重要。如上面设置静态文件目录的中间件应该放到 routes(app) 之前加载,这样静态文件的请求就不会落到业务逻辑的路由里;flash 中间件应该放到 session 中间件之后加载,因为 flash 是基于 session 的

About

学习nodejs,开发blog

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published