express框架的基本使用

Express 简介

express是一个利用node.js创建Web应用的框架,它具有的核心特性如下:

  • 可以设置中间件相应HTTP请求
  • 定义了路由表用于执行不同的 HTTP 请求动作(页面切换等等)。
  • 可以通过向模板传递参数来动态渲染 HTML 页面。

安装express

使用npm进行安装(如果不知道什么是npm建议先入门一下node.js,尤其是模块系统),执行以下代码:

npm install express

安装完成后可以查看express使用的版本号:

npm list express

若出现以下结果,证明安装成功:

在这里插入图片描述

在实际应用开发中也可以把版本号写到package.json文件的"dependences"中。
另外需要安装一些工具包以供后续开发。

npm install body-parser

创建一个express项目并关联到服务器

//server.js
var express =require("express");
var http=require("http");

const app=express();
const httpServer=http.createServer(app);
httpServer.listen(4000,function (){
    console.log("Server listening on 4000")
});

执行以上代码,控制台输出"Server listening on 4000",表示关联成功,现在访问localhost:4000即访问该网站。

在上述代码中,两个require语句导入了对应的模块,app为express的一个对象,但是此时的app并未监听本地服务器地址,因此需要http模块来关联,使用 http.createServer(app) 来创建一个http服务器,将app作为参数传入该函数中,并让该服务器监听端口4000。此时服务器已经搭建完成,但是由于里面是没有内容的,所以打开了该网站也没有意义。

下面我们试着在该页面输出一个Hello World!增加两行代码:

//server.js
var express =require("express");
var http=require("http");

//在主页面输出Hello World!
app.get('/',function (req,res){
    res.send('Hello World!');
});

const app=express();
const httpServer=http.createServer(app);
httpServer.listen(4000,function (){
    console.log("Server listening on 4000")
});

app.get() 函数有两个参数,第一个参数是’/',这是路由路径,表示根目录,当文件里有多级路由的时候,就可以监听不同界面收到的信息。第二个参数是回调函数,利用Send() 向前端主页面发送信息,并将其显示在主页上。

很好,现在你已经掌握了express+node.js了。

利用express部署静态文件

静态文件是指html,css,图片等文件,以下是一个html文件,决定了打开localhost之后的页面布局。在项目根目录创建一个public文件夹,并将该文件放入。


<html>
<body>
<form action="http://127.0.0.1:4000/process_get" method="GET">
    First Name: <input type="text" name="first_name">  <br>

    Last Name: <input type="text" name="last_name">
    <input type="submit" value="Submit">
form>
body>
html>

下面修改服务端代码:

var express =require("express");
var http=require("http");

const app=express();
const httpServer=http.createServer(app);

//设置静态文件目录,它与原生node.js中使用path和join来实现处理静态文件是等价的
app.use("/public",express.static('public'));
//app.use的作用和app.get差不多,第一个参数是路由

//设置路由及对应文件,当浏览器输入地址/index.html的时候,将本地html发送过去并展示。
app.get('/index.html',function (req, res) {
    res.sendFile(__dirname+"/public/index.html");
})

//process_get是html中action指定的路由
app.get('/process_get',function (req, res) {
    //注意这里的命名必须要保证和html里面的input命名一致
    let response={
        "first_name":req.query.first_name,
        "last_name":req.query.last_name
    };
    console.log(response);
    res.end(JSON.stringify(response));
});

httpServer.listen(4000,function (){
    console.log("Server listening on 4000")
});

此时在浏览器中访问 localhost:4000/index.html 即可查看对应页面。

在index.html中,定义了一个表单form,包含交互控件(input等)。表单后的参数action="http://127.0.0.1:4000/process_get"处理表单提交的URL。method表示该表单执行的动作,“GET"是表单上的数据会附在action的URL中,server.js中的app.get(‘/process_get’,…) 就是来监听这一数据的。另外method可以是"POST”,会将数据发送到服务器,下面将详细介绍。

POST方法提交表单数据


<html>
<body>
<form action="http://127.0.0.1:4000/process_post" method="POST">
    First Name: <input type="text" name="first_name">  <br>

    Last Name: <input type="text" name="last_name">
    <input type="submit" value="Submit">
form>
body>
html>

与上文中的html相比,将get改成了post。

var express =require("express");
var http=require("http");
var bodyParser=require('body-parser')

//创建URL解析器
var urlencodedParser=bodyParser.urlencoded({extended:false});
const app=express();
const httpServer=http.createServer(app);

//设置静态文件目录,它与原生node.js中使用path和join来实现处理静态文件是等价的
app.use("/public",express.static('public'));
//app.use的作用和app.get差不多,第一个参数是路由

//设置路由及对应文件,当浏览器输入地址/index.html的时候,将本地html发送过去并展示。
app.get('/index.html',function (req, res) {
    res.sendFile(__dirname+"/public/index.html");
})

//注意这里是app.post,将此处的process_get改成process_post,传入URL解析器
app.post('/process_post',urlencodedParser,function (req, res) {
    //注意这里的命名必须要保证和html里面的input命名一致
    let response={
        //注意这里改成了body
        "first_name":req.body.first_name,
        "last_name":req.body.last_name
    };
    console.log(response);
    res.end(JSON.stringify(response));
});

httpServer.listen(4000,function (){
    console.log("Server listening on 4000")
});

可以发现,POST能够实现的功能和GET类似,因此有时候可以使用GET代替POST。

现在你已经学会了express应用程序的基本框架了,并且也学会了使用传统的GET和POST方法实现前后端数据传输。现在可以发挥想象力做点小东西试一试了!

学习笔记,原创不易。如有错误,欢迎指出。

你可能感兴趣的:(node.js,express)