日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Nodejs 路由封装 封装一个类似 express 的路由

發布時間:2024/7/5 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Nodejs 路由封装 封装一个类似 express 的路由 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1、模塊化的方式封裝

routes.js:

const http = require('http'); const fs = require('fs'); const path = require('path') const url = require('url') const ejs = require('ejs') let getFileMime = function (extname) {// 把異步讀取文件方法改為同步讀取文件方法let data = fs.readFileSync('./data/mime.json');let mimeObj = JSON.parse(data.toString())console.log(mimeObj[extname])return mimeObj[extname] } let app = {static: (req, res, staticPath) => {// 1. 獲取地址console.log(req.url)let pathname = url.parse(req.url).pathname// 默認加載index.htmlif (pathname == '/') {pathname = '/index.html'} else {pathname = pathname}// 獲取路徑中的后綴名let extname = path.extname(pathname)// 2.通過fs模塊讀取文件if (pathname != '/favicon.ico') {try {// 把異步讀取文件方法改為同步讀取文件方法let data = fs.readFileSync('./' + staticPath + pathname);if (data) {let mine = getFileMime(extname)res.writeHead(200, { 'Content-Type': '' + mine + ';charset="utf-8"' });res.end(data);}} catch (error) {}}},login: (req, res) => {ejs.renderFile('./views/form.ejs',{}, (err,data)=> {res.writeHead(200, {'Content-Type': 'text/html;charset="utf-8"'}) res.end(data)})},doLogin: (req, res)=> {// 獲取post傳值let postData = '';//以流的方式讀取req.on('data', (chunk)=> {postData += chunk;})// 當流讀取結束,會觸發endreq.on('end', ()=> {console.log(postData);res.end(postData);})}, error: (req, res)=> {res.end('error!')}}module.exports = app; /* 調用方式:1. app.login(req,res)2. app['login](req,res)*/

app.js:

// nodejs 創建一個靜態資源服務器const http = require('http'); const url = require('url'); const routes = require('./module/routes') const ejs = require('ejs') http.createServer(function (req, res) {// 創建靜態web服務器routes.static(req, res, 'static')// 路由let pathname = url.parse(req.url).pathname;// http://127.0.0.1:3000/login pathname = /loginpathname = pathname.replace("/", "") try {routes[pathname](req, res)} catch (error) {routes['error'](req, res)}// 獲取請求類型console.log(req.method)/* if (pathname == '/login') {ejs.renderFile('./views/form.ejs', {}, (err, data)=> {res.writeHead(200, { 'Content-Type': 'text/html;charset="utf-8"' });res.end(data)}) *//* // 獲取get傳值var query = url.parse(req.url, true).queryconsole.log(query)res.writeHead(200, { 'Content-Type': 'text/html;charset="utf-8"' });res.end('get傳值獲取成功') *//* res.writeHead(200, { 'Content-Type': 'text/html;charset="utf-8"' });res.end("執行登錄") *//* let msg = "數據庫里面獲取的數據";let list = [{title: '新聞111'},{title: '新聞222'},{title: '新聞333'},{title: '新聞444'},{title: '新聞555'},]ejs.renderFile('./views/login.ejs', {msg: msg,list: list}, (err, data)=> {res.writeHead(200, { 'Content-Type': 'text/html;charset="utf-8"' });res.end(data)}) *//* } else if (pathname == '/doLogin') {// 獲取post傳值let postData = '';//以流的方式讀取req.on('data', (chunk)=> {postData += chunk;})// 當流讀取結束,會觸發endreq.on('end', ()=> {console.log(postData);res.end(postData);})} else if (pathname == '/admin') {res.writeHead(200, { 'Content-Type': 'text/html;charset="utf-8"' });res.end("處理客戶端的業務邏輯")} else {res.writeHead(404, { 'Content-Type': 'text/html;charset="utf-8"' });res.end("頁面不存在")}*/ }).listen(8081);console.log('Server running at http://127.0.0.1:8081/');



1、封裝仿照 express 的路由

Express 官網:https://www.expressjs.com.cn/

var express = require('express') var app = express() app.get("/", function (req, res) { res.send('hello world') })app.get("/login", function (req, res) { res.send('hello world') })app.post("/doLogin", function (req, res) { res.send('POST request to the homepage') })

2. 按照express框架的調用方式來封裝路由:
1. 封裝get方法的路由

routes.js:

const url = require('url')let G = {} let app = function (req, res) {// 路由let pathname = url.parse(req.url).pathname;// http://127.0.0.1:3000/login pathname = /loginif (G[pathname]) {G[pathname](req, res); // 表示執行方法}else {res.writeHead(404, {'Content-Type': 'text/html;charset="utf-8"'});res.end('頁面不存在');} } app.get = function (string, callback) {// 注冊方法G[string] = callback/* G['/login'] = function(req, res) {res.send('hello world')}*/// console.log('get方法') } app.post = function () {console.log('post方法') }module.exports = app

app.js :

const http = require("http"); const app = require('./module/routes')// 注冊web服務 http.createServer(app).listen(3000);console.log('Server running at http://127.0.0.1:3000/');// 配置路由 app.get('/', function(req, res) {res.writeHead(200, {'Content-Type': 'text/html;charset="utf-8"'});res.end('首頁'); })// 配置路由 app.get('/login', function(req, res) {res.writeHead(200, {'Content-Type': 'text/html;charset="utf-8"'});res.end('執行登錄操作'); })


2. 在上面代碼的基礎上

1)封裝post方法的路由

2)以及擴展res的方法,即為res增加一個send()

3)把get 和 post分開保存

routes.js :

const url = require('url')function changeRes(res) {res.send = (data) => {res.writeHead(200, { 'Content-Type': 'text/html;charset="utf-8"' });res.end(data);} }let server = () => {let G = {}// 把get 和 post分開保存G._get = {}G._post = {}let app = function (req, res) {// 擴展res的方法changeRes(res)// 路由let pathname = url.parse(req.url).pathname;// http://127.0.0.1:3000/login pathname = /login// 獲取請求類型let method = req.method.toLowerCase()if (G['_' + method][pathname]) {if (method == "get") {G['_' + method][pathname](req, res); // 表示執行方法} else {// post 獲取post的數據 把它綁定到req.body上let postData = '';req.on('data', (chunk) => {postData += chunk;})req.on('end', () => {console.log(postData)req.body = postDataG._post[pathname](req, res); // 表示執行方法})}} else {res.writeHead(404, { 'Content-Type': 'text/html;charset="utf-8"' });res.end('頁面不存在');}}app.get = function (string, callback) {// 注冊方法G._get[string] = callback/* G['/login'] = function(req, res) {res.send('hello world')}*/// console.log('get方法')}app.post = function (string, callback) {// 注冊方法G._post[string] = callback}return app;} module.exports = server()

app.js :

const http = require("http"); const ejs = require('ejs'); const app = require('./module/routes');// 注冊web服務 http.createServer(app).listen(3000);console.log('Server running at http://127.0.0.1:3000/');// 配置路由 app.get('/', function (req, res) {res.send('首頁'); })// 配置路由 app.get('/login', function (req, res) {ejs.renderFile('./views/form.ejs', {}, (err, data) => {res.send(data)}) })app.post('/doLogin', function (req, res) {res.send('執行登錄操作' + req.body); })

2. 封裝靜態web資源服務:

當頁面中引入了類似js, img,css等文件時,會出現這些靜態資源訪問不到的問題,如下所示:

  • 定義getFileMime方法,根據文件后綴名獲取文件類型:
  • mime.json:

    { ".323":"text/h323" ,".3gp":"video/3gpp" ,".aab":"application/x-authoware-bin" ,".aam":"application/x-authoware-map" ,".aas":"application/x-authoware-seg" ,".acx":"application/internet-property-stream" ,".ai":"application/postscript" ,".aif":"audio/x-aiff" ,".aifc":"audio/x-aiff" ,".aiff":"audio/x-aiff" ,".als":"audio/X-Alpha5" ,".amc":"application/x-mpeg" ,".ani":"application/octet-stream" ,".apk":"application/vnd.android.package-archive" ,".asc":"text/plain" ,".asd":"application/astound" ,".asf":"video/x-ms-asf" ,".asn":"application/astound" ,".asp":"application/x-asap" ,".asr":"video/x-ms-asf" ,".asx":"video/x-ms-asf" ,".au":"audio/basic" ,".avb":"application/octet-stream" ,".avi":"video/x-msvideo" ,".awb":"audio/amr-wb" ,".axs":"application/olescript" ,".bas":"text/plain" ,".bcpio":"application/x-bcpio" ,".bin ":"application/octet-stream" ,".bld":"application/bld" ,".bld2":"application/bld2" ,".bmp":"image/bmp" ,".bpk":"application/octet-stream" ,".bz2":"application/x-bzip2" ,".c":"text/plain" ,".cal":"image/x-cals" ,".cat":"application/vnd.ms-pkiseccat" ,".ccn":"application/x-cnc" ,".cco":"application/x-cocoa" ,".cdf":"application/x-cdf" ,".cer":"application/x-x509-ca-cert" ,".cgi":"magnus-internal/cgi" ,".chat":"application/x-chat" ,".class":"application/octet-stream" ,".clp":"application/x-msclip" ,".cmx":"image/x-cmx" ,".co":"application/x-cult3d-object" ,".cod":"image/cis-cod" ,".conf":"text/plain" ,".cpio":"application/x-cpio" ,".cpp":"text/plain" ,".cpt":"application/mac-compactpro" ,".crd":"application/x-mscardfile" ,".crl":"application/pkix-crl" ,".crt":"application/x-x509-ca-cert" ,".csh":"application/x-csh" ,".csm":"chemical/x-csml" ,".csml":"chemical/x-csml" ,".css":"text/css" ,".cur":"application/octet-stream" ,".dcm":"x-lml/x-evm" ,".dcr":"application/x-director" ,".dcx":"image/x-dcx" ,".der":"application/x-x509-ca-cert" ,".dhtml":"text/html" ,".dir":"application/x-director" ,".dll":"application/x-msdownload" ,".dmg":"application/octet-stream" ,".dms":"application/octet-stream" ,".doc":"application/msword" ,".docx":"application/vnd.openxmlformats-officedocument.wordprocessingml.document" ,".dot":"application/msword" ,".dvi":"application/x-dvi" ,".dwf":"drawing/x-dwf" ,".dwg":"application/x-autocad" ,".dxf":"application/x-autocad" ,".dxr":"application/x-director" ,".ebk":"application/x-expandedbook" ,".emb":"chemical/x-embl-dl-nucleotide" ,".embl":"chemical/x-embl-dl-nucleotide" ,".eps":"application/postscript" ,".epub":"application/epub+zip" ,".eri":"image/x-eri" ,".es":"audio/echospeech" ,".esl":"audio/echospeech" ,".etc":"application/x-earthtime" ,".etx":"text/x-setext" ,".evm":"x-lml/x-evm" ,".evy":"application/envoy" ,".exe":"application/octet-stream" ,".fh4":"image/x-freehand" ,".fh5":"image/x-freehand" ,".fhc":"image/x-freehand" ,".fif":"application/fractals" ,".flr":"x-world/x-vrml" ,".flv":"flv-application/octet-stream" ,".fm":"application/x-maker" ,".fpx":"image/x-fpx" ,".fvi":"video/isivideo" ,".gau":"chemical/x-gaussian-input" ,".gca":"application/x-gca-compressed" ,".gdb":"x-lml/x-gdb" ,".gif":"image/gif" ,".gps":"application/x-gps" ,".gtar":"application/x-gtar" ,".gz":"application/x-gzip" ,".h":"text/plain" ,".hdf":"application/x-hdf" ,".hdm":"text/x-hdml" ,".hdml":"text/x-hdml" ,".hlp":"application/winhlp" ,".hqx":"application/mac-binhex40" ,".hta":"application/hta" ,".htc":"text/x-component" ,".htm":"text/html" ,".html":"text/html" ,".hts":"text/html" ,".htt":"text/webviewhtml" ,".ice":"x-conference/x-cooltalk" ,".ico":"image/x-icon" ,".ief":"image/ief" ,".ifm":"image/gif" ,".ifs":"image/ifs" ,".iii":"application/x-iphone" ,".imy":"audio/melody" ,".ins":"application/x-internet-signup" ,".ips":"application/x-ipscript" ,".ipx":"application/x-ipix" ,".isp":"application/x-internet-signup" ,".it":"audio/x-mod" ,".itz":"audio/x-mod" ,".ivr":"i-world/i-vrml" ,".j2k":"image/j2k" ,".jad":"text/vnd.sun.j2me.app-descriptor" ,".jam":"application/x-jam" ,".jar":"application/java-archive" ,".java":"text/plain" ,".jfif":"image/pipeg" ,".jnlp":"application/x-java-jnlp-file" ,".jpe":"image/jpeg" ,".jpeg":"image/jpeg" ,".jpg":"image/jpeg" ,".jpz":"image/jpeg" ,".js":"application/x-javascript" ,".jwc":"application/jwc" ,".kjx":"application/x-kjx" ,".lak":"x-lml/x-lak" ,".latex":"application/x-latex" ,".lcc":"application/fastman" ,".lcl":"application/x-digitalloca" ,".lcr":"application/x-digitalloca" ,".lgh":"application/lgh" ,".lha":"application/octet-stream" ,".lml":"x-lml/x-lml" ,".lmlpack":"x-lml/x-lmlpack" ,".log":"text/plain" ,".lsf":"video/x-la-asf" ,".lsx":"video/x-la-asf" ,".lzh":"application/octet-stream" ,".m13":"application/x-msmediaview" ,".m14":"application/x-msmediaview" ,".m15":"audio/x-mod" ,".m3u":"audio/x-mpegurl" ,".m3url":"audio/x-mpegurl" ,".m4a":"audio/mp4a-latm" ,".m4b":"audio/mp4a-latm" ,".m4p":"audio/mp4a-latm" ,".m4u":"video/vnd.mpegurl" ,".m4v":"video/x-m4v" ,".ma1":"audio/ma1" ,".ma2":"audio/ma2" ,".ma3":"audio/ma3" ,".ma5":"audio/ma5" ,".man":"application/x-troff-man" ,".map":"magnus-internal/imagemap" ,".mbd":"application/mbedlet" ,".mct":"application/x-mascot" ,".mdb":"application/x-msaccess" ,".mdz":"audio/x-mod" ,".me":"application/x-troff-me" ,".mel":"text/x-vmel" ,".mht":"message/rfc822" ,".mhtml":"message/rfc822" ,".mi":"application/x-mif" ,".mid":"audio/mid" ,".midi":"audio/midi" ,".mif":"application/x-mif" ,".mil":"image/x-cals" ,".mio":"audio/x-mio" ,".mmf":"application/x-skt-lbs" ,".mng":"video/x-mng" ,".mny":"application/x-msmoney" ,".moc":"application/x-mocha" ,".mocha":"application/x-mocha" ,".mod":"audio/x-mod" ,".mof":"application/x-yumekara" ,".mol":"chemical/x-mdl-molfile" ,".mop":"chemical/x-mopac-input" ,".mov":"video/quicktime" ,".movie":"video/x-sgi-movie" ,".mp2":"video/mpeg" ,".mp3":"audio/mpeg" ,".mp4":"video/mp4" ,".mpa":"video/mpeg" ,".mpc":"application/vnd.mpohun.certificate" ,".mpe":"video/mpeg" ,".mpeg":"video/mpeg" ,".mpg":"video/mpeg" ,".mpg4":"video/mp4" ,".mpga":"audio/mpeg" ,".mpn":"application/vnd.mophun.application" ,".mpp":"application/vnd.ms-project" ,".mps":"application/x-mapserver" ,".mpv2":"video/mpeg" ,".mrl":"text/x-mrml" ,".mrm":"application/x-mrm" ,".ms":"application/x-troff-ms" ,".msg":"application/vnd.ms-outlook" ,".mts":"application/metastream" ,".mtx":"application/metastream" ,".mtz":"application/metastream" ,".mvb":"application/x-msmediaview" ,".mzv":"application/metastream" ,".nar":"application/zip" ,".nbmp":"image/nbmp" ,".nc":"application/x-netcdf" ,".ndb":"x-lml/x-ndb" ,".ndwn":"application/ndwn" ,".nif":"application/x-nif" ,".nmz":"application/x-scream" ,".nokia-op-logo":"image/vnd.nok-oplogo-color" ,".npx":"application/x-netfpx" ,".nsnd":"audio/nsnd" ,".nva":"application/x-neva1" ,".nws":"message/rfc822" ,".oda":"application/oda" ,".ogg":"audio/ogg" ,".oom":"application/x-AtlasMate-Plugin" ,".p10":"application/pkcs10" ,".p12":"application/x-pkcs12" ,".p7b":"application/x-pkcs7-certificates" ,".p7c":"application/x-pkcs7-mime" ,".p7m":"application/x-pkcs7-mime" ,".p7r":"application/x-pkcs7-certreqresp" ,".p7s":"application/x-pkcs7-signature" ,".pac":"audio/x-pac" ,".pae":"audio/x-epac" ,".pan":"application/x-pan" ,".pbm":"image/x-portable-bitmap" ,".pcx":"image/x-pcx" ,".pda":"image/x-pda" ,".pdb":"chemical/x-pdb" ,".pdf":"application/pdf" ,".pfr":"application/font-tdpfr" ,".pfx":"application/x-pkcs12" ,".pgm":"image/x-portable-graymap" ,".pict":"image/x-pict" ,".pko":"application/ynd.ms-pkipko" ,".pm":"application/x-perl" ,".pma":"application/x-perfmon" ,".pmc":"application/x-perfmon" ,".pmd":"application/x-pmd" ,".pml":"application/x-perfmon" ,".pmr":"application/x-perfmon" ,".pmw":"application/x-perfmon" ,".png":"image/png" ,".pnm":"image/x-portable-anymap" ,".pnz":"image/png" ,".pot,":"application/vnd.ms-powerpoint" ,".ppm":"image/x-portable-pixmap" ,".pps":"application/vnd.ms-powerpoint" ,".ppt":"application/vnd.ms-powerpoint" ,".pptx":"application/vnd.openxmlformats-officedocument.presentationml.presentation" ,".pqf":"application/x-cprplayer" ,".pqi":"application/cprplayer" ,".prc":"application/x-prc" ,".prf":"application/pics-rules" ,".prop":"text/plain" ,".proxy":"application/x-ns-proxy-autoconfig" ,".ps":"application/postscript" ,".ptlk":"application/listenup" ,".pub":"application/x-mspublisher" ,".pvx":"video/x-pv-pvx" ,".qcp":"audio/vnd.qcelp" ,".qt":"video/quicktime" ,".qti":"image/x-quicktime" ,".qtif":"image/x-quicktime" ,".r3t":"text/vnd.rn-realtext3d" ,".ra":"audio/x-pn-realaudio" ,".ram":"audio/x-pn-realaudio" ,".rar":"application/octet-stream" ,".ras":"image/x-cmu-raster" ,".rc":"text/plain" ,".rdf":"application/rdf+xml" ,".rf":"image/vnd.rn-realflash" ,".rgb":"image/x-rgb" ,".rlf":"application/x-richlink" ,".rm":"audio/x-pn-realaudio" ,".rmf":"audio/x-rmf" ,".rmi":"audio/mid" ,".rmm":"audio/x-pn-realaudio" ,".rmvb":"audio/x-pn-realaudio" ,".rnx":"application/vnd.rn-realplayer" ,".roff":"application/x-troff" ,".rp":"image/vnd.rn-realpix" ,".rpm":"audio/x-pn-realaudio-plugin" ,".rt":"text/vnd.rn-realtext" ,".rte":"x-lml/x-gps" ,".rtf":"application/rtf" ,".rtg":"application/metastream" ,".rtx":"text/richtext" ,".rv":"video/vnd.rn-realvideo" ,".rwc":"application/x-rogerwilco" ,".s3m":"audio/x-mod" ,".s3z":"audio/x-mod" ,".sca":"application/x-supercard" ,".scd":"application/x-msschedule" ,".sct":"text/scriptlet" ,".sdf":"application/e-score" ,".sea":"application/x-stuffit" ,".setpay":"application/set-payment-initiation" ,".setreg":"application/set-registration-initiation" ,".sgm":"text/x-sgml" ,".sgml":"text/x-sgml" ,".sh":"application/x-sh" ,".shar":"application/x-shar" ,".shtml":"magnus-internal/parsed-html" ,".shw":"application/presentations" ,".si6":"image/si6" ,".si7":"image/vnd.stiwap.sis" ,".si9":"image/vnd.lgtwap.sis" ,".sis":"application/vnd.symbian.install" ,".sit":"application/x-stuffit" ,".skd":"application/x-Koan" ,".skm":"application/x-Koan" ,".skp":"application/x-Koan" ,".skt":"application/x-Koan" ,".slc":"application/x-salsa" ,".smd":"audio/x-smd" ,".smi":"application/smil" ,".smil":"application/smil" ,".smp":"application/studiom" ,".smz":"audio/x-smd" ,".snd":"audio/basic" ,".spc":"application/x-pkcs7-certificates" ,".spl":"application/futuresplash" ,".spr":"application/x-sprite" ,".sprite":"application/x-sprite" ,".sdp":"application/sdp" ,".spt":"application/x-spt" ,".src":"application/x-wais-source" ,".sst":"application/vnd.ms-pkicertstore" ,".stk":"application/hyperstudio" ,".stl":"application/vnd.ms-pkistl" ,".stm":"text/html" ,".svg":"image/svg+xml" ,".sv4cpio":"application/x-sv4cpio" ,".sv4crc":"application/x-sv4crc" ,".svf":"image/vnd" ,".svg":"image/svg+xml" ,".svh":"image/svh" ,".svr":"x-world/x-svr" ,".swf":"application/x-shockwave-flash" ,".swfl":"application/x-shockwave-flash" ,".t":"application/x-troff" ,".tad":"application/octet-stream" ,".talk":"text/x-speech" ,".tar":"application/x-tar" ,".taz":"application/x-tar" ,".tbp":"application/x-timbuktu" ,".tbt":"application/x-timbuktu" ,".tcl":"application/x-tcl" ,".tex":"application/x-tex" ,".texi":"application/x-texinfo" ,".texinfo":"application/x-texinfo" ,".tgz":"application/x-compressed" ,".thm":"application/vnd.eri.thm" ,".tif":"image/tiff" ,".tiff":"image/tiff" ,".tki":"application/x-tkined" ,".tkined":"application/x-tkined" ,".toc":"application/toc" ,".toy":"image/toy" ,".tr":"application/x-troff" ,".trk":"x-lml/x-gps" ,".trm":"application/x-msterminal" ,".tsi":"audio/tsplayer" ,".tsp":"application/dsptype" ,".tsv":"text/tab-separated-values" ,".ttf":"application/octet-stream" ,".ttz":"application/t-time" ,".txt":"text/plain" ,".uls":"text/iuls" ,".ult":"audio/x-mod" ,".ustar":"application/x-ustar" ,".uu":"application/x-uuencode" ,".uue":"application/x-uuencode" ,".vcd":"application/x-cdlink" ,".vcf":"text/x-vcard" ,".vdo":"video/vdo" ,".vib":"audio/vib" ,".viv":"video/vivo" ,".vivo":"video/vivo" ,".vmd":"application/vocaltec-media-desc" ,".vmf":"application/vocaltec-media-file" ,".vmi":"application/x-dreamcast-vms-info" ,".vms":"application/x-dreamcast-vms" ,".vox":"audio/voxware" ,".vqe":"audio/x-twinvq-plugin" ,".vqf":"audio/x-twinvq" ,".vql":"audio/x-twinvq" ,".vre":"x-world/x-vream" ,".vrml":"x-world/x-vrml" ,".vrt":"x-world/x-vrt" ,".vrw":"x-world/x-vream" ,".vts":"workbook/formulaone" ,".wav":"audio/x-wav" ,".wax":"audio/x-ms-wax" ,".wbmp":"image/vnd.wap.wbmp" ,".wcm":"application/vnd.ms-works" ,".wdb":"application/vnd.ms-works" ,".web":"application/vnd.xara" ,".wi":"image/wavelet" ,".wis":"application/x-InstallShield" ,".wks":"application/vnd.ms-works" ,".wm":"video/x-ms-wm" ,".wma":"audio/x-ms-wma" ,".wmd":"application/x-ms-wmd" ,".wmf":"application/x-msmetafile" ,".wml":"text/vnd.wap.wml" ,".wmlc":"application/vnd.wap.wmlc" ,".wmls":"text/vnd.wap.wmlscript" ,".wmlsc":"application/vnd.wap.wmlscriptc" ,".wmlscript":"text/vnd.wap.wmlscript" ,".wmv":"audio/x-ms-wmv" ,".wmx":"video/x-ms-wmx" ,".wmz":"application/x-ms-wmz" ,".wpng":"image/x-up-wpng" ,".wps":"application/vnd.ms-works" ,".wpt":"x-lml/x-gps" ,".wri":"application/x-mswrite" ,".wrl":"x-world/x-vrml" ,".wrz":"x-world/x-vrml" ,".ws":"text/vnd.wap.wmlscript" ,".wsc":"application/vnd.wap.wmlscriptc" ,".wv":"video/wavelet" ,".wvx":"video/x-ms-wvx" ,".wxl":"application/x-wxl" ,".x-gzip":"application/x-gzip" ,".xaf":"x-world/x-vrml" ,".xar":"application/vnd.xara" ,".xbm":"image/x-xbitmap" ,".xdm":"application/x-xdma" ,".xdma":"application/x-xdma" ,".xdw":"application/vnd.fujixerox.docuworks" ,".xht":"application/xhtml+xml" ,".xhtm":"application/xhtml+xml" ,".xhtml":"application/xhtml+xml" ,".xla":"application/vnd.ms-excel" ,".xlc":"application/vnd.ms-excel" ,".xll":"application/x-excel" ,".xlm":"application/vnd.ms-excel" ,".xls":"application/vnd.ms-excel" ,".xlsx":"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" ,".xlt":"application/vnd.ms-excel" ,".xlw":"application/vnd.ms-excel" ,".xm":"audio/x-mod" ,".xml":"text/plain",".xml":"application/xml",".xmz":"audio/x-mod" ,".xof":"x-world/x-vrml" ,".xpi":"application/x-xpinstall" ,".xpm":"image/x-xpixmap" ,".xsit":"text/xml" ,".xsl":"text/xml" ,".xul":"text/xul" ,".xwd":"image/x-xwindowdump" ,".xyz":"chemical/x-pdb" ,".yz1":"application/x-yz1" ,".z":"application/x-compress" ,".zac":"application/x-zaurus-zac" ,".zip":"application/zip" ,".json":"application/json" }
  • 定義靜態web服務方法initStatic()
  • 在app方法中調用initStatic()
  • 設置靜態資源目錄
  • 然后就能夠加載到css等靜態資源
  • routes.js :

    const url = require('url') const path = require('path') const fs = require('fs')// 擴展res function changeRes(res) {res.send = (data) => {res.writeHead(200, { 'Content-Type': 'text/html;charset="utf-8"' });res.end(data);} }// 根據后綴名獲取文件類型 let getFileMime = function (extname) {// 把異步讀取文件方法改為同步讀取文件方法let data = fs.readFileSync('./data/mime.json');let mimeObj = JSON.parse(data.toString())console.log(mimeObj[extname])return mimeObj[extname] }// 靜態web服務的方法 function initStatic (req, res, staticPath){// 1. 獲取地址console.log(req.url)let pathname = url.parse(req.url).pathname// 默認加載index.htmlif (pathname == '/') {pathname = '/index.html'} else {pathname = pathname}// 獲取路徑中的后綴名let extname = path.extname(pathname)// 2.通過fs模塊讀取文件try {// 把異步讀取文件方法改為同步讀取文件方法let data = fs.readFileSync('./' + staticPath + pathname);if (data) {let mine = getFileMime(extname)res.writeHead(200, { 'Content-Type': '' + mine + ';charset="utf-8"' });res.end(data);}} catch (error) {} }let server = () => {let G = {_get: {}, // 把get 和 post分開保存_post: {},staticPath: "static" // 設置默認的靜態資源web目錄}let app = function (req, res) {// 擴展res的方法changeRes(res)// 配置靜態web服務器initStatic(req, res, G.staticPath)// 路由let pathname = url.parse(req.url).pathname;// http://127.0.0.1:3000/login pathname = /login// 獲取請求類型let method = req.method.toLowerCase()if (G['_' + method][pathname]) {if (method == "get") {G['_' + method][pathname](req, res); // 表示執行方法} else {// post 獲取post的數據 把它綁定到req.body上let postData = '';req.on('data', (chunk) => {postData += chunk;})req.on('end', () => {console.log(postData)req.body = postDataG._post[pathname](req, res); // 表示執行方法})}} else {res.writeHead(404, { 'Content-Type': 'text/html;charset="utf-8"' });res.end('頁面不存在');}}app.get = function (string, callback) {// 注冊方法G._get[string] = callback/* G['/login'] = function(req, res) {res.send('hello world')}*/// console.log('get方法')}app.post = function (string, callback) {// 注冊方法G._post[string] = callback}// 配置靜態web服務目錄app.static = function (staticPath){G.staticPath = staticPath}return app;} module.exports = server()

    app.js :

    const http = require("http"); const ejs = require('ejs'); const app = require('./module/routes');// 注冊web服務 http.createServer(app).listen(3000);console.log('Server running at http://127.0.0.1:3000/');// 修改默認靜態web目錄 app.static("public");// 配置路由 app.get('/', function (req, res) {res.send('首頁'); })// 配置路由 app.get('/login', function (req, res) {ejs.renderFile('./views/form.ejs', {}, (err, data) => {res.send(data)}) })app.post('/doLogin', function (req, res) {res.send('執行登錄操作' + req.body); })

    總結

    以上是生活随笔為你收集整理的Nodejs 路由封装 封装一个类似 express 的路由的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    97超碰在线久草超碰在线观看 | 久久不卡视频 | 欧美精品二区 | av成年人电影 | 久久精品亚洲精品国产欧美 | 色婷婷亚洲综合 | 免费视频成人 | 激情视频在线高清看 | 日本久久久久久久久久 | 69精品在线观看 | 国产精品久久久久久久免费观看 | 日韩网站在线 | 欧美一区二区三区激情视频 | 91免费视频网站在线观看 | 日韩大片在线看 | 久99久中文字幕在线 | 97精品国产97久久久久久久久久久久 | x99av成人免费 | 国产理论一区二区三区 | 精品五月天 | 国产不卡网站 | 精品一区二区在线播放 | 在线观看国产一区二区 | 999ZYZ玖玖资源站永久 | 色多多在线观看 | 日韩色av色资源 | 国产日产在线观看 | 成人在线视频免费观看 | 在线成人看片 | 免费美女久久99 | 日韩在线第一区 | 日韩精选在线观看 | 亚洲热久久 | 91精品国产一区二区三区 | 日韩网站在线看片你懂的 | 婷婷丁香久久五月婷婷 | 成av人电影 | 国产免费激情久久 | 伊人夜夜| 毛片99| 91精品国产99久久久久久久 | av免费在线观看网站 | 日本久久久久 | 啪一啪在线 | 成人sm另类专区 | 99精品免费久久久久久久久 | 国产精品一区二区62 | 国内视频一区二区 | 久久调教视频 | 亚洲精品资源在线观看 | 成年人在线视频观看 | 特级xxxxx欧美 | 精品一区二区三区香蕉蜜桃 | 伊人伊成久久人综合网站 | 精品国产乱码久久久久久1区2匹 | 久久免费视频在线观看30 | 五月婷婷色综合 | 欧美日韩在线播放 | 久久首页| 午夜精品久久久久久久99婷婷 | 人人干免费 | 久久久在线免费观看 | 天天干天天搞天天射 | 成年人电影免费在线观看 | 国产亚洲精品久久久久5区 成人h电影在线观看 | 日韩av电影网站在线观看 | 97视频资源| 永久免费看av | 国产乱老熟视频网88av | 日韩中文字幕免费在线观看 | 国产精品在线看 | 中文字幕字幕中文 | 国产精品久久久久久久久久久免费 | 日韩精品视频在线观看网址 | 国产精品久久久久免费a∨ 欧美一级性生活片 | 蜜臀av性久久久久蜜臀aⅴ流畅 | 午夜精选视频 | 丁香六月婷婷开心 | 九九九免费视频 | 天天干天天天天 | 精品高清美女精品国产区 | 性色大片在线观看 | 色干综合 | 最新av免费| 五月天婷婷在线观看视频 | 丰满少妇对白在线偷拍 | 在线91播放 | 日韩乱色精品一区二区 | 国产精品日韩在线播放 | 麻豆激情电影 | 日韩区在线观看 | 中文字幕 欧美性 | 午夜 久久 tv| 亚洲成aⅴ人在线观看 | 亚洲区精品 | 久久久久久国产精品久久 | 中文av不卡| 久久永久免费视频 | 99视频一区| 久久精品美女视频 | 超碰在线中文字幕 | 久久电影中文字幕视频 | 久久艹在线观看 | 免费日韩 | av综合网址 | 国产精品免费一区二区 | 三级av在线播放 | 婷婷久久丁香 | 久久艹99| 婷婷四房综合激情五月 | 久久久久免费电影 | 日韩高清一区 | 免费高清在线一区 | 黄色资源在线观看 | 西西444www大胆高清视频 | 日韩免费视频线观看 | 97精品国产 | 美女黄网久久 | 日本成人黄色片 | 日精品 | 精品亚洲成a人在线观看 | 国产黄色片网站 | 成人a v视频 | 成人性生交大片免费观看网站 | 色综合五月 | 奇米网777 | 亚洲精品色视频 | 亚洲理论在线观看电影 | 国产精品综合在线 | 久草网在线观看 | 一区二区三区日韩视频在线观看 | 中文字幕丝袜 | 天堂va欧美va亚洲va老司机 | 久久人人爽爽 | 精品久久久久久亚洲 | 国产精品成人一区二区 | 天天射天天艹 | 成人亚洲网 | 免费在线一区二区三区 | 国产亚洲精品久久网站 | 婷婷5月色 | 97偷拍视频 | 日韩在线字幕 | 日韩精品一区二区三区不卡 | 国产精品亚洲成人 | 97av在线视频免费播放 | 91九色在线视频 | 久草在线观 | 婷婷成人亚洲综合国产xv88 | 成人免费视频a | 伊人小视频 | 91porny九色91啦中文 | 国产精品一区二区精品视频免费看 | 久久在线视频精品 | 亚洲dvd | av在线影视 | 亚洲精品av在线 | 欧美一区二区日韩一区二区 | 亚洲美女在线一区 | 国产视频在线观看一区 | 国产成人av在线 | 亚洲天堂网站视频 | 久草在线看片 | 成人免费观看视频网站 | 天堂av网址 | 国产精品久久久久影院日本 | 狠狠色丁香婷综合久久 | 91毛片在线 | 国产婷婷久久 | a√国产免费a | 天天射成人| 国产69精品久久久久99 | 激情综合国产 | 日韩视频免费 | 久草网免费 | 丁香激情综合国产 | 国产精品麻豆三级一区视频 | 亚洲精品乱码久久久久久久久久 | 午夜少妇 | 黄色三级视频片 | 久久精品国产v日韩v亚洲 | 久久久久久麻豆 | 一区二区精品视频 | 国产精品久久久久久999 | 欧美一级免费在线 | 国产精彩视频一区 | 91黄色在线观看 | 日精品| 日韩精品播放 | 91在线看视频 | 婷婷社区五月天 | 在线观看久久久久久 | 亚洲欧美日韩精品久久久 | 国产一区视频在线播放 | 美女一级毛片视频 | 精品一区二区av | 九九久久精品视频 | 在线免费观看亚洲视频 | 久久综合色天天久久综合图片 | 欧美激情精品久久久久久免费印度 | 天天操天天干天天 | 国产xvideos免费视频播放 | 国产精品a久久久久 | 国产69精品久久久久99 | 国产精品久久一区二区无卡 | 黄色美女免费网站 | 天堂黄色片 | 欧美国产不卡 | 黄色成人影院 | 不卡在线一区 | 色婷婷综合久久久久中文字幕1 | 国产在线精品一区二区 | 久久99热国产 | 亚洲精品国产精品国自产在线 | 九九免费在线观看 | 看片的网址 | 天天爽天天碰狠狠添 | 国产成人久久精品亚洲 | 久久福利小视频 | 黄色特级片 | 国产96精品 | 美女黄色网在线播放 | 亚洲激情视频在线 | 久久久久成人精品免费播放动漫 | 国内精品免费 | 国产精久久久 | 国产精品久久久久久久电影 | 五月婷婷开心中文字幕 | 婷婷激情站 | 亚洲精品午夜视频 | 亚洲久草在线视频 | 国产亚洲视频系列 | 国产啊v在线 | 日日夜夜天天操 | 久久国产精品精品国产色婷婷 | 手机在线看永久av片免费 | 久久国产精品一区二区三区四区 | 日韩av一区二区三区 | 色妞色视频一区二区三区四区 | 中文字幕丝袜制服 | 亚洲精品视频免费在线观看 | 婷婷久久国产 | 国产精品成人品 | 99精品视频中文字幕 | 99免费视频 | 狠狠色网 | 99re6热在线精品视频 | 热99在线视频 | 国产第一页精品 | 亚洲一区二区观看 | 成人免费 在线播放 | 日韩av图片 | 99精品国产成人一区二区 | 激情网五月 | 天天天天色射综合 | 久久久久久久久久久黄色 | 亚洲精品乱码久久 | 欧美日韩高清免费 | 亚洲精品乱码久久久久久蜜桃动漫 | 又黄又爽又无遮挡的视频 | 国产精品久久久久999 | 欧美色插| 99视频这里有精品 | 在线播放第一页 | 亚洲免费视频观看 | 久久精品成人欧美大片古装 | 亚洲国产合集 | 久久久久亚洲国产精品 | 免费在线激情视频 | 色姑娘综合网 | 亚洲精品午夜久久久久久久久久久 | 99在线热播精品免费 | 天天天天天天操 | 免费看三级黄色片 | 超碰在线人人97 | 夜夜夜夜猛噜噜噜噜噜初音未来 | 99热在线这里只有精品 | 欧美色操 | 欧美性猛片, | 国产福利中文字幕 | 欧美日韩免费在线视频 | 色综合亚洲精品激情狠狠 | 亚洲欧美一区二区三区孕妇写真 | 操高跟美女 | 一二三区高清 | 欧美小视频在线观看 | 不卡的av电影 | 中文字幕免费成人 | 天天干天天弄 | 精品国产一区二区三区久久影院 | a天堂中文在线 | 免费网站污| 免费观看一区二区 | 精品国产免费一区二区三区五区 | 91成年视频 | 日韩二三区 | 日韩欧美在线免费观看 | 欧美日韩在线网站 | 91在线视频观看免费 | 久久国产精品久久国产精品 | 99精品欧美一区二区 | 中文字幕在线观看第三页 | 中文字幕网站视频在线 | 高潮久久久久久久久 | 日韩在线观看视频在线 | 亚洲国产小视频在线观看 | 色国产视频 | 欧美日韩性视频在线 | 亚洲成人频道 | 天天操天天爱天天爽 | 国产91亚洲精品 | 精品 一区 在线 | 国产精品av在线免费观看 | 激情欧美xxxx | 欧美黑吊大战白妞欧美 | 精品一区av | 91在线观看黄 | 免费观看性生活大片3 | 少妇bbw搡bbbb搡bbb | 日本69hd| 亚洲免费一级电影 | 亚洲精品国偷自产在线91正片 | 91精品视频免费看 | 最新av电影网站 | 国产中文伊人 | 国产精品第7页 | 婷婷丁香激情五月 | 国产精品va| 国产精品一区专区欧美日韩 | 中文字幕在线影视资源 | 欧美成人性网 | 久久精品99久久久久久 | 精品久久久久久久久久久久 | 久久精品免费 | 亚洲免费在线播放视频 | 91桃色在线观看视频 | 日本久久成人 | 天天干夜夜操视频 | 国产一级淫片免费看 | 日本久久成人 | 欧美巨乳波霸 | 色综合久久久久久久久五月 | 国产五月天婷婷 | 97超碰中文字幕 | 久草精品在线观看 | 国产九九精品 | 日韩理论在线播放 | 九九影视理伦片 | 婷婷色综 | 91天堂在线观看 | 五月婷综合 | 麻豆91在线 | 香蕉视频4aa | 天天摸天天操天天爽 | 日韩精品欧美视频 | 丁香六月天 | 狠狠色丁香久久婷婷综 | a黄在线观看 | 97视频入口免费观看 | 少妇搡bbb| 亚洲国产欧洲综合997久久, | 丁香影院在线 | 久草影视在线观看 | 在线高清一区 | 在线亚洲成人 | 成人中心免费视频 | 久久久美女 | 午夜影院在线观看18 | 久草在线久 | 在线影视 一区 二区 三区 | 午夜精品久久久久久99热明星 | 高清日韩一区二区 | 国产精品毛片一区视频 | 欧美日韩亚洲国产一区 | 成人不用播放器 | 亚洲精品动漫久久久久 | 亚洲视频电影在线 | 狠狠狠狠狠狠 | 久久男人免费视频 | 亚洲激精日韩激精欧美精品 | 九九九视频在线 | 成年人视频在线免费观看 | 久久综合射 | 久久狠狠一本精品综合网 | 婷婷色 亚洲 | 日韩欧美在线观看一区二区三区 | 国产一区二区电影在线观看 | 能在线观看的日韩av | 狠狠插天天干 | 国产精品久久久久久久久久了 | 亚洲精品色视频 | 99久久激情| av色网站 | 四虎影视8848dvd | 免费日韩一级片 | 97日日碰人人模人人澡分享吧 | 91视频高清 | 永久免费观看视频 | 久久久久久久久久久久久久免费看 | 天天综合网在线观看 | 六月丁香激情综合 | 91香蕉亚洲精品 | 视频成人永久免费视频 | 天天射天天干天天插 | 久久综合色天天久久综合图片 | 久久久2o19精品 | 最近2019中文免费高清视频观看www99 | 在线国产小视频 | 综合天堂av久久久久久久 | 九九亚洲视频 | 久久香蕉国产精品麻豆粉嫩av | 99视频网站 | 亚洲精品女人 | 天天操天天摸天天干 | 激情av综合| 免费观看一级一片 | 在线观看日韩免费视频 | 国产精品久久久久久久久久久久午 | 成人免费一区二区三区在线观看 | 日韩午夜在线观看 | 中文字幕电影一区 | 欧美老女人xx | 狠狠操狠狠操 | 日韩夜夜爽 | 极品久久久久久久 | 中文字幕丝袜美腿 | 丁香激情婷婷 | 日韩高清成人 | 欧美一二三四在线 | 夜色成人av | 天天干,夜夜爽 | 午夜精品av在线 | 精品久久久久久综合日本 | 婷婷精品在线视频 | 国产福利免费在线观看 | 亚洲激情网站免费观看 | 中文字幕一区二区三区四区在线视频 | 中文字幕a∨在线乱码免费看 | 亚洲人在线7777777精品 | 欧美韩日精品 | 国产999精品 | 在线之家免费在线观看电影 | 国产高清在线观看 | 亚洲动漫在线观看 | 日本中出在线观看 | 亚洲人成影院在线 | 97在线超碰 | 亚洲精品乱码久久久久 | 久久免费毛片 | 91福利视频在线 | 五月花丁香婷婷 | 99精品欧美一区二区三区黑人哦 | 黄色av网站在线免费观看 | 成人黄色大片在线观看 | 婷婷久久国产 | 久久久久久久久毛片精品 | 国产原创在线 | 天天综合亚洲 | 九九久久国产精品 | 国产高清中文字幕 | 玖玖玖国产精品 | 国产色女人 | 欧美精品乱码久久久久久 | 精品国产乱码 | 国产黄在线免费观看 | 手机看片 | 在线国产99 | 亚洲国产精品500在线观看 | 天天躁日日躁狠狠躁av中文 | 成人小视频在线观看免费 | www.五月天 | 最新影院 | 91麻豆精品国产91久久久更新时间 | 最新高清无码专区 | 精品久久毛片 | 在线精品视频在线观看高清 | 午夜精品一二三区 | 亚洲桃花综合 | 69精品视频在线观看 | 人人dvd | 激情五月亚洲 | 天天综合久久 | 久久这里只有精品首页 | 精品久久久久久国产91 | 国产高清专区 | 蜜桃视频在线观看一区 | 天天摸夜夜添 | 国产手机视频在线播放 | 亚洲九九 | 色噜噜噜 | 久久一视频 | 探花视频网站 | 99久热在线精品视频成人一区 | 日韩成人xxxx | 日韩激情中文字幕 | 欧美在线观看视频一区二区三区 | 亚洲一级黄色片 | 奇人奇案qvod| 欧美久久久久久久久久 | 91精品国产三级a在线观看 | 久久久国产精品亚洲一区 | 国产婷婷在线观看 | 亚洲成人精品国产 | 黄色国产在线观看 | 国产精品九九九九九 | 日韩精品久久久久久 | 在线观看免费中文字幕 | 亚洲免费精品一区二区 | 成人播放器 | 成人av在线亚洲 | 免费av影视| 一级一片免费看 | 在线免费91 | 福利视频网站 | 亚洲区精品| 黄av免费| 亚洲国产精品99久久久久久久久 | 久久不卡日韩美女 | 丁香六月伊人 | 国产一区二区在线观看视频 | 亚洲精品456在线播放乱码 | 日本黄色片一区二区 | 在线视频中文字幕一区 | 久久精品一区二区三区视频 | 特级西西444www大精品视频免费看 | 日韩首页 | 久久国产视频网站 | 日本一区二区免费在线观看 | 亚洲国产69| 国产福利网站 | 大荫蒂欧美视频另类xxxx | 69国产盗摄一区二区三区五区 | 偷拍福利视频一区二区三区 | 久久高清av | 欧美成人精品三级在线观看播放 | 久久久精品成人 | 久久电影中文字幕视频 | 最新av在线播放 | 波多野结衣在线观看一区二区三区 | 黄色免费av | 麻豆免费看片 | 亚洲一级片av | 国产第一页在线观看 | 色在线最新 | 97热在线观看 | 中文字幕在线观看网 | 在线观看亚洲精品 | 天天色图 | 免费人成在线观看网站 | 久久国产美女视频 | 88av视频 | 国产精品久久久影视 | 亚洲精品成人av在线 | 91高清免费看 | 99精品国产福利在线观看免费 | 手机在线小视频 | 激情网婷婷 | 日日干天夜夜 | 成人在线免费看视频 | 狠狠狠色丁香婷婷综合久久五月 | av电影免费观看 | 色av男人的天堂免费在线 | 天天干天天射天天插 | 在线看片成人 | 黄视频网站大全 | 蜜桃视频精品 | 精品国模一区二区 | 中文区中文字幕免费看 | 国产精品久久久久久久久搜平片 | 99在线观看| 天天草综合网 | 中文字幕亚洲国产 | 日日摸日日爽 | 精品久久久久一区二区国产 | 久久国产精品一区二区三区四区 | 久久综合狠狠综合久久综合88 | 黄色成年| 免费观看性生活大片3 | 亚洲精品综合一区二区 | 国产免费亚洲高清 | 狠狠色丁香婷婷综合最新地址 | 国产玖玖精品视频 | 成年人在线观看视频免费 | 日本久久久久久科技有限公司 | 国产精品 日韩 欧美 | 最新国产在线观看 | 在线观看日韩精品视频 | a天堂一码二码专区 | 91亚洲精品国偷拍 | 99c视频在线| av成人在线网站 | 久久婷婷激情 | 亚州日韩中文字幕 | 国产高清视频在线免费观看 | 黄色av电影免费观看 | 欧美成人性网 | 国产成人精品一区二区三区福利 | 97国产在线观看 | 欧美日韩观看 | 日批网站在线观看 | 国产精久久 | 波多野结衣在线中文字幕 | 色综合小说 | 69国产成人综合久久精品欧美 | 久久婷婷精品 | 国产精品毛片一区二区三区 | 美女视频黄在线 | 欧美日韩电影在线播放 | 久久免费视频3 | 五月婷婷综合激情 | 国产 一区二区三区 在线 | 人人超碰在线 | 日本久久成人中文字幕电影 | 欧美日韩国产一区二区三区在线观看 | 97视频在线观看播放 | 成人免费一区二区三区在线观看 | 在线观看国产高清视频 | 91最新在线视频 | 在线观看岛国 | 日本韩国精品一区二区在线观看 | 久久久久久久综合色一本 | av在线小说| 在线 国产 日韩 | 亚洲欧美视频在线 | 国产日韩精品一区二区 | 五月天激情综合网 | 成人91av| 四虎影视www | 中日韩欧美精彩视频 | 99视频在线观看视频 | 黄色亚洲大片免费在线观看 | 亚洲精选视频免费看 | 国产 在线 日韩 | 97av在线视频免费播放 | 久久影视网 | 国产明星视频三级a三级点| 一区二区三区 亚洲 | 天天综合网在线观看 | 亚洲婷婷综合色高清在线 | 色五月激情五月 | 91视频首页| 欧美日韩不卡一区二区三区 | 亚洲欧美精品一区二区 | www.狠狠操.com | 五月天网页 | 欧美精品乱码久久久久久按摩 | 久久99精品一区二区三区三区 | 在线黄色观看 | 免费午夜视频在线观看 | 探花视频在线观看 | 亚洲国产精品va在线看黑人动漫 | 免费男女羞羞的视频网站中文字幕 | 日韩精品影视 | 久草免费在线视频观看 | 国产欧美精品一区二区三区 | a色网站| 欧美极度另类性三渗透 | 欧美亚洲一区二区在线 | 在线观看国产中文字幕 | 最新中文字幕在线播放 | www亚洲一区 | 97精品国产97久久久久久粉红 | 中文字幕永久在线 | 美女在线免费观看视频 | 五月婷婷视频在线 | 99精品视频一区 | 色偷偷88888欧美精品久久久 | 久久久免费在线观看 | 日韩欧美国产精品 | 日日干夜夜爱 | av丁香花 | 视频一区在线免费观看 | 伊人婷婷 | 久久久久久久久综合 | 菠萝菠萝在线精品视频 | 国产精品正在播放 | 香蕉视频在线观看免费 | 国产麻豆剧果冻传媒视频播放量 | av综合在线观看 | 不卡的av中文字幕 | 久久国产三级 | 中文在线 | 久久福利国产 | 97在线精品 | 久久av一区二区三区亚洲 | 欧美日韩在线免费视频 | 久久精品视频18 | 天天干天天操天天干 | 久久视了| 成在线播放 | a黄色一级片 | 亚洲精品久久久蜜臀下载官网 | 五月婷在线观看 | 日韩欧美一区二区三区在线观看 | 在线观看免费观看在线91 | h动漫中文字幕 | 午夜黄色大片 | 午夜三级在线 | 手机av观看| 最近中文字幕mv免费高清在线 | 中文字幕资源站 | 一区二区三区视频网站 | 国产精品正在播放 | 日本久久久影视 | 91在线精品秘密一区二区 | 欧洲色吧 | 狠狠地日 | 五月色综合 | 国产日产精品一区二区三区四区的观看方式 | 中文在线最新版天堂 | 久久久网站| 高清av免费观看 | 欧美一区二区免费在线观看 | 国产福利网站 | 五月综合网站 | 久久久国产精品电影 | 激情综合色图 | 69av视频在线 | 天天爱天天| 91av小视频 | 国产精品黄色影片导航在线观看 | 青草视频在线播放 | av不卡中文字幕 | 美女网站在线 | 色亚洲激情 | 欧美日韩一区二区视频在线观看 | 中文资源在线播放 | 超碰99人人 | 久99久精品视频免费观看 | 免费av大片 | 91黄色影视| 天天天天爱天天躁 | 婷婷av在线 | 国产精品字幕 | 天天射天天干天天 | 99精品欧美一区二区 | 天天插天天爱 | 亚洲一二区视频 | 六月婷婷久香在线视频 | 日韩精品观看 | 色综合色综合久久综合频道88 | 中文在线a天堂 | 在线观看国产一区二区 | 99草在线视频 | 国产高清在线a视频大全 | 欧美日韩亚洲在线 | 91亚洲精品久久久中文字幕 | 免费av网站在线 | 日日夜夜骑 | 婷婷 中文字幕 | 国产精品igao视频网网址 | av电影一区 | 亚洲精品18日本一区app | 在线黄色毛片 | 日韩综合在线观看 | 日韩精品一区电影 | 欧美日韩不卡一区 | 国产精品理论片在线观看 | 在线日韩中文字幕 | 国产精品久久伊人 | 久久精品中文字幕一区二区三区 | 国产在线一区观看 | 久久免费毛片视频 | 中文字幕国产视频 | 日本久久久影视 | www.午夜 | 久久最新视频 | 在线观看国产v片 | 久久天天操 | 99草在线视频 | 免费在线播放视频 | 在线91网 | 亚洲精品中文字幕视频 | 91亚洲精 | 九九热在线精品 | 2000xxx影视 | 亚洲精品欧美专区 | 中文字幕成人在线观看 | 欧美在线观看视频一区二区三区 | 波多野结衣亚洲一区二区 | 成人教育av| 免费视频久久久久 | 韩国av一区二区三区 | 国产婷婷精品av在线 | 亚洲综合成人婷婷小说 | 日韩一区二区三区在线看 | 久久一及片| 国产精品日韩在线观看 | 深爱婷婷网| 久久久久久国产精品久久 | 日韩视频在线观看视频 | 日韩综合在线观看 | 人成在线免费视频 | 中文字幕黄色 | 成人免费视频播放 | 中文字幕免费在线看 | 97精品伊人 | 99精品国产99久久久久久97 | 亚洲黄色网络 | 亚洲高清在线视频 | 91欧美日韩国产 | 亚洲欧美日韩国产一区二区 | 天天操天天干天天摸 | 久久久久久国产精品999 | 99九九免费视频 | 黄色字幕网 | 日韩精品无码一区二区三区 | aaa毛片视频| 亚洲精品自拍视频在线观看 | 欧美色精品天天在线观看视频 | 日韩精品一区二区免费视频 | 在线观看日韩一区 | 午夜免费视频网站 | 国产精品网站一区二区三区 | 午夜电影 电影 | 国产传媒中文字幕 | 久久久久激情视频 | 能在线看的av | 视频在线国产 | 中日韩在线视频 | 超碰97成人 | 国产精品久久久久婷婷二区次 | 久久毛片网站 | 久草视频免费观 | 一区二区三区四区精品 | 国产高清在线观看av | 国产精品国内免费一区二区三区 | 久久国产精品成人免费浪潮 | 日韩一区二区三 | 免费看黄色小说的网站 | 久久久久久久久久久久电影 | 久久伊人八月婷婷综合激情 | 午夜av在线免费 | av综合站 | 一本到视频在线观看 | 综合网婷婷 | 色婷婷视频在线观看 | 国产精品永久久久久久久久久 | 日本丶国产丶欧美色综合 | 国模一区二区三区四区 | 久久久久久久久久免费 | 日日夜夜精品免费观看 | 欧美日韩亚洲在线观看 | 国产麻豆传媒 | 欧美日韩精品在线视频 | 六月丁香激情综合色啪小说 | 日日麻批40分钟视频免费观看 | 日韩性xxx | 国产精品青草综合久久久久99 | 成人a免费看 | 日韩大片在线播放 | 欧美成天堂网地址 | 五月天九九| 91免费视频国产 | 亚洲一区久久 | 日本三级全黄少妇三2023 | 91香蕉视频色版 | 成人免费在线观看入口 | 99久久精品久久久久久动态片 | 91免费网站在线观看 | 免费电影播放 | 国产亚洲精品久久 | 在线免费观看视频一区 | 美女视频a美女大全免费下载蜜臀 | 日韩精品网址 | 成人久久久精品国产乱码一区二区 | 九九热只有精品 | 探花视频在线观看免费版 | 午夜视频在线观看网站 | 日韩欧美在线播放 | 国产中文字幕在线播放 | 国产精品久久久视频 | 欧美日韩高清不卡 | 狠狠的干狠狠的操 | 欧美日韩国产色综合一二三四 | 免费在线观看av网站 | 久久综合九色综合久久久精品综合 | 亚洲国产精品视频 | 婷婷在线五月 | 国产一卡久久电影永久 | 亚洲最快最全在线视频 | 成人 亚洲 欧美 | 亚洲日本中文字幕在线观看 | 成人影片在线免费观看 | 操操操综合 | 国产精品久久久久一区二区国产 | 激情五月色播五月 | av福利在线看 | 在线久草视频 | 色吊丝在线永久观看最新版本 | 色综合咪咪久久网 | 五月天综合网站 | 九九视频在线播放 | 欧美孕妇与黑人孕交 | 国产精品二区在线 | 91精品国产乱码在线观看 | 日韩国产在线观看 | 婷婷婷国产在线视频 | 一区中文字幕 | 亚洲国产中文字幕在线观看 | 综合色站 | 天天爽夜夜爽精品视频婷婷 | 97香蕉超级碰碰久久免费软件 | 人人狠狠综合久久亚洲婷 | 久久精品99国产精品日本 | 欧美男男tv网站 | www国产亚洲精品久久麻豆 | 99视频在线观看视频 | 久久精品免费电影 | 日韩成人黄色av | 亚洲欧美日韩在线一区二区 | 日韩精品视频在线观看网址 | 992tv人人网tv亚洲精品 | 激情五月婷婷网 | 欧美日韩一区三区 | 在线看污网站 | 日韩av电影中文字幕在线观看 | 免费看黄在线 | 999在线精品 | 国产一级二级在线播放 | h动漫中文字幕 | 国产剧情av在线播放 | 亚洲成av人电影 | 欧美大片在线看免费观看 | 日韩三级久久 | 日本少妇高清做爰视频 | 久久av一区二区三区亚洲 | 日韩欧美精品一区二区三区经典 | 91毛片在线| 久久综合色8888 | 亚洲视频一级 | 超碰在线免费97 | 九色免费视频 | 色在线网站 | 国产成人精品综合久久久久99 | av看片网| 国产精品九九久久久久久久 | 丁香五月缴情综合网 | 天堂网一区二区 | 激情文学综合丁香 | 亚洲精品18日本一区app | 丁香影院在线 | 91久久国产露脸精品国产闺蜜 | 亚洲一区二区三区91 | 国内精品福利视频 | 中文字幕 国产专区 | free,性欧美 九九交易行官网 | 亚洲成a人片77777kkkk1在线观看 | 久久伊人精品天天 | 亚洲精品在线视频播放 | 中文字幕一区二区在线观看 | 国产白浆在线观看 | 激情网在线视频 | 精品久久久久国产 | 国产精品一区二区在线观看免费 | 国产最顶级的黄色片在线免费观看 | 成人av免费在线播放 | 日韩精品91偷拍在线观看 | 色搞搞 | 激情五月婷婷综合 | 日韩无在线 | 91电影福利| 色婷婷综合久久久久中文字幕1 | 91麻豆精品国产自产在线游戏 | 国产精品自产拍在线观看 | 中文字幕在线观看第一区 | 亚洲成人动漫在线观看 | 国产福利在线 | 日韩av在线影视 | 久久国产视频网站 | 午夜国产一区二区三区四区 | 免费美女av| 日韩婷婷 | 免费a级毛片在线看 | 黄色av一区二区三区 | 久久黄色网页 | 成人av在线直播 | 13日本xxxxxⅹxxx20 | 欧美日韩国产二区 | 久要激情网| 亚洲精品美女久久17c | 天天操 夜夜操 | 亚洲丁香久久久 | 欧美整片sss | 综合色婷婷 | 久久福利精品 | 精品视频亚洲 | 欧美精品在线观看一区 | 国内精品视频在线播放 | 91激情在线视频 | 91免费高清 | 国产九九九视频 | 免费h精品视频在线播放 | 在线观看一区视频 | 久久精品3 | 亚洲精品乱码久久久久久蜜桃欧美 | 久草在线免费在线观看 | www.狠狠操 |