Nodejs express框架 浅析
http://www.expressjs.com.cn/
1. 中间件
①挂载中间件的函数:app.use
var http = require('http');
var express = require('express');
var app = express();
使用自定义中间件
app.use('/',function(req , res , next){
console.log(‘这是自定义中间件’)
next(); 调用next表示执行后续的中间件代码
});
使用static中间件加载静态资源
app.use('/', express.static(__dirname + "/statics"));
app.get('/index', function(req, res) {
res.send("hello browser")
res.end();
})
http.createServer(app).listen(3000,function(err) {
if(err) throw err;
console.log('服务器连接成功');
})
安装中间件,npm install body-parser –save
使用中间件:
如果express是4.0以下版本需要挂载在express后面使用express.bodyParser( )
如果express是4.0以上版本,可以直接使用bodyParser( )
② 基础中间件介绍
(1)static静态资源处理中间件
(2)logger获取浏览器基本信息中间件
(3)bodyParser通过post方法提交的数据解析中间件
(4)query通过get方法提交的数据解析中间件
(5)cookieParser用户状态保存cookie解析中间件
(6)session启用session管理用户状态中间件
(7)favicon网站图标处理中间件
2. express路由
路由指如何定义应用的端点,以及如何响应客户端的请求(通俗的讲就是通过制定不同的路径,调用对应方法处理用户的请求)
路由是由一个URL、HTTP请求(GET、POST等)和若干个句柄组成
路由中的URL路径支持正则表达式的方式,例如:/abc?123,表示c可有可无
路由的链式编程:
app.route(‘/parma’).get(function(req,res,next){}).post(function(req,res,next){})
表示相同路径下不同请求方式的访问
① req参数的常用属性
app.get('/index', function(req, res) {
console.log(req.baseUrl); 挂载路由的路径,以根路径为标准
console.log(req.hostname);
console.log(req.ip); 本机的ip地址
console.log(req.path); 此处为/index
console.log(req.protocol); 传输协议,一般为http
console.log(req.query); 地址栏url中传输的参数
console.log(req.route); 路由对象
console.log(req.body); 以post方法提交的数据
console.log(req.cookies); 浏览器中存储的cookie
console.log(req.signedCookies); 浏览器中已签署的cookie,及已经加密过的cookie app.use(cookieParser(“secret”))
res.send("hello browser")
res.end();
})
② req参数的常用方法
(1)get(field)获取请求头中对应名称的属性
(2)is(type)判断是否有指定的mime类型,Content-Type
(3)param(name)获取指定名称的参数值(post,get均可)
③文件上传插件busboy
④ res参数的常用属性
(1)app表示express的应用对象
(2)headersSent表明是否发送过数据给响应对象,是一个boolean值
(3)Locals本地变量
⑤ res参数的常用方法
(1)set(key,value)设置响应头信息
(2)append(key,value)在响应头中追加数据
(3)cookie(name,value,[option])设置cookie
(4)clearCookie(name,[option])清除指定的cookie
(5)download(path,filename,fn)下载文件
(6)end(data,encoding)结束文本数据的输入
(7)get(field)获取响应头中对应的属性值
(8)json(body)发送json字符对象
(9)location(path)指定网站地址
(10)redirect(status,path)重定向到指定的路径
(11)render(view,locals,callback)渲染指定的视图
(12)type(“.html”)设置传递给浏览器文件的响应mime类型Content-Type
(13)sendStatus(302)设置状态码为302,重定向,加载location中的地址
(14)writeHead(302,{location:”http://www.baidu.com/”})设置状态码为302,且加载location中的地址,页面跳转到百度
(15)send(data)可以传递多种数据类型,但是每个路由中只能使用一次,且不能和sendStatus等带有send标识的方法同用
(16)write(data)传递数据
(17)end(data)响应结束标识方法
(18)download(“path” , setname , fn)下载文件
(19)sendFile(“path”)发送文件,此处为绝对路径
3. ejs模板引擎
简单高效的模板语言,通过数据和模板,可以生成HTML标记文本
ejs特点:
(1)快速编译和渲染
(2)简单的模板标签
(3)自定义标记分隔符
(4)文件的包含
(5)支持浏览器端和服务器端
(6)模板静态缓存
(7)支持express视图系统
① ejs成员函数
(1)Render(str,data,[option]):直接渲染字符串生成HTML
str:需要解析的字符串模板
data:数据
[option]:配置选项
(2)Compile(str ,[option]):编译字符串得到模板函数
str:需要解析的字符串模板
[option]:配置选项
[option]中的相关参数可以查阅文档了解使用方法
② ejs常用标签
(1)<% %>流程控制标签
(2)<%= %>输出标签(原文输出HTML标签)
(3)<%- %>输出标签(HTML会被浏览器解析)
(4)<%# %>注释标签
(5)%对标记转义
(6)-%>去除没有意义的空格
③ ejs1中的过滤器(查看文档了解使用方法)
Nodejs express框架 浅析的更多相关文章
- React第一篇: 搭建React + nodejs + express框架
前提: 需要安装Node.js (>6)版本 1.cmd进到本地某个目录, 逐行输入以下指令(以下括号为注释) npm install -g create-react-app (全局安装cr ...
- nodejs express 框架解密1-总体结构
本文是基于express3.4.6的. 1.express 代码结构为: bin/express 是在命令行下的生成express 框架目录文件用的 lib/express 是框架的入口文件 lib/ ...
- nodeJS express框架 中文乱码解决办法
最近在研究javascript 的服务端应用 node,之所以想要研究node,是因为前几个月一直在前端挣扎,从javascript入门到在项目中实际使用javascript,确实感悟颇深.javas ...
- nodejs express 框架 上传文件
web 项目应用express4.0框架 html 表单post 文件上传失败,后端无法获取提交文件 express不支持文件上传. 方式一 若是图片,可以将图片转码为BASE64上传 前端框架ang ...
- 安装nodejs express框架时express命令行无效
我也是看了这篇才明白.http://jingyan.baidu.com/article/922554468a3466851648f419.html 最近在看一本书,nodejs开发指南.至于出现这个问 ...
- Centos 编译安装nodejs&express框架
一. 下载nodejs 版本 wget http://nodejs.org/dist/v0.10.28/node-v0.10.28.tar.gz 二. 编译安装 cp node-v0.10.28.ta ...
- NodeJS express框架的使用
首先,可以通过npm或者淘宝镜像cnpm全局安装epress框架,这里不具体说了 npm install -g expressnpm install -g express-generator 新建一个 ...
- nodejs express 框架解密5-视图
本文档是基于express 3.4.6 的 在我们的代码中,渲染模板大致是这样写的 exports.index = function(req, res){ res.render('index', { ...
- nodejs express 框架解密4-路由
本文档是基于express3.4.6 express 的路由是自己去实现的,没有使用connect中的路由中间件模块. 1.在如何创建一个app那篇中,我们提到了路由, //router //路由 t ...
随机推荐
- chorme浏览器不支持audio/video中的autoplay属性的解决方法
在chrome 浏览器中输入:chrome://flags 再搜索audio,找到Autoplay policy 再在右侧的选项中设置为 no user gesture is required 即可
- dts--tests(一)
cmdline.py """ DPDK Test suite. Test cmdline. """ import utils from te ...
- MySQL字段属性介绍
引言 这次Qi号分享MySQL字段属性简介.下面资料是Qi号搜集大量资料与个人理解的整理. MySQL提供了一组可以赋给表中各个列的数据类型,每个类型都强制数据满足为该数据类型预先确定的一组规则,例如 ...
- PHP使用redis(一)
1,connect 描述:实例连接到一个Redis.参数:host: string,port: int返回值:BOOL 成功返回:TRUE;失败返回:FALSE <?php $redis = ...
- Deepin15.7 更改软件的jdk
最近更新了系统,发现smartsvn.smartgit.Dbeaver都无法打开了,上网googlel一下,发现是java9的问题,需要把软件的java版本更改一下就可以了 先上jdk的位置 一.sm ...
- photoshop入门笔记1:PS的快捷键
PS部分快捷键: 1.魔棒的作用:比较快捷的抠图工具,对于一些分界线比较明显的图像,通过魔棒工具可以很快速的将图像抠出,魔棒的作用是可以知道你点击的那个地方的颜色,并自动获取附近区域相同的颜色,使它们 ...
- B1081 检查密码 (15分)
B1081 检查密码 (15分) 本题要求你帮助某网站的用户注册模块写一个密码合法性检查的小功能.该网站要求用户设置的密码必须由不少于6个字符组成,并且只能有英文字母.数字和小数点 .,还必须既有字母 ...
- GCJ:2008 Round1AA-Minimum Scalar Product(有序数组倒序乘积和最小)
题目链接:https://code.google.com/codejam/contest/32016/dashboard#s=p0 Minimum Scalar Product This contes ...
- HDU 1384 Intervals(差分约束)
Intervals Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total ...
- Still unable to dial persistent://blog.csdn.net:80 after 3 attempts
动不动电脑有些网站打不开了,还报错: Still unable to dial persistent://blog.csdn.net:80 after 3 attempts 为什么呢? 是dns坏了? ...