浅谈Node.js轻量级Web框架Express4.x使用指南
Express是一个轻量级的Web框架,简单、灵活 也是目前最流行的基于Nodejs的Web框架 通过它我们可以快速搭建功能完整的网站 (express 英文意思:特快列车) Express现在是4.x版本,更新很快,并且不兼容旧版本,导致现在市面上很多优秀的Node书籍过时 这篇文章是一篇入门级的Express使用,需要一定Node.js的基础 Web应用创建首先要做的是下载express并引用 全局安装就+个-g 引用express 通过app我们就可以使用各种express的API 在3.x版本的时候是这样写的 现在这个函数已经被抛弃了 下面正式创建应用 启动之后就能给够在页面看到效果 app.get()上面的app.listen()就不多说了 用于监听端口 用于用于处理客户端向服务器发送的GET请求 path表示请求的路径 回调函数的req和res是request和response的意思 request表示客户端发送的HTTP请求信息 response表示服务器发送的HTTP响应信息 使用res.send()可以向客户端发送信息 app.get('/',res){
res.send(' Express');}); app.get('/demo',res){ res.send(' Demo');}) app.get('/*',res){ res.send(' 404}) |
含义 |
---|
Response对象:
含义 |
---|
挑一些重点
req.query
req.query可以获取请求路径参数的对象
向服务器发送请求 http://localhost:3000/?user=tester&pass[a]=123&pass[b]=456
console.log(req.query);
console.log(req.query.user); //tester
console.log(req.query.pass.a); //123
console.log(req.query.pass.b); //456
res.end();
});
app.listen(3000);
req.params
req.params可以解析复杂路由规则上的属性 (req.param综合了req.query和req.param的功能,但是被移除了不要使用)
向服务器发送请求 http://localhost:3000/123456
console.log(req.params.id); //123456
res.end();
});
app.listen(3000);
这样不论我在根路径后输入的是什么
都会被解析为req.params.id
res.send()
res.send用于向客户端响应信息 并且它的强大之处在于可以智能的处理我们传递的不同类型参数
当参数为字符串,会将响应头Content-Type默认设置为text/html
也就是解析为html呈现在我们的页面上
当参数为数字,会自动帮我们设置响应体(状态码…)
当参数为数组或对象,它会响应一个JSON
res.redirect()
使用这个方法可以让我们对网页重定向
比如使用绝对url跳转到不同的域名
res.redirect()默认响应状态码是302
可以更改这个状态码作为res.redirect()的第一个参数
res.redirect(302,'demo');
});
app.get('/demo',res){
res.end();
});
app.listen(3000);
当在url地址栏中输入http://localhost:3000
页面就会重定向到http://localhost:3000/demo
静态资源
静态资源就是指我们在开发中用到的css、js、img等等
它们需要存放到一个静态资源目录
当浏览器发出了一个非HTML文件请求
服务器就会从这个静态资源目录下去查找文件
我们一般在根目录下创建一个public文件来存储
并在public中创建stylesheets、javascripts、images等文件夹
用来存储特定类型的资源
指定静态资源目录的方法上面已经提到了
比如说我们的html中有这样的代码
那么客户端运行发出请求
服务器就会在public的javascripts文件夹下找到jQuery.js静态资源
模板引擎
express框架默认是ejs和jade渲染模板
这里以jade为例
使用时肯定要下载
再通过app.set()指定查找模板文件的目录(类似于静态资源)
并指定模板文件后缀为jade
(如果不使用模板而使用原生html,app.set('view engine','html');)
如果我们想要访问模板该怎么做呢?
很简单,只需要一个方法res.render()
现在我写了一个简单的jade模板(关于jade语法超出本文讨论范围)
通过res.render渲染
app.set('views','jade');
app.get('/',res){
res.render('index',{
title: 'Express',content: 'this is an example'
});
});
app.listen(3000);
res.render()
res.render(view[,datas][,callback])
用于对网页模板进行渲染
第一个参数是要渲染的模板名称
第二个参数是传递给模板的变量,以对象形式存储,没有可省略
第三个参数是渲染后回调函数,可以省略
路由
路由的意思就是根据不同的路径,来指定不同的处理方法
我们一般把不同的路由封装进不同的模块
首先在根目录下创建一个文件夹routes存储路由
现在我在routes文件夹下创建俩个路由文件index.js和users.js
修改app.js
var users = require('./routes/users');
app.use('/',index);
app.use('/users',users);
app.listen(3000);
这样表示http://localhost:3000/的路由交给index处理
http://localhost:3000/users的路由交给users处理
下面简单的实现一下路由
res.end('index');
});
router.get('/123',function(){
res.end(123);
});
module.exports = router;
res.end('users');
});
module.exports = router;
通过express.Router()创建的router就像一个mini版的app一样
app能做的,router都能做
只是我们把逻辑都封装到了各个路由模块中
上面代码的结果:
body-parser中间件
作为一个入门级文章
最后就来浅显的谈一个中间件body-parser吧
其实express在3.x版本中内置了很多中间件
但是4.x版本就将出static以外的所有中间件全部抽离出来了
所以就需要我们单独安装
对照表如下:
Express 4.0 |
---|
刚才就提到了POST请求有所不同
不同的地方就在于我们需要body-parser这个中间件来处理数据
通过req.body来获得数据
首先使用前不要忘记下载
app.use(bodyParser.urlencoded({ extended: false }));
app.get('/',res){
res.send('<form method="POST" action="./form">
<input type="text" name="user">
<input type="submit">
app.listen(3000);
下面这四个方法分别用于对body内容采取不同的处理方法
- bodyParser.json(options) 处理JSON数据
- bodyParser.raw(options) 处理buffer数据
- bodyParser.text(options) 处理文本数据
- bodyParser.urlencoded(options) 处理UTF-8编码数据
这样我首先通过get请求获取主页面
提交表单向服务器发送post请求
服务器响应结果
express-generator
通过express-generator应用生成器
可以为我们快速生成项目雏形
在你要生成项目的目录中下载express-generator
然后输入
express <项目文件名>
这样express就会把必要的文件夹以及代码快速生成了
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程之家。
(编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!