从零学习node.js之express入门(六)

什么是express,为什么要使用express?根据官方网站的说法,express是一个基于 Node.js 平台的极简、灵活的web应用开发框架,它提供一系列强大的特性、丰富的API接口,对web应用的接口进行了二次的封装,提供了MVC模式,方便我们可以快速地创建各种web和移动应用。

Express 框架核心特性:

可以设置中间件来响应 HTTP 请求。

定义了路由表用于执行不同的 HTTP 请求动作。

可以通过向模板传递参数来动态渲染 HTML 页面。

本文也只是简单的了解下express框架的内容,希望大家能比较快速的入门,更多详细的内容还是阅读官网并查看相关的API。

express的中文官方网站:【Express

二、入门

创建一个目录myapp,进入到myapp后,使用命令npm express --save-dev把express安装到本地,然后创建app.js(或server.js)作为程序的入口。

// app.js var express = require('express'); var app = express(); app.get('https://www.jb51.net/', function(req, res){ res.send('hello world'); }); app.listen(3000, function(){ console.log('server has running at port 3000'); })

运行app.js文件:

$ node app.js server has running at port 3000

在浏览器中访问:3000/就能看到页面上输出的hello world。说明基本的express程序可以正常运行了。

2.1 APP

引入express模块后,执行express()得到一个app实例,app实例中有get, post, use, listen等方法。

app.get(path, handler) : 当使用get方法访问路径path时,执行handler指定的方法,而且handler方法还带有req和res两个参数供我们使用。req是请求过来时带的信息,比如参数query, body, 头部header等; res是我们作为服务器想要返回给浏览器的信息设置。res.send(‘hello world')表示是向页面中发送'hello world'字符串。

当然,如果想要接收post过来的请求,可以使用 app.post(path, function(req, res){}) 接收post到path的请求。

app.listen用来监听本地的端口后运行web程序,监听成功后执行回调函数。

2.2 路由

我们在之前讲解《从零学习node.js之搭建http服务器(二)》也说过一点路由的内容,不过那时候我们制定的路由规则非常简单,而且只是处理了3个左右的页面而已。而express则对路由功能进行丰富。

app.get(path, handler) : get方式访问path路径

app.post(path, handler) : post方式访问path路径

app.put(path, handler) : put方式访问path路径

app.delete(path, handler) : delete方式访问path路径

app.all(path, handler) : 任何方式访问path路径

同时,我们也应该注意的是: /是表示根路径下,/user是表示user路径下,如果访问/user/login时,是直接访问/user/login路由的,前面的两个路由是不访问的。

// 根路径下的请求 app.get('https://www.jb51.net/', function(req, res){ console.log('hello world'); res.send('hello world'); }); // /user路径下的请求 app.get('/user', function(req, res){ console.log('user'); res.send('huser'); }); // /user/login下的请求 app.get('/user/login', function(req, res){ console.log('user/login'); res.send('user/login'); });

而且,path路径还可以通过字符串匹配和正则匹配的方式进行路由选择。

2.3 RES响应方法

我们在刚上面的例子中,使用res.send()向页面中输出一段'hello world'的纯文本字符串,而且res.send()也可以输出其他类型的数据,比如html字符串(浏览器可以解析),Buffer类型,Object类型,Array类型等。

比如我们要输出一段html字符串。

var html = '<!DOCTYPE html>\ <html lang="en">\ <head>\ <meta charset="UTF-8" />\ <title>Document</title>\ </head>\ <body>\ <div>\ <p>hello world</p>\ <p><input type="text" /></p>\ </div>\ </body>\ </html>'; app.get('https://www.jb51.net/', function(req, res, next){ res.send(html); });

我们可以在浏览器上一个红色的hello world和一个文本输入框。但是若html的代码比较长,我们可以把这些代码都放到一个单独的html文件里,然后使用res.sendFile()方法,将html文件里的内容输出到页面中。

在根目录下创建一个index.html文件,把完整的html代码放进去,然后:

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

这样就能在浏览器中看到一个完整的页面了。

此外,res中还提供了一些别的方法供我们使用:

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

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