浅谈Node.js轻量级Web框架Express4.x使用指南(3)

//app.js var express = require('express'); var app = express(); app.get('/:id', function(req, res, next){ console.log(req.params.id); //123456 res.end(); }); app.listen(3000);

这样不论我在根路径后输入的是什么

都会被解析为req.params.id

res.send()

res.send用于向客户端响应信息 并且它的强大之处在于可以智能的处理我们传递的不同类型参数

app.get('https://www.jb51.net/', function(req, res, next){ res.send('express'); });

当参数为字符串,会将响应头Content-Type默认设置为text/html

也就是解析为html呈现在我们的页面上

app.get('https://www.jb51.net/', function(req, res){ res.send(200); });

当参数为数字,会自动帮我们设置响应体(状态码…)

app.get('https://www.jb51.net/', function(req, res){ res.send([1, 2, 3]); });

当参数为数组或对象,它会响应一个JSON

res.redirect()

使用这个方法可以让我们对网页重定向

比如使用绝对url跳转到不同的域名

app.get('https://www.jb51.net/', function(req, res){ res.redirect('http://www.baidu.com'); });

res.redirect()默认响应状态码是302

可以更改这个状态码作为res.redirect()的第一个参数

//app.js var express = require('express'); var app = express(); app.get('https://www.jb51.net/', function(req, res){ res.redirect(302, 'demo'); }); app.get('/demo', function(req, res){ res.end(); }); app.listen(3000);

当在url地址栏中输入:3000

页面就会重定向到:3000/demo

静态资源

静态资源就是指我们在开发中用到的css、js、img等等

它们需要存放到一个静态资源目录

当浏览器发出了一个非HTML文件请求

服务器就会从这个静态资源目录下去查找文件

我们一般在根目录下创建一个public文件来存储

并在public中创建stylesheets、javascripts、images等文件夹

用来存储特定类型的资源

指定静态资源目录的方法上面已经提到了

var path = require('path'); app.use(express.static(path.join(__dirname, 'public')));

比如说我们的html中有这样的代码

<link href="https://www.jb51.net/javascripts/jquery.js" media="screen">

那么客户端运行发出请求

服务器就会在public的javascripts文件夹下找到jQuery.js静态资源

模板引擎

express框架默认是ejs和jade渲染模板

这里以jade为例

使用时肯定要下载

npm install jade --save

再通过app.set()指定查找模板文件的目录(类似于静态资源)

并指定模板文件后缀为jade

app.set('views', path.join(__dirname, 'views')); app.set('view engine', 'jade');

(如果不使用模板而使用原生html,app.set('view engine', 'html');)

如果我们想要访问模板该怎么做呢?

很简单,只需要一个方法res.render()

浅谈Node.js轻量级Web框架Express4.x使用指南

现在我写了一个简单的jade模板(关于jade语法超出本文讨论范围)

//views/index.jade doctype html html head title= title link(rel='stylesheet', href='https://www.jb51.net/stylesheets/style.css') body h1= title p= content

通过res.render渲染

//app.js var express = require('express'); var path = require('path'); var app = express(); app.use(express.static(path.join(__dirname, 'public'))); app.set('views', path.join(__dirname, 'views')); app.set('view engine', 'jade'); app.get('https://www.jb51.net/', function(req, res){ res.render('index', { title: 'Express', content: 'this is an example' }); }); app.listen(3000);

浅谈Node.js轻量级Web框架Express4.x使用指南

res.render()

res.render(view[, datas][, callback])

用于对网页模板进行渲染

第一个参数是要渲染的模板名称

第二个参数是传递给模板的变量,以对象形式存储,没有可省略

第三个参数是渲染后回调函数,可以省略

路由

路由的意思就是根据不同的路径,来指定不同的处理方法

我们一般把不同的路由封装进不同的模块

首先在根目录下创建一个文件夹routes存储路由

现在我在routes文件夹下创建俩个路由文件index.js和users.js

浅谈Node.js轻量级Web框架Express4.x使用指南

修改app.js

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wypyjj.html