欧美阿v视频在线大全_亚洲欧美中文日韩V在线观看_www性欧美日韩欧美91_亚洲欧美日韩久久精品

主頁 > 知識庫 > Node后端Express框架安裝及應用

Node后端Express框架安裝及應用

熱門標簽:400電話辦理費用低 谷歌地圖標注日期 外呼系統怎么群發短信 宿遷怎么辦理400電話 蘇州呼叫中心外呼系統哪家強 地圖標注項目幾個月 400電話申請到底哪家好 鶴壁高頻外呼系統多少錢一個月 聯通外呼系統電腦app軟件

Express 框架核心特性:

  • 可以設置中間件來響應 HTTP 請求。
  • 定義了路由表用于執行不同的 HTTP 請求動作。
  • 可以通過向模板傳遞參數來動態渲染 HTML 頁面。

Express安裝

express的使用過程有兩種方式:

  •  方式一:通過express提供的腳手架,直接創建一個應用的骨架;
  • 方式二:從零搭建自己的express應用結構;

方式一:安裝express-generator

npm install -g express-generator

創建項目

express express-app

項目目錄如下

├── app.js
├── bin
│   └── www
├── package-lock.json
├── package.json
├── public
│   ├── images
│   ├── javascripts
│   └── stylesheets
│       └── style.css
├── routes
│   ├── index.js
│   └── users.js
└── views
    ├── error.jade
    ├── index.jade
    └── layout.jade

之后 cd 進入到對應的目錄下,然后將項目跑起來:

npm install 
node bin/www
node app.js   

方式二: 自己搭建環境

上面通過express提供的腳手架,直接創建一個應用的骨架;現在我們自己從零搭建項目:

初始化一個新的項目:

npm init -y

安裝express:

npm install express

新建app.js

express 初體驗

現在搭建自己的第一個express程序:在app.js中加入如下代碼

const express = require('express');
// 創建服務器
const app = express();
app.get('/',(req,res) => {
  res.end("Hello World");
});
app.listen(8000,() => {
  console.log("服務器啟動成功~");
})

進入項目根目錄下,在終端中將服務器跑起來:

node app.js

到瀏覽器:訪問localhost:8000即可

請求和響應

請求的路徑中如果有一些參數,可以這樣表達:

/users/:userId

request對象中要獲取可以通過req.params.userId;

返回數據

返回數據,我們可以方便的使用json

res.json(數據)方式;

const express = require('express');
const app = express();
app.get('/users/:userId', (req, res, next) => {
  console.log(req.params.userId);
  res.json({username: "liyingxia", password: "8i8i8i8i" });
});
app.listen(8000, () => {
  console.log("靜態服務器啟動成功~");
})

Express 中間件

認識中間件

Express是一個路由和中間件的Web框架,它本身的功能非常少:

Express應用程序本質上是一系列中間件函數的調用;

中間是什么?

中間件的本質就是一個回調函數;

這個回調函數接受三個參數:

請求對象(request對象);

響應對象(response對象);

next函數(在express中定義的用于執行下一個中間件的函數);

中間件中可以執行哪些任務?

執行任何代碼;

更改請求(request)和響應(response)對象;

結束請求-響應周期(返回數據);

調用棧中的下一個中間件;

如果當前中間件功能沒有結束請求-響應周期,則必須調用 next()將控制權傳遞給下一個中間件功能,否則,請求將被掛起。

使用中間件

express主要提供了兩種方式:app/router.useapp/router.methods這兩種方式把中間件應用到我們的應用程序中;

methods指的是常用的請求方式,比如:app.getapp.post

// express 中間件的使用
const express = require('express');
const res = require('express/lib/response');
const app = express();
app.use((req,res,next) => {
  console.log("middleware");
  next();
});
app.use((req,res,next) => {
  console.log("middleware");
  res.end("Hello Common Middleware");
})
app.listen(9000,()=>{
  console.log("中間件服務器啟動成功~")
})

path匹配中間件:

//path 路徑匹配中間件
app.use('/home',(req,res,next) => {
  console.log("home middleware 中間件");
  next();
});
app.use('/home',(req,res,next) => {
  console.log("home middleware02");
  next();
  res.end("middleware");
});
app.use((req,res,next) =>{
   console.log("middleware");
})

path 和 method 匹配中間件

// path 和 method 匹配中間件
app.get('/home',(req,res,next) => {
  console.log("home get middleware");
  next();
})
app.post('/login',(req,res,next) => {
  console.log("login post middleware");
  next();
});
app.use((req,res,next) => {
  console.log("common middleware");
})
app.use(express.json());
app.use(express.urlencoded({extended:true}));
app.post('/login',(req,res,next) => {
  console.log(req.body);
  res.end("登陸成功~");
});

日志記錄中間件

如果我們希望將請求日志記錄下來,那么可以使用express官網開發的第三方庫:morgan
morgan安裝:

npm install morgan

如何用?直接作為中間件使用即可:

const loggerWriter = fs.createWriteStream('./log/access.log', {
  flags: 'a+'
})
app.use(morgan('combined', {stream: loggerWriter}));

上傳文件中間件

圖片上傳我們可以使用express官方開發的第三方庫:multer

multer安裝:

npm install multer

上傳文件:

const upload = multer({
  dest: "uploads/"
})

app.post('/upload', upload.single('file'), (req, res, next) => {
  console.log(req.file.buffer);
  res.end("文件上傳成功~");
})

添加上傳文件后綴名:

const storage = multer.diskStorage({
  destination: (req, file, cb) => {
    cb(null, "uploads/")
  },
  filename: (req, file, cb) => {
    cb(null, Date.now() + path.extname(file.originalname));
  }
})
const upload = multer({
  storage
})
app.post('/upload', upload.single('file'), (req, res, next) => {
  console.log(req.file.buffer);
  res.end("文件上傳成功~");
})

上傳多張圖片:

app.use('/upload', upload.array('files'), (req, res, next) => {
  console.log(req.files);
});

請求和響應

客戶端傳遞到服務器參數的方法常見的是5種:

方式一:通過get請求中的URL的params;

方式二:通過get請求中的URL的query;

方式三:通過post請求中的body的json格式;

方式四:通過post請求中的body的x-www-form-urlencoded格式;

方式五:通過post請求中的form-data格式;

請求解析

方式一:params

請求地址: http://locahost:8000/login/asd/ass

獲取參數:

app.use('/login/:id/:name', (req, res, next) => {
  console.log(req.params);
  res.json("請求成功~");
})

方式二:query

請求地址:http://localhost:8000/login?username=liyingxiapassword=123456
獲取參數:

app.use('/login', (req, res, next) => {
  console.log(req.query);
  res.json("請求成功~");
})

方式三:通過post請求中的body的json格式;

在客戶端發送post請求時,會將數據放到body中:客戶端可以通過json的方式傳遞,也可以通過form表單的方式傳遞;

自己編寫中間件來解析JSON:

app.use((req, res, next) => {
  if (req.headers['content-type'] === 'application/json') {
    req.on('data', (data) => {
      const userInfo = JSON.parse(data.toString());
      req.body = userInfo;
    })
    req.on('end', () => {
      next();
    })
  } else {
    next();
  }
})
app.post('/login', (req, res, next) => {
  console.log(req.body);
  res.end("登錄成功~");
});

適用express內置的中間件或者使用body-parser來完成:

app.use(express.json());
app.post('/login', (req, res, next) => {
  console.log(req.body);
  res.end("登錄成功~");
});

方式四:通過post請求中

body的x-www-form-urlencoded格式;

解析application/x-www-form-urlencoded:

可以使用express自帶的 urlencoded函數來作為中間件:

傳入的extended用于表示使用哪一種解析方式:

  • true:使用qs第三方模塊;
  • false:使用querystring內置模塊;
app.use(express.json());
app.use(express.urlencoded({extended: true}));

app.post('/login', (req, res, next) => {
  console.log(req.body);
  res.end("登錄成功~");
});

方式五:通過post請求中的form-data格式;

通過any借助multer去解析一些form-data中的普通數據:

app.use(upload.any());
app.use('/login', (req, res, next) => {
  console.log(req.body);
});

響應方式

end()類似于http中的response.end方法;

res.end("獲取成功~")

json()json方法中可以傳入很多的類型:

object、array、string、boolean、number、null等,都會被轉換成json格式返回

res.json({name:"liyignxia",password:"123456"});

status()設置狀態碼

res.status(200);

路由的使用

使用express.Router來創建一個路由處理程序:一個Router實例擁有完整的中間件和路由系統;

// 用戶相關的處理
const userRouter = express.Router();

userRouter.get('/', (req, res, next) => {
  res.end("用戶列表");
});

userRouter.post('/', (req, res, next) => {
  res.end("創建用戶");
});

userRouter.delete('/', (req, res, next) => {
  res.end("刪除用戶");
});

app.use('/users', userRouter);

靜態資源服務器

Node也可以作為靜態資源服務器,并且express給我們提供了方便部署靜態資源的方法;

const express = require('express');
const app = express();
app.use(express.static('./build'));
app.listen(8000, () => {
  console.log("靜態服務器啟動成功~");
})

錯誤處理方式

app.use((req, res, next) => {
  next(new Error("USER DOES NOT EXISTS"));
});
app.use((err, req, res, next) => {
  const message = err.message;
  switch (message) {
    case "USER DOES NOT EXISTS":
      res.status(400).json({message})
  }
  res.status(500)
})
您可能感興趣的文章:
  • node+express框架中連接使用mysql(經驗總結)
  • NodeJs中express框架的send()方法簡介
  • Node.js的Express框架使用上手指南
  • Nodejs express框架一個工程中同時使用ejs模版和jade模版
  • NodeJS Express框架中處理404頁面一個方式

標簽:雙鴨山 錫林郭勒盟 襄陽 莆田 遵義 鄂爾多斯 丹東 哈爾濱

巨人網絡通訊聲明:本文標題《Node后端Express框架安裝及應用》,本文關鍵詞  Node,后端,Express,框架,安裝,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Node后端Express框架安裝及應用》相關的同類信息!
  • 本頁收集關于Node后端Express框架安裝及應用的相關信息資訊供網民參考!
  • 推薦文章
    欧美阿v视频在线大全_亚洲欧美中文日韩V在线观看_www性欧美日韩欧美91_亚洲欧美日韩久久精品
  • <rt id="w000q"><acronym id="w000q"></acronym></rt>
  • <abbr id="w000q"></abbr>
    <rt id="w000q"></rt>
    在线观看欧美日本| 精品嫩草影院久久| 亚洲欧洲综合另类在线| 国产成人在线影院| 99久久99久久精品免费看小说. | 狠狠狠色丁香婷婷综合激情| 免费日本黄色网址| 欧美久久婷婷综合色| 亚洲成人综合网站| 国产综合内射日韩久| 久久精品一区二区三区av| 老司机精品视频线观看86| 大黑人交xxx极品hd| 欧美不卡视频一区| 精品一区二区三区在线观看| 欧美性猛交xxxx乱| 欧美激情在线一区二区| 高清不卡一区二区在线| 久久久久亚洲av无码专区体验| 中文字幕一区二区三区不卡| av福利精品导航| 精品视频在线视频| 午夜精品福利久久久| 国产精品jizz| 国产日韩欧美在线一区| 成人国产视频在线观看| 日本韩国欧美国产| 亚洲成在人线在线播放| 性久久久久久久久久| 久久久国产精华| 成人国产精品免费观看动漫| 在线国产亚洲欧美| 日韩电影一二三区| 九九热免费在线| 中文字幕亚洲在| 国产乱淫av片| 精品国产91亚洲一区二区三区婷婷| 久久爱www久久做| 精品无码久久久久成人漫画| 亚洲精品免费电影| 捆绑裸体绳奴bdsm亚洲| 国产亚洲污的网站| 91视频免费看| 日韩欧美成人一区二区| 国产aⅴ精品一区二区三区色成熟| 色婷婷精品大视频在线蜜桃视频 | 欧美国产激情一区二区三区蜜月| 国产成人综合亚洲网站| 欧美日韩一二三区| 久久99精品久久久| 亚洲国产精品免费在线观看| 亚洲va天堂va国产va久| 色欲狠狠躁天天躁无码中文字幕| 中文字幕日韩av资源站| 人体私拍套图hdxxxx| 国产女主播一区| 久久久国产精品久久久| 26uuu久久综合| 成人99免费视频| 欧美一区二区日韩| 成人午夜私人影院| 日韩一区二区精品在线观看| 成人一区二区三区| 日韩视频中午一区| jizzjizzjizz欧美| 亚洲精品在线电影| 亚洲天堂小视频| 国产亚洲视频系列| 亚洲天堂2024| 综合欧美亚洲日本| 中文字幕免费高清| 亚洲综合色噜噜狠狠| 欧洲性xxxx| 香蕉成人伊视频在线观看| 四虎884aa成人精品| 日本亚洲欧美天堂免费| 色综合天天综合网天天狠天天 | 日本一区二区三区四区 | 欧美一级理论片| 成人动漫中文字幕| 久久综合九色综合97_久久久| 欧美体内she精高潮| 亚洲国产精品国自产拍av| 日韩av无码一区二区三区不卡| 国产精品视频在线看| 国产传媒第一页| 亚洲午夜免费电影| 日韩女优一区二区| 国产麻豆欧美日韩一区| 欧美一区二区二区| 深夜福利网站在线观看| 国产精品久久福利| 亚洲图片第一页| 免费精品视频在线| 欧美日韩欧美一区二区| av一区二区久久| 欧美激情一区二区三区全黄| 欧美特级黄色录像| 日韩成人伦理电影在线观看| 欧美色图免费看| 99视频在线精品| 欧美—级在线免费片| 国产jjizz一区二区三区视频| 五月婷婷激情综合| 欧美日韩亚洲综合| 91在线国产福利| 一区免费观看视频| 国产亚洲精品久久久久久豆腐| 另类欧美日韩国产在线| 欧美一区二区成人6969| 喷水视频在线观看| 午夜精品久久久久影视| 欧美老女人在线| www.黄色网| 亚洲午夜羞羞片| 欧美日韩在线播放三区四区| 无人码人妻一区二区三区免费| 国产精品国产三级国产普通话蜜臀| 永久免费观看片现看| 激情综合网最新| 久久久无码精品亚洲日韩按摩| 熟女俱乐部一区二区| 捆绑变态av一区二区三区| 精品国产青草久久久久福利| 青青草福利视频| 毛片一区二区三区| 久久综合资源网| 综合 欧美 亚洲日本| 精品写真视频在线观看| 久久久久久9999| jizz中文字幕| 国产精品一级片| 国产精品区一区二区三| 中文字幕另类日韩欧美亚洲嫩草| 丁香婷婷综合激情五月色| 亚洲天堂网中文字| 欧美吞精做爰啪啪高潮| 熟妇高潮一区二区| 美女网站一区二区| 久久综合久久99| 亚洲最大的黄色网址| 91网上在线视频| 五月婷婷激情综合网| 精品国产三级a在线观看| 久久精品国产亚洲AV成人婷婷| 国产成人精品综合在线观看 | 一色道久久88加勒比一| 激情综合一区二区三区| 中文无字幕一区二区三区| 亚洲欧美一区二区三区四区五区| av在线不卡免费看| 亚洲成在人线在线播放| 日韩精品一区二区三区视频在线观看| 五月天综合视频| 成人黄色av网站在线| 一区二区三区四区在线免费观看 | 欧美午夜一区二区| 一起草在线视频| 国产在线视频一区二区三区| 中文字幕色av一区二区三区| 精品视频全国免费看| 一本加勒比北条麻妃| 国产成人av电影| 一二三四社区欧美黄| 日韩免费电影网站| 97成人资源站| 制服丝袜在线第一页| 韩国毛片一区二区三区| 亚洲日本在线a| 日韩欧美国产三级| 欧美国产日韩在线观看成人| 91亚洲一线产区二线产区| 另类中文字幕网| 亚洲人成7777| 日韩免费观看高清完整版在线观看| 日本裸体美女视频| 久久久久久久久久影视| 激情深爱一区二区| 亚洲最大成人综合| 久久伊99综合婷婷久久伊| 欧洲日韩一区二区三区| 中国女人特级毛片| 麻豆传媒在线看| 国产乱码一区二区三区| 亚洲国产一区二区视频| 久久久久久99精品| 在线播放中文字幕一区| 欧美手机在线观看| 国产三级视频网站| 99久久精品情趣| 九色综合狠狠综合久久| 亚洲一区二区三区国产| 国产欧美日韩麻豆91| 91精品国产丝袜白色高跟鞋| 日本高清不卡免费| 色婷婷av777| 91啪在线观看| 国产成人一区二区精品非洲| 婷婷久久综合九色综合伊人色| 国产精品二区一区二区aⅴ污介绍|