익스프레스 프로필
Express는 웹 응용 프로그램 및 다양한 HTTP 다양한 도구를 만들 수 있도록 강력한 기능의 범위를 제공하는 간단하고 유연한 Node.js를 웹 응용 프로그램 프레임 워크입니다.
Express는 신속하게 모든 기능을 웹 사이트를 구축하는 데 사용할 수 있습니다.
익스프레스 프레임 워크의 핵심 기능 :
미들웨어는 HTTP 요청에 대한 응답으로 제공 될 수있다.
그것은 작동 다른 HTTP 요청을 수행하기위한 라우팅 테이블을 정의합니다.
동적 템플릿에 매개 변수를 전달하여 HTML 페이지를 렌더링 할 수 있습니다.
설치 익스프레스
설치를 표현하고 목록에 의존하는 저장 :
$ cnpm 특급 --save 설치
위의 명령은 디렉토리가 자동으로 생성 된 디렉토리를 node_modules 표현됩니다 익스프레스 프레임 워크는 현재 디렉토리를 node_modules 설치합니다. 몇 가지 중요한 모듈은 프레임이 장착 표현 할 필요가있다 :
체내 파서 - 미들웨어 JSON, 원시, 텍스트 처리 URL 인코딩 데이터 Node.js를.
쿠키 파서 -이 쿠키를 분석하기위한 도구입니다. 쿠키를 통해 전달하는 req.cookies에 의해 수행 될 수 있으며, 객체로 전원을 켭니다.
multer은 - 가공에 enctype = "multipart / form-data"로 (설정된 양식 MIME 인코딩) 데이터 형식을위한 미들웨어 Node.js를.
$ cnpm는 몸 파서 --save 설치
$ cnpm는 쿠키 파서 --save 설치
$ cnpm 설치 multer --save
설치 후, 우리는 버전 번호가 명시 적 사용을 확인할 수 있습니다 :
$ cnpm리스트 표현
/ 데이터 / WWW / 노드
└── [email protected] -> /Users/tianqixin/www/node/node_modules/.4.15.2@express
고속 프레임의 첫 번째 예
다음은 출력에 "Hello World"를 익스프레스 프레임 워크를 사용합니다.
우리가 모듈을 표현 다음 예제의 도입 후 클라이언트로 "안녕하세요"문자열 응답, 요청을 전송합니다.
다음과 같이 express_demo.js 파일을 생성, 코드는 다음과 같습니다
express_demo.js 파일 코드 :
//express_demo.js 파일 var에 명시 = ( '표현')이 필요합니다; var에 응용 = 특급 (); app.get ( '/', 기능 (REQ, 고해상도) {res.send ( '안녕하세요');}) . VAR 서버 = app.listen (8081, 기능 () {var에 호스트 = server.address () 주소 VAR 포트 = server.address () 포트을 console.log ( "응용 프로그램 예제의 접속 주소 HTTP :. // %의 : % s '에, 호스트, 포트)})
위의 코드를 실행합니다 :
$ 노드 express_demo.js
적용 사례, 액세스 주소 http://0.0.0.0:8081
Http://127.0.0.1:8081 브라우저 액세스, 결과는 다음과 같습니다 :
요청 및 응답
응용 콜백 함수 매개 변수 익스프레스 : 요청과 응답 객체는 데이터 요청과 응답을 처리 할 수 있습니다.
app.get ( '/', 함수 (REQ, 입술) {
// -
})
특정 요청과 응답 객체를 소개 :
요청 객체가 - 요청 객체가 HTTP 요청을 나타내는 쿼리 문자열 매개 변수를 포함하는 요청, 내용, HTTP 헤더 속성. 일반적인 속성은 다음과 같습니다
req.app : 콜백 할 때 명시 적 인스턴스 req.app 액세스 외부 파일,
req.baseUrl : URL 라우팅은 현재 설치된 얻을
req.body / req.cookies : 수 '요청 본문 "/ 쿠키
req.fresh / req.stale는 : 요청이 여전히 "신선한"입니다 여부를 확인하는 방법
req.hostname / req.ip는 : 이름과 IP 주소를 가져옵니다
req.originalUrl는 : 원래 요청의 URL을 얻을
req.params : 취득 라우팅 매개 변수
req.path : 요청 경로를 가져옵니다
req.protocol는 : 프로토콜 형식을 가져옵니다
req.query 다음 URL 쿼리 문자열 매개 변수를 가져
req.route : 현재 일치하는 경로를 가져옵니다
req.subdomains : 하위 도메인을 얻을
req.accepts () 문서의 형태를 확인하는 요청으로 허용
req.acceptsCharsets / req.acceptsEncodings / req.acceptsLanguages는 허용 가능한 문자 인코딩의 특정 문자 집합을 리턴
req.get는 () : 지정된 HTTP 요청 헤더를 가져옵니다
req.is () : 요청의 Content-Type 헤더 MIME 타입의 경우
응답 객체 - 응답 객체는 HTTP 응답 요청의 응답 데이터를 수신하여 클라이언트로 전송되는 HTTP를 나타냅니다. 일반적인 속성은 다음과 같습니다
res.app :처럼 req.app
res.append는 () : 추가 HTTP 헤더를 지정합니다
제공된 res.append 후 머리를 재설정하기 전에 res.set ()
res.cookie (이름, 값 [옵션]) 设置 쿠키
opition : 도메인 /은 / Http 만 / MAXAGE / 경로 /가 / 보안 서명 만료
res.clearCookie () : 清除 쿠키
res.download () : 파일 전송 경로 지정
res.get는 () : 지정된 HTTP 헤더를 반환
res.json ()에 응답하여 전송 JSON
res.jsonp는 () : JSONP 응답을 전송할
res.location () : 위치 설정 HTTP 응답 헤더는 제공되지 않았거나 가까운 응답 상태 코드
res.redirect () : 위치 설정의 HTTP 응답 헤더 및 상태 코드를 설정합니다 (302)
res.render (뷰 [열차, 콜백) : 에러가 렌더링 과정 (ERR) 다음에 자동으로 호출된다 발생하면 렌더링 문자열 콜백에 전달되는 동안, 뷰를 렌더링. 콜백이 발생하여 페이지를 렌더링 후 가능한 오류를 전달한다, 그래서 자동 출력하지 않을 것이다.
res.send (가) : HTTP 응답을 전송
res.sendFile은 (경로는 [옵션] [FN은]) : 전송 경로의 파일을 지정합니다 - 자동으로 파일 확장자 내용 유형에 따라 설정
res.set () : 집합 HTTP 헤더 객체를 전달은 복수의 헤드를 제공 할 수있다
res.status () : 설정 HTTP 상태 코드
res.type () : MIME 타입의 설정 내용 유형
라우팅
우리는 이미 기본 응용 프로그램 HTTP 요청을 알고, (지정 스크립트) 클라이언트의 요청에 응답 할 수있는 경로를 결정합니다.
HTTP 요청에서, 우리는 URL을 추출 할 수 있습니다 및 매개 변수를 라우팅하여 / POST 요청을 GET.
다음으로 우리는 HTTP 요청의 더 많은 종류를 처리하기 위해 몇 가지 기능을 추가, 안녕하세요을 확장합니다.
다음과 같이 express_demo2.js 파일을 생성, 코드는 다음과 같습니다
express_demo2.js 파일 코드 :
var에 명시 =이 필요합니다 ( '표현'); var에 응용 = 익스프레스 (); // 페이지 출력에 "Hello World"app.get를 ( '/', 기능 (REQ를, 고해상도) {을 console.log ( "홈 요청을 GET") ; res.send ( '안녕하세요 GET'); ( '/'기능 (REQ, 고해상도) //)} {을 console.log ( "홈 POST 요청") POST 요청 app.post을; 안녕하세요 'res.send을 (POST ');}) // / del_user 페이지 응답 app.get ('/ del_user '기능 (REQ, 입술) {CONSOLE.LOG ( "/ del_user 요청 응답 삭제") res.send ('페이지 삭제 '); }) // / list_user 페이지 GET 요청 app.get ( '/ list_user'기능 (REQ, 입술) {CONSOLE.LOG ( "/ list_user GET 요청"); res.send ( '사용자 목록 페이지');}) GET 요청의 app.get ( '/ AB * CD를'기능 (REQ, 입술) {CONSOLE.LOG ( "/ AB * CD를 GET 요청")에 응답 등 ABCD, abxcd, ab123cd의 // 페이지; res.send ( '일반 매치');}) VAR 서버 app.listen = (8081, 함수 () {= VAR 호스트 서버.. 주소 () 주소 VAR 포트 = server.address () 포트을 console.log ( "응용 프로그램의 예를 들어, HTTP의 액세스 주소 : // % s에 % s '에, 호스트, 포트).})
위의 코드를 실행합니다 :
$ 노드 express_demo2.js
적용 사례, 액세스 주소 http://0.0.0.0:8081
그럼 당신은 효과를보고, 다른 액세스 http://127.0.0.1:8081 주소를 시도 할 수 있습니다.
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, 자바 스크립트.
당신은 정적 파일 경로를 설정 express.static 미들웨어를 사용할 수 있습니다. 예를 들어, 사진 경우, CSS는 공개 디렉토리에서 자바 스크립트 파일, 당신은 쓸 수 있습니다 :
app.use (express.static) ( '공공');
우리는 다음과 같은 몇 가지 사진을 위임 공공 / 이미지 디렉토리로 이동 할 수 있습니다 :
node_modules
server.js
공공의/
공공 / 이미지
공공 / 이미지 / logo.png
우리가 정적 파일을 추가 할 다음에 "Hello World"응용 프로그램 처리 기능을 수정할 수 있습니다.
다음과 같이 express_demo3.js 파일을 생성, 코드는 다음과 같습니다
express_demo3.js 파일 코드 :
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("应用实例,访问地址为 http://%s:%s", host, port) })
执行以上代码:
$ node express_demo3.js
应用实例,访问地址为 http://0.0.0.0:8081
执行以上代码:
在浏览器中访问 http://127.0.0.1:8081/images/logo.png(本实例采用了码农教程的logo),结果如下图所示:
GET 方法
以下实例演示了在表单中通过 GET 方法提交两个参数,我们可以使用 server.js 文件内的 process_get 路由器来处理输入:
index.htm 文件代码:
server.js 文件代码:
var express = require('express'); var app = express(); app.use(express.static('public')); app.get('/index.htm', function (req, res) { res.sendFile( __dirname + "/" + "index.htm" ); }) app.get('/process_get', function (req, res) { // 输出 JSON 格式 var 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("应用实例,访问地址为 http://%s:%s", host, port) })
执行以上代码:
node server.js
应用实例,访问地址为 http://0.0.0.0:8081
浏览器访问 http://127.0.0.1:8081/index.htm,如图所示:
现在你可以向表单输入数据,并提交,如下演示:
POST 方法
以下实例演示了在表单中通过 POST 方法提交两个参数,我们可以使用 server.js 文件内的 process_post 路由器来处理输入:
index.htm 文件代码:
server.js 文件代码:
var express = require('express'); var app = express(); var bodyParser = require('body-parser'); // 创建 application/x-www-form-urlencoded 编码解析 var urlencodedParser = bodyParser.urlencoded({ extended: false }) app.use(express.static('public')); app.get('/index.htm', function (req, res) { res.sendFile( __dirname + "/" + "index.htm" ); }) app.post('/process_post', urlencodedParser, function (req, res) { // 输出 JSON 格式 var 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("应用实例,访问地址为 http://%s:%s", host, port) })
执行以上代码:
$ node server.js
应用实例,访问地址为 http://0.0.0.0:8081
浏览器访问 http://127.0.0.1:8081/index.htm,如图所示:
现在你可以向表单输入数据,并提交,如下演示:
文件上传
以下我们创建一个用于上传文件的表单,使用 POST 方法,表单 enctype 属性设置为 multipart/form-data。
index.htm 文件代码:
文件上传:
选择一个文件上传:
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/'}).array('image')); app.get('/index.htm', function (req, res) { res.sendFile( __dirname + "/" + "index.htm" ); }) app.post('/file_upload', function (req, res) { console.log(req.files[0]); // 上传的文件信息 var des_file = __dirname + "/" + req.files[0].originalname; fs.readFile( req.files[0].path, function (err, data) { fs.writeFile(des_file, data, function (err) { if( err ){ console.log( err ); }else{ response = { message:'File uploaded successfully', filename:req.files[0].originalname }; } 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("应用实例,访问地址为 http://%s:%s", host, port) })
执行以上代码:
$ node server.js
应用实例,访问地址为 http://0.0.0.0:8081
浏览器访问 http://127.0.0.1:8081/index.htm,如图所示:
现在你可以向表单输入数据,并提交,如下演示:
Cookie 管理
我们可以使用中间件向 Node.js 服务器发送 cookie 信息,以下代码输出了客户端发送的 cookie 信息:
express_cookie.js 文件代码:
// express_cookie.js 文件 var express = require('express') var cookieParser = require('cookie-parser') var util = require('util'); var app = express() app.use(cookieParser()) app.get('/', function(req, res) { console.log("Cookies: " + util.inspect(req.cookies)); }) app.listen(8081)
执行以上代码:
$ node express_cookie.js
现在你可以访问 http://127.0.0.1:8081 并查看终端信息的输出,如下演示:
(编辑:雷林鹏 来源:网络 侵删)