Node.js Express框架

一、Express 介绍

    Express是一个最小的,灵活的Node.js Web应用程序框架,它提供了一套强大的功能来开发Web和移动应用程序。 它有助于基于Node Web应用程序的快速开发。Express框架的核心功能是:

  • 允许设立中间件响应HTTP请求
  • 定义了用于执行基于HTTP方法和URL不同动作的路由表
  • 允许动态渲染基于参数传递给模板HTML页面

二、安装Express

安装Express 框架全局使用NPM,以便它可以被用来使用Node终端创建Web应用程序。

$ npm install express --save

上面的命令在本地node_modules目录保存安装,并创建一个目录express在node_modules里边。还有,应该使用express安装以下几个重要的模块:

u body-parser - 这是一个Node.js中间件处理JSON,Raw,文本和URL编码的表单数据

u cookie-parser - 解析Cookie头和填充req.cookies通过cookie名字键控对象

u multer - 这是一个Node.js的中间件处理multipart/form-data

$ npm install body-parser --save

$ npm install cookie-parser --save

$ npm install multer --save

三、Hello world 示例

     一个非常基本的Express应用程序,它会启动服务器,并侦听端口3000等待连接。这个应用程序使用"Hello World! "回应!为请求网页。 对于所有其他路径,这将响应一个404表示未找到。

1、在F: odejs下新建server.js文件:

var express = require('express');

var app = express();

app.get('/',function(request,response){

    response.send("Hello World");

});

var server = app.listen(8081,function(){

    var host = server.address().address

    var port = server.address().port

  console.log("Example app listening at http://%s:%s",host,port);

})

    2、在node.js command prompt窗口下运行server.js文件

   

    3、在浏览器中访问http://localhost:8081/

 

四、GET 方法:通过使用HTML表单使用GET方法传递两个值

1、前端页面(index.html)

<body>

    <form action="http://127.0.0.1:8082/process_get" method="GET">

       First Name:

        <input type="text" name="first_name">

        <br><br>

       Last Name:

         <input type="text" name="last_name">

        <br><br>

        <input type="submit" value="Submit">

    </form>

</body>

 2、server.js:

var express = require('express');

const { response } = require('express');

var app = express();

app.get('/index.html',function(request,response){

    response.sendFile(__dirname+"/"+"index.html");

});

app.get('/process_get',function(req,res){

   let response = {

        first_name:req.query.first_name,

        last_name:req.query.last_name

    };

    console.log(req.query.first_name);

    res.end(JSON.stringify(response));

});

var server = app.listen(8082,function(){

    var host = server.address().address

    var port = server.address().port

    console.log("Example app listening at http://%s:%s",host,port);

})

 

五、POST 方法:通过使用HTML表单POST方法提交两个值

   1、前端页面(index.html):

<body>

    <form action="http://127.0.0.1:8081/process_post" method="POST">

        First_Name:

        <input type="text" name="first_name">

        <br><br>

        Last_Name:

        <input type="text" name="last_name">

        <br><br>

        <input type="submit" value="Submit">

    </form>

</body>

  2、服务文件(server.js)

var express = require('express');

var app = express();

var bodyParse = require('body-parser');

var urlencodeParser = bodyParse.urlencoded({extended:false});

app.use(express.static('public'));

app.get('/index.html',function(req,res){

    res.sendFile(__dirname+"/"+"index.html");

})

app.post('/process_post',urlencodeParser,function(req,res){

    let response = {

        first_name:req.body.first_name,

        last_name:req.body.last_name

    };

    console.log(response);

    res.send(JSON.stringify(response));

})

var server = app.listen(8081,function(){

    var host = server.address().address

    var post = server.address().port

    console.log("Example app listening at http://%s:%s",host,post);

})

 

六、文件上传:在HTML代码创建一个文件上传表单。提交方法设置为POST,以及enctype属性设置为 multipart/form-data

   1、上传页面(up.html)

 <body>

    <form action="http://127.0.0.1:8081/file_upload" method="post" enctype="multipart/form-data">

        <input type="file" name="file" size="50" />

        <br />

        <input type="submit" value="Upload File" />        

    </form>

</body>

  2、服务器代码(upload.js)

var express = require('express');

var app = express();

var fs = require("fs");

var bodyParser = require('body-parser');

var multer  = require('multer');

app.use(express.static('public'));

app.use(bodyParser.urlencoded({ extended: false }));

app.use(multer({ dest: '/tmp/'}));

app.use(express.static('public'));

app.use(bodyParser.urlencoded({extended:false}));

app.use(multer({dest:'/tmp/'}));

app.get('/up.html',function(req,res){

    res.sendFile(__dirname+"/"+"up.html");

})

app.post("/file_upload",function(req,res){

    console.log(req.files.file.name);

    console.log(req.files.file.path);

    console.log(req.files.file.type);

    var file = __dirname+"/"+req.files.file.name;

    fs.readFile(req.files.file.path,function(err,data){

        fs.writeFile(file,data,function(err){

            if(err){

                console.log(err);

            }else{

                 response = {

                    message:'File upload successfully',

                    filename:req.files.file.name

                };

            }

            console.log(response);

            res.end(JSON.stringify(response));

        });

    });

})

var server = app.listen(8081,function(){

    var host = server.address().address;

    var port = server.address().port;

    console.log("Example app listening at http://%s:%s",host,port);

})

 

七、Cookies 管理:可以发送cookie来Node.js加载服务器,它可以处理使用下面的中间件选项。下面是一个简单的例子来打印所有客户端发送的cookie。

var express      = require('express')

var cookieParser = require('cookie-parser')

var app = express()

app.use(cookieParser())

app.get('/', function(req, res) {

  console.log("Cookies: ", req.cookies)

})

app.listen(8081)

原文地址:https://www.cnblogs.com/lone5wolf/p/13826715.html