Node.js Express框架
来源:互联网 发布:java ee看源代码 编辑:程序博客网 时间:2024/05/22 02:11
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安装以下几个重要的模块:
body-parser - 这是一个Node.js中间件处理JSON,Raw,文本和URL编码的表单数据
cookie-parser - 解析Cookie头和填充req.cookies通过cookie名字键控对象
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表示未找到。
var express = require('express');var app = express();app.get('/', function (req, res) { res.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)})
保存上面的代码中的一个文件名为server.js,并用以下命令运行它。
$ node server.js
你会看到以下的输出:
Example app listening at http://0.0.0.0:8081
在任何浏览器中打开http://127.0.0.1:8081/,看看下面的结果。
Request & Response
Express应用程序利用了一个回调函数,它的参数是request和response对象。
app.get('/', function (req, res) { // --})
您可以查看两个对象更详细的信息:
Request对象 - 请求对象表示HTTP请求和具有用于请求查询字符串,参数,主体,HTTP报头,等等的属性。
Response对象 - 响应对象表示HTTP响应Express应用程序发送时,它得到一个HTTP请求。
您可以打印提供有关HTTP请求和响应,包括 cookies, sessions, URL 等信息req和res对象
基本的路由
我们已经看到它服务于网页的HTTP请求的基本应用。 路由指的是确定应用程序如何响应客户机请求到特定端点,这是一个URI(或路径)和特定的HTTP请求方法(GET,POST等)。
我们将扩大之前的Hello World程序添加功能,可以处理更多类型的HTTP请求。
var express = require('express');var app = express();// This responds with "Hello World" on the homepageapp.get('/', function (req, res) { console.log("Got a GET request for the homepage"); res.send('Hello GET');})// This responds a POST request for the homepageapp.post('/', function (req, res) { console.log("Got a POST request for the homepage"); res.send('Hello POST');})// This responds a DELETE request for the /del_user page.app.delete('/del_user', function (req, res) { console.log("Got a DELETE request for /del_user"); res.send('Hello DELETE');})// This responds a GET request for the /list_user page.app.get('/list_user', function (req, res) { console.log("Got a GET request for /list_user"); res.send('Page Listing');})// This responds a GET request for abcd, abxcd, ab123cd, and so onapp.get('/ab*cd', function(req, res) { console.log("Got a GET request for /ab*cd"); res.send('Page Pattern Match');})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)})
保存上面的代码中的一个文件名为server.js,并用以下命令运行它。
$ node server.js
你会看到以下的输出:
Example app listening at http://0.0.0.0:8081
现在,你可以在http://127.0.0.1:8081尝试不同的请求看到server.js生成的输出。以下是几个屏幕显示为不同的URL不同的响应。
屏幕再次显示 http://127.0.0.1:8081/list_user
屏幕再次显示 http://127.0.0.1:8081/abcd
屏幕再次显示 http://127.0.0.1:8081/abcdefg
提供静态文件服务
Express提供了内置的中间件express.static用于处理静态文件,如图像,CSS,JavaScript等。
只需要在那里把你的静态资源,到express.static中间件开始直接服务于文件传递目录的名称。例如,如果把图片,CSS和JavaScript文件在指定的目录public,你可以这样做:
app.use(express.static('public'));
我们将继续添加几张图片到public/images子目录,如下所示:
node_modulesserver.jspublic/public/imagespublic/images/logo.png
让我们修改“Hello Word”应用程序以添加处理静态文件的功能。
var express = require('express');var app = express();app.use(express.static('public'));app.get('/', function (req, res) { res.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)})
保存上面的代码中的一个文件名为server.js,并用以下命令运行它。
$ node server.js
GET 方法
下面是一个简单的例子,通过使用HTML表单使用GET方法传递两个值。我们将使用server.js路由器里面 process_get 来处理该输入。
<html><body><form action="http://127.0.0.1:8081/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>
让我们保存上面的代码index.html,并修改server.js处理首页请示以及输入HTML表单发送。
var express = require('express');var app = express();app.use(express.static('public'));app.get('/index.html', function (req, res) { res.sendFile( __dirname + "/" + "index.html" );})app.get('/process_get', function (req, res) { // Prepare output in JSON format response = { first_name:req.query.first_name, last_name:req.query.last_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)})
现在使用 http://127.0.0.1:8081/index.html 访问HTML文档将产生以下表单:
现在,您可以输入名字和姓氏,然后单击提交按钮查看结果,它应该给结果如下:
{"first_name":"John","last_name":"Paul"}
POST 方法
下面是一个简单的例子,通过使用HTML表单POST方法提交两个值。我们将使用 process_get 路由器里面server.js来处理该输入。
<html><body><form action="http://127.0.0.1:8081/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>
让我们保存上面index.html,并修改server.js处理首页要求以及输入的HTML表单发送。
var express = require('express');var app = express();var bodyParser = require('body-parser');// Create application/x-www-form-urlencoded parservar urlencodedParser = bodyParser.urlencoded({ extended: false })app.use(express.static('public'));app.get('/index.html', function (req, res) { res.sendFile( __dirname + "/" + "index.html" );})app.post('/process_post', urlencodedParser, function (req, res) { // Prepare output in JSON format response = { first_name:req.body.first_name, last_name:req.body.last_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)})
现在访问HTML文档使用 http://127.0.0.1:8081/index.html 将产生以下表单:
现在,可以输入名字和姓氏,然后单击提交按钮查看结果,它应该给结果如下:
{"first_name":"John","last_name":"Paul"}
File 上传
下面的HTML代码创建一个文件上传表单。这种形式的方法属性设置为POST,以及enctype属性设置为 multipart/form-data
<html><head><title>File Uploading Form</title></head><body><h3>File Upload:</h3>Select a file to upload: <br /><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></html>
让我们保存上面index.html,并修改server.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.get('/index.html', function (req, res) { res.sendFile( __dirname + "/" + "index.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 uploaded 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)})
现在访问HTML文档使用 http://127.0.0.1:8081/index.html 将产生以下表单:
File Upload:Select a file to upload: NOTE: This is just dummy form and would not work, but it must work at your server.
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)
查看电脑完整版 »
- Node.js Express框架
- Node.js Express框架
- Node.js Express 框架
- Node.js Express 框架
- node.js express框架
- Node.js Express框架
- Node.js Express框架
- Node.js Express 框架
- Node.js Express 框架学习
- Node.js Express 框架学习
- Node.js框架之express
- node.js Express框架详细
- Node.js Express 框架学习
- 浅谈node.js Express框架
- Node.js的express框架
- Node.js Express 框架学习
- node.js Express框架入门
- node.js express框架文件上传路径
- 数据结构--------图的遍历算法及实现
- 5.1.1 Binary Tree Level Order Traversal
- SAT阅读假设题解题思路指导:理解与推理
- Java基础复习之一:static关键字的使用
- JavaScript-给iframe里的内容定义样式 获取元素
- Node.js Express框架
- iOS 调试
- java List Map数据对比 找出相同和不同的内容
- Memcached中的一些参数限制
- 把二元查找树转变成排序的双向链表
- 常用系统服务
- 设计模式之 - 代理模式
- 交流
- 从本地相册中动态添加image