nodejs笔记--express篇(五)

创建一个express + ejs的项目

express -e testEjsWebApp

cd testEjsWebApp

npm install

http://localhost:3000
Usage: express [options] [dir]

  Options:

    -h, --help          output usage information
    -V, --version       output the version number
    -e, --ejs           add ejs engine support (defaults to jade)
    -H, --hogan         add hogan.js engine support
    -c, --css <engine>  add stylesheet <engine> support (less|stylus|compass) (d
efaults to plain css)
    -f, --force         force on non-empty directory

ejs使用语法

  1.<%= %>

  这个标签在接到收到title: '<h1>Express</h1>'时,从显示效果来看,他直接输出HTML标签到页面上,输出的是转义后的变量值

  2.<%- %>   

  而这个标签,从显示效果上看,他没有直接输出HTML代码到页面上,输出的是没有转义后的变量值

  3.<% %>

  而这个标签,从显示上看,他循环了出来参数中的值,标签中是javascript逻辑代码,注意括号的开闭合

express项目分析

  先从app.js看起

  1.app.set(name,value)

  把名字为name的项的值设为value,用于设置参数

  app.set('views', path.join(__dirname, 'views')); 设置了模版文件夹的路径;主要清楚__dirname的意思就可以了,它是node.js中的全局变量,表示取当前执行文件的路径

  app.set('view engine', 'ejs'); 设置使用的模版引擎,我们使用的ejs

  2.app.use([path], function)

  用这个方法来使用中间件,因为express依赖于connect,有大量的中间件,可以通过app.use来使用;path参数可以不填,默认为'/' (项目中用到的就不分别解释了,用到的时候自已查一API的中间件部分)

  app.use(express.static(path.join(__dirname, 'public'))); 这一句中可能要注意一下,express.static( )是处理静态请求的,设置了public文件,public下所有文件都会以静态资料文件形式返回(如样式、脚本、图片素材等文件)

  3.app.get(name)

  获取名为name的项的值

GET和POST方式接收值,从直接效果上来看

  req.query:我用来接收GET方式提交参数

  req.body:我用来接收POST提交的参数

  req.params:两种都能接收到

解释一下req.body,Express处理这个post请求是通过中间件bodyParser

...

var bodyParser = require('body-parser');

...

app.use(bodyParser.json());
app.use(bodyParser.urlencoded());

...

没有这个中间件Express就不知道怎么处理这个请求,通过bodyParser中间件分析 application/x-www-form-urlencoded和application/json请求,并把变量存入req.body,这种我们才能够获取到!

如何字符串加密  Crypto http://nodejs.org/api/crypto.html

  createHash(algorithm)方法 ,这是利用给定的算法生成hash对象 

  Node.js提供的加密模块功能非常强大,Hash算法就提供了MD5、sha1、sha256等,根据需要去使用

  update(data, [input_encoding])方法,可以通过指定的input_encoding和传入的data数据更新hash对象,input_encoding为可选参数,没有传入则作为buffer处理 (input_encoding可为'utf-8'、'ascii'等)

  digest([encoding])方法,计算数据的hash摘要值,encoding是可选参数,不传则返回buffer (encoding可为 'hex'、'base64'等);当调用digest方法后hash对象将不可用;

如何使用session

"express-session" : "latest" 


//这里传入了一个密钥加session id
app.use(cookieParser('finder'));
//使用靠就这个中间件
app.use(session({ secret: 'finder'}));

如何使用cookies

//清除cookies
res.clearCookie('islogin');
  
//清除session
req.session.destroy();
原文地址:https://www.cnblogs.com/liubei/p/nodejs_5.html