3atv精品不卡视频,97人人超碰国产精品最新,中文字幕av一区二区三区人妻少妇,久久久精品波多野结衣,日韩一区二区三区精品

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

nodeJS — 学习的笔记

發布時間:2023/12/13 javascript 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 nodeJS — 学习的笔记 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Node介紹

為什么要學習Node.js

  • 企業需求
    • 具有服務端開發經驗更改
    • front-end
    • back-end
    • 全棧開發工程師
    • 基本的網站開發能力
      • 服務端
      • 前端
      • 運維部署
    • 多人社區

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-MVqHkEIo-1588084625862)(C:\Users\A\AppData\Roaming\Typora\typora-user-images\image-20200317114503403.png)]

Node.js是什么

  • Node.js是JavaScript 運行時
  • 通俗易懂的講,Node.js是JavaScript的運行平臺
  • Node.js既不是語言,也不是框架,它是一個平臺
  • 瀏覽器中的JavaScript
    • EcmaScript
      • 基本語法
      • if
      • var
      • function
      • Object
      • Array
    • Bom
    • Dom
  • Node.js中的JavaScript
    • 沒有Bom,Dom
    • EcmaScript
    • 在Node中這個JavaScript執行環境為JavaScript提供了一些服務器級別的API
      • 例如文件的讀寫
      • 網絡服務的構建
      • 網絡通信
      • http服務器
  • 構建與Chrome的V8引擎之上
    • 代碼只是具有特定格式的字符串
    • 引擎可以認識它,幫你解析和執行
    • Google Chrome的V8引擎是目前公認的解析執行JavaScript代碼最快的
    • Node.js的作者把Google Chrome中的V8引擎移植出來,開發了一個獨立的JavaScript運行時環境
  • Node.js uses an envent-driven,non-blocking I/O mode that makes it lightweight and efficent.
    • envent-driven 事件驅動
    • non-blocking I/O mode 非阻塞I/O模型(異步)
    • ightweight and efficent. 輕量和高效
  • Node.js package ecosystem,npm,is the larget scosystem of open sourcr libraries in the world
    • npm 是世界上最大的開源生態系統
    • 絕大多數JavaScript相關的包都存放在npm上,這樣做的目的是為了讓開發人員更方便的去下載使用
    • npm install jquery

Node能做什么

  • web服務器后臺
  • 命令行工具
    • npm(node)
    • git(c語言)
    • hexo(node)
  • 對于前端工程師來講,接觸最多的是它的命令行工具
    • 自己寫的很少,主要是用別人第三方的
    • webpack
    • gulp
    • npm

起步

安裝Node環境

  • 查看Node環境的版本號
  • 下載:https://nodejs.org/en/
  • 安裝:
    • 傻瓜式安裝,一路next
    • 安裝過再次安裝會升級
  • 確認Node環境是否安裝成功
    • 查看node的版本號:node --version
    • 或者node -v
  • 配置環境變量

解析執行JavaScript

  • 創建編寫JavaScript腳本文件
  • 打開終端,定位腳本文件的所屬目錄
  • 輸入node 文件名執行對應的文件
  • 注意:文件名不要用node.js來命名,也就是說除了node這個名字隨便起,最好不要使用中文。

    文件的讀寫

    文件讀取:

    //瀏覽器中的JavaScript是沒有文件操作能力的 //但是Node中的JavaScript具有文件操作能力 //fs是file-system的簡寫,就是文件系統的意思 //在Node中如果想要進行文件的操作就必須引用fs這個核心模塊 //在fs這個和興模塊中,就提供了人所有文件操作相關的API //例如 fs.readFile就是用來讀取文件的// 1.使用fs核心模塊 var fs = require('fs');// 2.讀取文件 fs.readFile('./data/a.txt',function(err,data){if(err){console.log('文件讀取失敗');}else{console.log(data.toString());} })

    文件寫入:

    // 1.使用fs核心模塊 var fs = require('fs');// 2.將數據寫入文件 fs.writeFile('./data/a.txt','我是文件寫入的信息',function(err,data){if(err){console.log('文件寫入失敗');}else{console.log(data.toString());} })

    http

    服務器:

    // 1.加載http核心模塊 var http = require('http');// 2.使用http.createServer()創建一個web服務器 var server = http.createServer();// 3.服務器要做的事兒 // 提供服務:對數據服務 // 發請求 // 接收請求 // 處理請求 // 反饋(發送響應) // 當客戶端請求過來,就會自動觸發服務器的request請求事件,然后執行第二個參數:回調處理函數 server.on('request',function(){console.log('收到客戶的請求了') })// 4.綁定端口號,啟動服務 server.listen(3000,function(){console.log('runing...') })

    Node中的模塊系統

    使用Node編寫應用程序主要就是在使用:

    • EcmaScript語言

      • 和瀏覽器一樣,在Node中沒有Bom和Dom
    • 核心模塊

      • 文件操作的fs
      • http服務操作的http
      • url路徑操作模塊
      • path路徑處理模塊
      • os操作系統信息
    • 第三方模塊

      • art-template
      • 必須通過npm來下載才可以使用
    • 自己寫的模塊

      • 自己創建的文件

    什么是模塊化

    • 文件作用域(模塊是獨立的,在不同的文件使用必須要重新引用)【在node中沒有全局作用域,它是文件模塊作用域】
    • 通信規則
      • 加載require
      • 導出exports

    CommonJS模塊規范

    在Node中的JavaScript還有一個重要的概念,模塊系統。

    • 模塊作用域

    • 使用require方法來加載模塊

    • 使用exports接口對象來導出模板中的成員

      加載require

      語法:

      var 自定義變量名 = require('模塊')

      作用:

      • 執行被加載模塊中的代碼
      • 得到被加載模塊中的exports導出接口對象

      導出exports

      • Node中是模塊作用域,默認文件中所有的成員只在當前模塊有效

      • 對于希望可以被其他模塊訪問到的成員,我們需要把這些公開的成員都掛載到exports接口對象中就可以了

        導出多個成員(必須在對象中):

        exports.a = 123; exports.b = function(){console.log('bbb') }; exports.c = {foo:"bar" }; exports.d = 'hello';

        導出單個成員(拿到的就是函數,字符串):

        module.exports = 'hello';

        以下情況會覆蓋:

        module.exports = 'hello'; //后者會覆蓋前者 module.exports = function add(x,y) {return x+y; }

        也可以通過以下方法來導出多個成員:

        module.exports = {foo = 'hello',add:function(){return x+y;} };

    模塊原理

    exports和module.exports的一個引用:

    console.log(exports === module.exports); //trueexports.foo = 'bar';//等價于 module.exports.foo = 'bar';

    當給exports重新賦值后,exports!= module.exports.

    最終return的是module.exports,無論exports中的成員是什么都沒用。

    真正去使用的時候:導出單個成員:exports.xxx = xxx;導出多個成員:module.exports 或者 modeule.exports = {};

    總結

    // 引用服務 var http = require('http'); var fs = require('fs'); // 引用模板 var template = require('art-template'); // 創建服務 var server = http.createServer(); // 公共路徑 var wwwDir = 'D:/app/www'; server.on('request', function (req, res) {var url = req.url;// 讀取文件fs.readFile('./template-apche.html', function (err, data) {if (err) {return res.end('404 Not Found');}fs.readdir(wwwDir, function (err, files) {if (err) {return res.end('Can not find www Dir.')}// 使用模板引擎解析替換data中的模板字符串// 去xmpTempleteList.html中編寫模板語法var htmlStr = template.render(data.toString(), { title: 'D:/app/www/ 的索引',files:files });// 發送響應數據res.end(htmlStr);})}) }); server.listen(3000, function () {console.log('running....'); }) 1.jQuery中的each 和 原生JavaScript方法forEach的區別:提供源頭:原生js是es5提供的(不兼容IE8,jQuery的each是jQuery第三方庫提供的(如果要使用需要用2以下的版本也就是1.版本),它的each方法主要用來遍歷jQuery實例對象(偽數組),同時也可以做低版本forEach的替代品,jQuery的實例對象不能使用forEach方法,如果想要使用必須轉為數組([].slice.call(jQuery實例對象))才能使用 2.模塊中導出多個成員和導出單個成員 3.301302的區別:301永久重定向,瀏覽器會記住302臨時重定向 4.exports和module.exports的區別:每個模塊中都有一個module對象module對象中有一個exports對象我們可以把需要導出的成員都掛載到module.exports接口對象中也就是`module.exports.xxx = xxx`的方式但是每次寫太多了就很麻煩,所以Node為了簡化代碼,就在每一個模塊中都提供了一個成員叫`exports``exports === module.exports`結果為true,所以完全可以`exports.xxx = xxx`當一個模塊需要導出單個成員的時候必須使用`module.exports = xxx`的方式,=,使用`exports = xxx`不管用,因為每個模塊最終return的是module.exports,而exports只是module.exports的一個引用,所以`exports`即使重新賦值,也不會影響`module.exports`。有一種賦值方式比較特殊:`exports = module.exports`這個用來新建立引用關系的。

    require的加載規則

    • 核心模塊

      • 模塊名
    • 第三方模塊

      • 模塊名
    • 用戶自己寫的

      • 路徑

    require的加載規則:

    • 優先從緩存加載

    • 判斷模塊標識符

      • 核心模塊
      • 自己寫的模塊(路徑形式的模塊)
      • 第三方模塊(node_modules)
        • 第三方模塊的標識就是第三方模塊的名稱(不可能有第三方模塊和核心模塊的名字一致)
        • npm
          • 開發人員可以把寫好的框架庫發布到npm上
          • 使用者通過npm命令來下載
        • 使用方式:var 名稱 = require('npm install【下載包】 的包名')
          • node_modules/express/package.json main
          • 如果package.json或者main不成立,則查找被選擇項:index.js
          • 如果以上條件都不滿足,則繼續進入上一級目錄中的node_modules按照上面的規則依次查找,直到當前文件所屬此盤根目錄都找不到最后報錯
    // 如果非路徑形式的標識 // 路徑形式的標識:// ./ 當前目錄 不可省略// ../ 上一級目錄 不可省略// /xxx也就是D:/xxx// 帶有絕對路徑幾乎不用(D:/a/foo.js) // 首位表示的是當前文件模塊所屬磁盤根目錄 // require('./a'); // 核心模塊 // 核心模塊本質也是文件,核心模塊文件已經被編譯到了二進制文件中了,我們只需要按照名字來加載就可以了 require('fs'); // 第三方模塊 // 凡是第三方模塊都必須通過npm下載(npm i node_modules),使用的時候就可以通過require('包名')來加載才可以使用 // 第三方包的名字不可能和核心模塊的名字是一樣的 // 既不是核心模塊,也不是路徑形式的模塊 // 先找到當前文所述目錄的node_modules // 然后找node_modules/art-template目錄 // node_modules/art-template/package.json // node_modules/art-template/package.json中的main屬性 // main屬性記錄了art-template的入口模塊 // 然后加載使用這個第三方包 // 實際上最終加載的還是文件// 如果package.json不存在或者mian指定的入口模塊不存在 // 則node會自動找該目錄下的index.js // 也就是說index.js是一個備選項,如果main沒有指定,則加載index.js文件 // // 如果條件都不滿足則會進入上一級目錄進行查找 // 注意:一個項目只有一個node_modules,放在項目根目錄中,子目錄可以直接調用根目錄的文件 var template = require('art-template');

    模塊標識符中的/和文件操作路徑中的/

    文件操作路徑:

    // 咱們所使用的所有文件操作的API都是異步的 // 就像ajax請求一樣 // 讀取文件 // 文件操作中 ./ 相當于當前模塊所處磁盤根目錄 // ./index.txt 相對于當前目錄 // /index.txt 相對于當前目錄 // /index.txt 絕對路徑,當前文件模塊所處根目錄 // d:express/index.txt 絕對路徑 fs.readFile('./index.txt',function(err,data){if(err){return console.log('讀取失敗');}console.log(data.toString()); })

    模塊操作路徑:

    // 在模塊加載中,相對路徑中的./不能省略 // 這里省略了.也是磁盤根目錄 require('./index')('hello')

    npm

    • node package manage(node包管理器)
    • 通過npm命令安裝jQuery包(npm install --save jquery),在安裝時加上–save會主動生成說明書文件信息(將安裝文件的信息添加到package.json里面)

    npm網站

    ? npmjs.com 網站 是用來搜索npm包的

    npm命令行工具

    npm是一個命令行工具,只要安裝了node就已經安裝了npm。

    npm也有版本概念,可以通過npm --version來查看npm的版本

    升級npm(自己升級自己):

    npm install --global npm

    常用命令

    • npm init(生成package.json說明書文件)
      • npm init -y(可以跳過向導,快速生成)
    • npm install
      • 一次性把dependencies選項中的依賴項全部安裝
      • 簡寫(npm i)
    • npm install 包名
      • 只下載
      • 簡寫(npm i 包名)
    • npm install --save 包名
      • 下載并且保存依賴項(package.json文件中的dependencies選項)
      • 簡寫(npm i 包名)
    • npm uninstall 包名
      • 只刪除,如果有依賴項會依然保存
      • 簡寫(npm un 包名)
    • npm uninstall --save 包名
      • 刪除的同時也會把依賴信息全部刪除
      • 簡寫(npm un 包名)
    • npm help
      • 查看使用幫助
    • npm 命令 --help
      • 查看具體命令的使用幫助(npm uninstall --help)

    解決npm被墻問題

    npm存儲包文件的服務器在國外,有時候會被墻,速度很慢,所以需要解決這個問題。

    https://developer.aliyun.com/mirror/NPM?from=tnpm淘寶的開發團隊把npm在國內做了一個鏡像(也就是一個備份)。

    安裝淘寶的cnpm:

    npm install -g cnpm --registry=https://registry.npm.taobao.org; #在任意目錄執行都可以 #--global表示安裝到全局,而非當前目錄 #--global不能省略,否則不管用 npm install --global cnpm

    安裝包的時候把以前的npm替換成cnpm。

    #走國外的npm服務器下載jQuery包,速度比較慢 npm install jQuery;#使用cnpm就會通過淘寶的服務器來下載jQuery cnpm install jQuery;

    如果不想安裝cnpm又想使用淘寶的服務器來下載:

    npm install jquery --registry=https://npm.taobao.org;

    但是每次手動加參數就很麻煩,所以我們可以把這個選項加入到配置文件中:

    npm config set registry https://npm.taobao.org;#查看npm配置信息 npm config list;

    只要經過上面的配置命令,則以后所有的npm install都會通過淘寶的服務器來下載

    package.json

    每一個項目都要有一個package.json文件(包描述文件,就像產品的說明書一樣)

    這個文件可以通過npm init自動初始化出來

    D:\code\node中的模塊系統>npm init This utility will walk you through creating a package.json file. It only covers the most common items, and tries to guess sensible defaults.See `npm help json` for definitive documentation on these fields and exactly what they do.Use `npm install <pkg>` afterwards to install a package and save it as a dependency in the package.json file.Press ^C at any time to quit. package name: (node中的模塊系統) Sorry, name can only contain URL-friendly characters. package name: (node中的模塊系統) cls version: (1.0.0) description: 這是一個測試項目 entry point: (main.js) test command: git repository: keywords: author: xiaochen license: (ISC) About to write to D:\code\node中的模塊系統\package.json:{"name": "cls","version": "1.0.0","description": "這是一個測試項目","main": "main.js","scripts": {"test": "echo \"Error: no test specified\" && exit 1"},"author": "xiaochen","license": "ISC" }Is this OK? (yes) yes

    對于目前來講,最有用的是dependencies選項,可以用來幫助我們保存第三方包的依賴信息。

    如果node_modules刪除了也不用擔心,只需要在控制面板中npm install就會自動把package.json中的dependencies中所有的依賴項全部都下載回來。

    • 建議每個項目的根目錄下都有一個package.json文件
    • 建議執行npm install 包名的時候都加上--save選項,目的是用來保存依賴信息

    package.json和package-lock.json

    npm 5以前是不會有package-lock.json這個文件

    npm5以后才加入這個文件

    當你安裝包的時候,npm都會生成或者更新package-lock.json這個文件

    • npm5以后的版本安裝都不要加--save參數,它會自動保存依賴信息
    • 當你安裝包的時候,會自動創建或者更新package-lock.json文件
    • package-lock.json這個文件會包含node_modules中所有包的信息(版本,下載地址。。。)
      • 這樣的話重新npm install的時候速度就可以提升
    • 從文件來看,有一個lock稱之為鎖
      • 這個lock使用來鎖版本的
      • 如果項目依賴了1.1.1版本
      • 如果你重新install其實會下載最細版本,而不是1.1.1
      • package-lock.json的另外一個作用就是鎖定版本號,防止自動升級

    path路徑操作模塊

    參考文檔:https://nodejs.org/docs/latest-v13.x/api/path.html

    • path.basename:獲取路徑的文件名,默認包含擴展名
    • path.dirname:獲取路徑中的目錄部分
    • path.extname:獲取一個路徑中的擴展名部分
    • path.parse:把路徑轉換為對象
      • root:根路徑
      • dir:目錄
      • base:包含后綴名的文件名
      • ext:后綴名
      • name:不包含后綴名的文件名
    • path.join:拼接路徑
    • path.isAbsolute:判斷一個路徑是否為絕對路徑[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-IKjJLR5v-1588084625866)(C:\Users\A\AppData\Roaming\Typora\typora-user-images\image-20200315150610001.png)]

    Node中的其它成員(__dirname,__filename)

    在每個模塊中,除了require,exports等模塊相關的API之外,還有兩個特殊的成員:

    • __dirname,是一個成員,可以用來動態獲取當前文件模塊所屬目錄的絕對路徑

    • __filename,可以用來動態獲取當前文件的絕對路徑(包含文件名)

    • __dirname和filename是不受執行node命令所屬路徑影響的

      [外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-UdLy7Ykz-1588084625867)(C:\Users\A\AppData\Roaming\Typora\typora-user-images\image-20200315151551873.png)]

    在文件操作中,使用相對路徑是不可靠的,因為node中文件操作的路徑被設計為相對于執行node命令所處的路徑。

    所以為了解決這個問題,只需要把相對路徑變為絕對路徑(絕對路徑不受任何影響)就可以了。

    就可以使用__dirname或者__filename來幫助我們解決這個問題

    在拼接路徑的過程中,為了避免手動拼接帶來的一些低級錯誤,推薦使用path.join()來輔助拼接

    var fs = require('fs'); var path = require('path');// console.log(__dirname + 'a.txt'); // path.join方法會將文件操作中的相對路徑都統一的轉為動態的絕對路徑 fs.readFile(path.join(__dirname + '/a.txt'),'utf8',function(err,data){if(err){throw err}console.log(data); });

    補充:模塊中的路徑標識和這里的路徑沒關系,不受影響(就是相對于文件模塊)

    注意:

    模塊中的路徑標識和文件操作中的相對路徑標識不一致

    模塊中的路徑標識就是相對于當前文件模塊,不受node命令所處路徑影響

    Express(快速的)

    作者:Tj

    原生的http在某些方面表現不足以應對我們的開發需求,所以就需要使用框架來加快我們的開發效率,框架的目的就是提高效率,讓我們的代碼高度統一。

    在node中有很多web開發框架。主要學習express

    • http://expressjs.com/,其中主要封裝的是http。

    • // 1 安裝 // 2 引包 var express = require('express'); // 3 創建服務器應用程序 // 也就是原來的http.createServer(); var app = express();// 公開指定目錄 // 只要通過這樣做了,就可以通過/public/xx的方式來訪問public目錄中的所有資源 // 在Express中開放資源就是一個API的事 app.use('/public/',express.static('/public/'));//模板引擎在Express中開放模板也是一個API的事// 當服務器收到get請求 / 的時候,執行回調處理函數 app.get('/',function(req,res){res.send('hello express'); })// 相當于server.listen app.listen(3000,function(){console.log('app is runing at port 3000'); })

    學習Express

    起步

    安裝:[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-pHrwvRUP-1588084625869)(C:\Users\A\AppData\Roaming\Typora\typora-user-images\image-20200310123723079.png)]
    cnpm install express
    hello world:[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-IK7VyfEG-1588084625870)(C:\Users\A\AppData\Roaming\Typora\typora-user-images\image-20200310124850557.png)]
    // 引入express var express = require('express');// 1. 創建app var app = express();// 2. app.get('/',function(req,res){// 1// res.write('Hello');// res.write('World');// res.end()// 2// res.end('hello world');// 3res.send('hello world'); })app.listen(3000,function(){console.log('express app is runing...'); })
    基本路由

    路由:

    • 請求方法

    • 請求路徑

    • 請求處理函數

    get:

    //當你以get方法請求/的時候,執行對應的處理函數 app.get('/',function(req,res){res.send('hello world'); })

    post:

    //當你以post方法請求/的時候,執行對應的處理函數 app.post('/',function(req,res){res.send('hello world'); })
    Express靜態服務API
    // app.use不僅僅是用來處理靜態資源的,還可以做很多工作(body-parser的配置) app.use(express.static('public'));app.use(express.static('files'));app.use('/stataic',express.static('public')); // 引入express var express = require('express');// 創建app var app = express();// 開放靜態資源 // 1.當以/public/開頭的時候,去./public/目錄中找對應資源 // 訪問:http://127.0.0.1:3000/public/login.html app.use('/public/',express.static('./public/')); // 2.當省略第一個參數的時候,可以通過省略/public的方式來訪問 // 訪問:http://127.0.0.1:3000/login.html // app.use(express.static('./public/')); // 3.訪問:http://127.0.0.1:3000/a/login.html // a相當于public的別名 // app.use('/a/',express.static('./public/')); // app.get('/',function(req,res){res.end('hello world'); });app.listen(3000,function(){console.log('express app is runing...'); });
    在Express中配置使用art-templete模板引擎
    • art-template官方文檔
    • 在node中,有很多第三方模板引擎都可以使用,不是只有art-template
      • 還有ejs,jade(pug),handlebars,nunjucks

    安裝:

    npm install --save art-template npm install --save express-art-template//兩個一起安裝 npm i --save art-template express-art-template

    配置:

    app.engine('html', require('express-art-template'));

    使用:

    app.get('/',function(req,res){// express默認會去views目錄找index.htmlres.render('index.html',{title:'hello world' }); })

    如果希望修改默認的views視圖渲染存儲目錄,可以:

    // 第一個參數views千萬不要寫錯 app.set('views',目錄路徑);
    在Express中獲取表單請求數據
    獲取get請求數據:

    Express內置了一個api,可以直接通過req.query來獲取數據

    // 通過requery方法獲取用戶輸入的數據 // req.query只能拿到get請求的數據var comment = req.query;
    獲取post請求數據:

    在Express中沒有內置獲取表單post請求體的api,這里我們需要使用一個第三方包body-parser來獲取數據。

    安裝:

    npm install --save body-parser;

    配置:

    // 配置解析表單 POST 請求體插件(注意:一定要在 app.use(router) 之前 )

    var express = require('express') // 引包 var bodyParser = require('body-parser')var app = express()// 配置body-parser // 只要加入這個配置,則在req請求對象上會多出來一個屬性:body // 也就是說可以直接通過req.body來獲取表單post請求數據 // parse application/x-www-form-urlencoded app.use(bodyParser.urlencoded({ extended: false }))// parse application/json app.use(bodyParser.json())

    使用:

    app.use(function (req, res) {res.setHeader('Content-Type', 'text/plain')res.write('you posted:\n')// 可以通過req.body來獲取表單請求數據res.end(JSON.stringify(req.body, null, 2)) })

    在Express中配置使用express-session插件操作

    參考文檔:https://github.com/expressjs/session

    安裝:

    npm install express-session

    配置:

    //該插件會為req請求對象添加一個成員:req.session默認是一個對象 //這是最簡單的配置方式 //Session是基于Cookie實現的 app.use(session({//配置加密字符串,他會在原有的基礎上和字符串拼接起來去加密//目的是為了增加安全性,防止客戶端惡意偽造secret: 'keyboard cat',resave: false,saveUninitialized: true,//無論是否適用Session,都默認直接分配一把鑰匙cookie: { secure: true } }))

    使用:

    // 讀 //添加Session數據 //session就是一個對象 req.session.foo = 'bar';//寫 //獲取session數據 req.session.foo//刪 req.session.foo = null; delete req.session.foo

    提示:

    默認Session數據時內存儲數據,服務器一旦重啟,真正的生產環境會把Session進行持久化存儲。

    利用Express實現ADUS項目

    模塊化思想

    模塊如何劃分:

    • 模塊職責要單一

    javascript模塊化:

    • Node 中的 CommonJS
    • 瀏覽器中的:
      • AMD require.js
      • CMD sea.js
    • es6中增加了官方支持

    起步

    • 初始化
    • 模板處理

    路由設計

    請求方法請求路徑get參數post參數備注
    GET/students渲染首頁
    GET/students/new渲染添加學生頁面
    POST/students/newname,age,gender,hobbies處理添加學生請求
    GET/students/editid渲染編輯頁面
    POST/students/editid,name,age,gender,hobbies處理編輯請求
    GET/students/deleteid處理刪除請求

    提取路由模塊

    router.js:

    /*** router.js路由模塊* 職責:* 處理路由* 根據不同的請求方法+請求路徑設置具體的請求函數* 模塊職責要單一,我們劃分模塊的目的就是增強代碼的可維護性,提升開發效率*/ var fs = require('fs');// Express專門提供了一種更好的方式 // 專門用來提供路由的 var express = require('express'); // 1 創建一個路由容器 var router = express.Router(); // 2 把路由都掛載到路由容器中router.get('/students', function(req, res) {// res.send('hello world');// readFile的第二個參數是可選的,傳入utf8就是告訴他把讀取到的文件直接按照utf8編碼,直接轉成我們認識的字符// 除了這樣來轉換,也可以通過data.toString()來轉換fs.readFile('./db.json', 'utf8', function(err, data) {if (err) {return res.status(500).send('Server error.')}// 讀取到的文件數據是string類型的數據// console.log(data);// 從文件中讀取到的數據一定是字符串,所以一定要手動轉換成對象var students = JSON.parse(data).students;res.render('index.html', {// 讀取文件數據students:students})}) });router.get('/students/new',function(req,res){res.render('new.html') });router.get('/students/edit',function(req,res){});router.post('/students/edit',function(req,res){});router.get('/students/delete',function(req,res){});// 3 把router導出 module.exports = router;

    app.js:

    var router = require('./router');// router(app); // 把路由容器掛載到app服務中 // 掛載路由 app.use(router);

    設計操作數據的API文件模塊

    es6中的find和findIndex:

    find接受一個方法作為參數,方法內部返回一個條件

    find會便利所有的元素,執行你給定的帶有條件返回值的函數

    符合該條件的元素會作為find方法的返回值

    如果遍歷結束還沒有符合該條件的元素,則返回undefined[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-hRBBCT0b-1588084625871)(C:\Users\A\AppData\Roaming\Typora\typora-user-images\image-20200313103810731.png)]

    /*** student.js* 數據操作文件模塊* 職責:操作文件中的數據,只處理數據,不關心業務*/ var fs = require('fs');/*** 獲取所有學生列表* return []*/ exports.find = function(){}/*** 獲取添加保存學生*/ exports.save = function(){}/*** 更新學生*/ exports.update = function(){}/*** 刪除學生*/ exports.delete = function(){}

    步驟

    • 處理模板

    • 配置靜態開放資源

    • 配置模板引擎

    • 簡單的路由,/studens渲染靜態頁出來

    • 路由設計

    • 提取路由模塊

    • 由于接下來的一系列業務操作都需要處理文件數據,所以我們需要封裝Student.js’

    • 先寫好student.js文件結構

      • 查詢所有學生列別哦的API
      • findById
      • save
      • updateById
      • deleteById
    • 實現具體功能

      • 通過路由收到請求
      • 接受請求中的參數(get,post)
        • req.query
        • req.body
      • 調用數據操作API處理數據
      • 根據操作結果給客戶端發送請求
    • 業務功能順序

      • 列表
      • 添加
      • 編輯
      • 刪除

    子模板和模板的繼承(模板引擎高級語法)【include,extend,block】

    注意:

    模板頁:

    <!DOCTYPE html> <html lang="zh"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta http-equiv="X-UA-Compatible" content="ie=edge"><title>模板頁</title><link rel="stylesheet" href="/node_modules/bootstrap/dist/css/bootstrap.css"/>{{ block 'head' }}{{ /block }} </head> <body><!-- 通過include導入公共部分 -->{{include './header.html'}}<!-- 留一個位置 讓別的內容去填充 -->{{ block 'content' }}<h1>默認內容</h1>{{ /block }}<!-- 通過include導入公共部分 -->{{include './footer.html'}}<!-- 公共樣式 --><script src="/node_modules/jquery/dist/jquery.js" ></script><script src="/node_modules/bootstrap/dist/js/bootstrap.js" ></script>{{ block 'script' }}{{ /block }} </body> </html>

    模板的繼承:

    ? header頁面:

    <div id=""><h1>公共的頭部</h1> </div>

    ? footer頁面:

    <div id=""><h1>公共的底部</h1> </div>

    模板頁的使用:

    <!-- 繼承(extend:延伸,擴展)模板也layout.html --> <!-- 把layout.html頁面的內容都拿進來作為index.html頁面的內容 --> {{extend './layout.html'}}<!-- 向模板頁面填充新的數據 --> <!-- 填充后就會替換掉layout頁面content中的數據 --> <!-- style樣式方面的內容 --> {{ block 'head' }}<style type="text/css">body{background-color: skyblue;}</style> {{ /block }} {{ block 'content' }}<div id=""><h1>Index頁面的內容</h1></div> {{ /block }} <!-- js部分的內容 --> {{ block 'script' }}<script type="text/javascript"></script> {{ /block }}

    最終的顯示效果:

    [外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-dQYV5StQ-1588084625872)(C:\Users\A\AppData\Roaming\Typora\typora-user-images\image-20200316134759517.png)]

    MongoDB

    關系型和非關系型數據庫

    關系型數據庫(表就是關系,或者說表與表之間存在關系)。

    • 所有的關系型數據庫都需要通過sql語言來操作
    • 所有的關系型數據庫在操作之前都需要設計表結構
    • 而且數據表還支持約束
      • 唯一的
      • 主鍵
      • 默認值
      • 非空

    非關系型數據庫

    • 非關系型數據庫非常的靈活
    • 有的關系型數據庫就是key-value對兒
    • 但MongDB是長得最像關系型數據庫的非關系型數據庫
      • 數據庫 -》 數據庫
      • 數據表 -》 集合(數組)
      • 表記錄 -》文檔對象

    一個數據庫中可以有多個數據庫,一個數據庫中可以有多個集合(數組),一個集合中可以有多個文檔(表記錄)

    {qq:{user:[{},{},{}...]} }
    • 也就是說你可以任意的往里面存數據,沒有結構性這么一說

    安裝

    • 下載

      • 下載地址:https://www.mongodb.com/download-center/community
    • 安裝

      npm i mongoose
    • 配置環境變量

    • 最后輸入mongod --version測試是否安裝成功

    啟動和關閉數據庫

    啟動:

    # mongodb 默認使用執行mongod 命令所處盼復根目錄下的/data/db作為自己的數據存儲目錄 # 所以在第一次執行該命令之前先自己手動新建一個 /data/db mongod

    如果想要修改默認的數據存儲目錄,可以:

    mongod --dbpath = 數據存儲目錄路徑

    停止:

    在開啟服務的控制臺,直接Ctrl+C; 或者直接關閉開啟服務的控制臺。

    [外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-raFJ7Bn2-1588084625873)(C:\Users\A\AppData\Roaming\Typora\typora-user-images\image-20200314101047100.png)]

    連接數據庫

    連接:

    # 該命令默認連接本機的 MongoDB 服務 mongo

    退出:

    # 在連接狀態輸入 exit 退出連接 exit

    [外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-wCuDhnvl-1588084625874)(C:\Users\A\AppData\Roaming\Typora\typora-user-images\image-20200314100821112.png)]

    基本命令

    • show dbs
      • 查看數據庫列表(數據庫中的所有數據庫)
    • db
      • 查看當前連接的數據庫
    • use 數據庫名稱
      • 切換到指定的數據庫,(如果沒有會新建)
    • show collections
      • 查看當前目錄下的所有數據表
    • db.表名.find()
      • 查看表中的詳細信息

    在Node中如何操作MongoDB數據庫

    使用官方的MongoDB包來操作

    ? http://mongodb.github.io/node-mongodb-native/

    使用第三方包mongoose來操作MongoDB數據庫

    ? 第三方包:mongoose基于MongoDB官方的mongodb包再一次做了封裝,名字叫mongoose,是WordPress項目團隊開發的。

    ? https://mongoosejs.com/

    [外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-veLUPN5X-1588084625874)(C:\Users\A\AppData\Roaming\Typora\typora-user-images\image-20200314105632745.png)]

    [外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-dNiyAUWv-1588084625875)(C:\Users\A\AppData\Roaming\Typora\typora-user-images\image-20200314105717993.png)]

    學習指南(步驟)

    官方學習文檔:https://mongoosejs.com/docs/index.html

    設計Scheme 發布Model (創建表)

    // 1.引包 // 注意:按照后才能require使用 var mongoose = require('mongoose');// 拿到schema圖表 var Schema = mongoose.Schema;// 2.連接數據庫 // 指定連接數據庫后不需要存在,當你插入第一條數據庫后會自動創建數據庫 mongoose.connect('mongodb://localhost/test');// 3.設計集合結構(表結構) // 用戶表 var userSchema = new Schema({username: { //姓名type: String,require: true //添加約束,保證數據的完整性,讓數據按規矩統一},password: {type: String,require: true},email: {type: String} });// 4.將文檔結構發布為模型 // mongoose.model方法就是用來將一個架構發布為 model // 第一個參數:傳入一個大寫名詞單數字符串用來表示你的數據庫的名稱 // mongoose 會自動將大寫名詞的字符串生成 小寫復數 的集合名稱 // 例如 這里會變成users集合名稱 // 第二個參數:架構 // 返回值:模型構造函數 var User = mongoose.model('User', userSchema);

    添加數據(增)

    // 5.通過模型構造函數對User中的數據進行操作 var user = new User({username: 'admin',password: '123456',email: 'xiaochen@qq.com' });user.save(function(err, ret) {if (err) {console.log('保存失敗');} else {console.log('保存成功');console.log(ret);} });

    刪除(刪)

    根據條件刪除所有:

    User.remove({username: 'xiaoxiao' }, function(err, ret) {if (err) {console.log('刪除失敗');} else {console.log('刪除成功');console.log(ret);} });

    根據條件刪除一個:

    Model.findOneAndRemove(conditions,[options],[callback]);

    根據id刪除一個:

    User.findByIdAndRemove(id,[options],[callback]);

    更新(改)

    更新所有:

    User.remove(conditions,doc,[options],[callback]);

    根據指定條件更新一個:

    User.FindOneAndUpdate([conditions],[update],[options],[callback]);

    根據id更新一個:

    // 更新 根據id來修改表數據 User.findByIdAndUpdate('5e6c5264fada77438c45dfcd', {username: 'junjun' }, function(err, ret) {if (err) {console.log('更新失敗');} else {console.log('更新成功');} });

    查詢(查)

    查詢所有:

    // 查詢所有 User.find(function(err,ret){if(err){console.log('查詢失敗');}else{console.log(ret);} });

    條件查詢所有:

    // 根據條件查詢 User.find({ username:'xiaoxiao' },function(err,ret){if(err){console.log('查詢失敗');}else{console.log(ret);} });

    條件查詢單個:

    // 按照條件查詢單個,查詢出來的數據是一個對象({}) // 沒有條件查詢使用findOne方法,查詢的是表中的第一條數據 User.findOne({username: 'xiaoxiao' }, function(err, ret) {if (err) {console.log('查詢失敗');} else {console.log(ret);} });

    使用Node操作MySQL數據庫

    文檔:https://www.npmjs.com/package/mysql

    安裝:

    npm install --save mysql // 引入mysql包 var mysql = require('mysql');// 創建連接 var connection = mysql.createConnection({host : 'localhost', //本機user : 'me', //賬號rootpassword : 'secret', //密碼12345database : 'my_db' //數據庫名 });// 連接數據庫 (打開冰箱門) connection.connect();//執行數據操作 (把大象放到冰箱) connection.query('SELECT * FROM `users` ', function (error, results, fields) {if (error) throw error;//拋出異常阻止代碼往下執行// 沒有異常打印輸出結果console.log('The solution is: ',results); });//關閉連接 (關閉冰箱門) connection.end();

    異步編程

    回調函數

    不成立的情況下:

    function add(x,y){console.log(1);setTimeout(function(){console.log(2);var ret = x + y;return ret;},1000);console.log(3);//到這里執行就結束了,不會i等到前面的定時器,所以直接返回了默認值 undefined }console.log(add(2,2)); // 結果是 1 3 undefined 4

    [外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-3e80U9mD-1588084625876)(C:\Users\A\AppData\Roaming\Typora\typora-user-images\image-20200313085008929.png)]

    使用回調函數解決:

    回調函數:通過一個函數,獲取函數內部的操作。(根據輸入得到輸出結果)

    var ret; function add(x,y,callback){// callback就是回調函數// var x = 10;// var y = 20;// var callback = function(ret){console.log(ret);}console.log(1);setTimeout(function(){var ret = x + y;callback(ret);},1000);console.log(3); } add(10,20,function(ret){console.log(ret); });

    注意:

    ? 凡是需要得到一個函數內部異步操作的結果(setTimeout,readFile,writeFile,ajax,readdir)

    ? 這種情況必須通過 回調函數 (異步API都會伴隨著一個回調函數)

    ajax:

    基于原生XMLHttpRequest封裝get方法:

    var oReq = new XMLHttpRequest(); // 當請求加載成功要調用指定的函數 oReq.onload = function(){console.log(oReq.responseText); } oReq.open("GET", "請求路徑",true); oReq.send(); function get(url,callback){var oReq = new XMLHttpRequest();// 當請求加載成功要調用指定的函數oReq.onload = function(){//console.log(oReq.responseText);callback(oReq.responseText);}oReq.open("GET", url,true);oReq.send(); } get('data.json',function(data){console.log(data); });

    Promise

    callback hell(回調地獄):

    [外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-y6mw0zAR-1588084625877)(C:\Users\A\AppData\Roaming\Typora\typora-user-images\image-20200314143410972.png)]

    文件的讀取無法判斷執行順序(文件的執行順序是依據文件的大小來決定的)(異步api無法保證文件的執行順序)

    var fs = require('fs');fs.readFile('./data/a.text','utf8',function(err,data){if(err){// 1 讀取失敗直接打印輸出讀取失敗return console.log('讀取失敗');// 2 拋出異常// 阻止程序的執行// 把錯誤信息打印到控制臺throw err;}console.log(data); });fs.readFile('./data/b.text','utf8',function(err,data){if(err){// 1 讀取失敗直接打印輸出讀取失敗return console.log('讀取失敗');// 2 拋出異常// 阻止程序的執行// 把錯誤信息打印到控制臺throw err;}console.log(data); });

    通過回調嵌套的方式來保證順序:

    var fs = require('fs');fs.readFile('./data/a.text','utf8',function(err,data){if(err){// 1 讀取失敗直接打印輸出讀取失敗return console.log('讀取失敗');// 2 拋出異常// 阻止程序的執行// 把錯誤信息打印到控制臺throw err;}console.log(data);fs.readFile('./data/b.text','utf8',function(err,data){if(err){// 1 讀取失敗直接打印輸出讀取失敗return console.log('讀取失敗');// 2 拋出異常// 阻止程序的執行// 把錯誤信息打印到控制臺throw err;}console.log(data);fs.readFile('./data/a.text','utf8',function(err,data){if(err){// 1 讀取失敗直接打印輸出讀取失敗return console.log('讀取失敗');// 2 拋出異常// 阻止程序的執行// 把錯誤信息打印到控制臺throw err;}console.log(data);});}); });

    [外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-Ifh2960o-1588084625878)(C:\Users\A\AppData\Roaming\Typora\typora-user-images\image-20200314144807008.png)]為了解決以上編碼方式帶來的問題(回調地獄嵌套),所以在EcmaScript6新增了一個API:Promise。[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-LTzI16Wv-1588084625878)(C:\Users\A\AppData\Roaming\Typora\typora-user-images\image-20200314150050839.png)]

    • Promise:承諾,保證
    • Promise本身不是異步的,但往往都是內部封裝一個異步任務

    基本語法:

    // 在EcmaScript 6中新增了一個API Promise // Promise 是一個構造函數var fs = require('fs'); // 1 創建Promise容器 resolve:解決 reject:失敗 var p1 = new Promise(function(resolve, reject) {fs.readFile('./a.text', 'utf8', function(err, data) {if (err) {// console.log(err);// 把容器的Pending狀態變為rejectedreject(err);} else {// console.log(data);// 把容器的Pending狀態變為resolveresolve(1234);}}); });// 當p1成功了,然后就(then)做指定的操作 // then方法接收的function就是容器中的resolve函數 p1.then(function(data) {console.log(data);}, function(err) {console.log('讀取文件失敗了', err);});

    [外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-7hbGolvd-1588084625879)(C:\Users\A\AppData\Roaming\Typora\typora-user-images\image-20200315100611620.png)]

    鏈式循環:[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-MDRWoCFR-1588084625880)(C:\Users\A\AppData\Roaming\Typora\typora-user-images\image-20200315125559136.png)]

    封裝Promise的readFile:

    var fs = require('fs');function pReadFile(filePath) {return new Promise(function(resolve, reject) {fs.readFile(filePath, 'utf8', function(err, data) {if (err) {reject(err);} else {resolve(data);}});}); }pReadFile('./a.txt').then(function(data) {console.log(data);return pReadFile('./b.txt');}).then(function(data) {console.log(data);return pReadFile('./a.txt');}).then(function(data) {console.log(data);})

    mongoose所有的API都支持Promise:

    // 查詢所有 User.find().then(function(data){console.log(data)})

    注冊:

    User.findOne({username:'admin'},function(user){if(user){console.log('用戶已存在')} else {new User({username:'aaa',password:'123',email:'fffff'}).save(function(){console.log('注冊成功');})} }) User.findOne({username:'admin' }).then(function(user){if(user){// 用戶已經存在不能注冊console.log('用戶已存在');}else{// 用戶不存在可以注冊return new User({username:'aaa',password:'123',email:'fffff'}).save();}}).then(funciton(ret){console.log('注冊成功');})

    Generator

    async函數

    其他

    修改完代碼自動重啟

    我們在這里可以使用一個第三方命名行工具:nodemon來幫助我們解決頻繁修改代碼重啟服務器的問題。

    nodemon是一個基于Node.js開發的一個第三方命令行工具,我們使用的時候需要獨立安裝:

    #在任意目錄執行該命令都可以 #也就是說,所有需要 --global安裝的包都可以在任意目錄執行 npm install --global nodemon npm install -g nodemon#如果安裝不成功的話,可以使用cnpm安裝 cnpm install -g nodemon

    安裝完畢之后使用:

    node app.js#使用nodemon nodemon app.js

    只要是通過nodemon啟動的服務,則他會監視你的文件變化,當文件發生變化的時候,會自動幫你重啟服務器。

    封裝異步API

    回調函數:獲取異步操作的結果

    function fn(callback){// var callback = funtion(data){ console.log(data); }setTimeout(function(){var data = 'hello';callback(data);},1000); } // 如果需要獲取一個函數中異步操作的結果,則必須通過回調函數的方式來獲取 fn(function(data){console.log(data); })

    數組的遍歷方法,都是對函數作為一種參數

    [外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-mZOYURpE-1588084625881)(C:\Users\A\AppData\Roaming\Typora\typora-user-images\image-20200314094620191.png)]

    EcmaScript 6

    參考文檔:https://es6.ruanyifeng.com/

    項目案例

    目錄結構

    . app.js 項目的入口文件 controllers models 存儲使用mongoose設計的數據模型 node_modules 第三方包 package.json 包描述文件 package-lock.json 第三方包版本鎖定文件(npm5之后才有) public 公共靜態資源 routes views 存儲視圖目錄

    模板頁

    • 子模板
    • 模板繼承

    路由設計

    路由方法get參數post參數是否需要登錄備注
    /get渲染首頁
    /register(登錄)get渲染注冊頁面
    /registerpostemail,nickname,password處理注冊請求
    /loginget渲染登陸界面
    /loginpostemail,password處理登錄請求
    /loginoutget處理退出請求

    模型設計

    功能實現

    步驟

    • 創建目錄結構
    • 整合靜態也-模板頁
      • include
      • block
      • extend
    • 設計用戶登陸,退出,注冊的路由
    • 用戶注冊
      • 先處理客戶端頁面的內容(表單控件的name,收集表單數據,發起請求)
      • 服務端
        • 獲取從客戶端收到的數據
        • 操作數據庫
          • 如果有錯,發送500告訴客戶端服務器錯了‘
          • 其他的根據業務發送不同的響應數據
    • 登錄
    • 退出

    Express中間件

    中間件的概念

    參考文檔:http://expressjs.com/en/guide/using-middleware.html

    [外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-WKGQLexX-1588084625882)(C:\Users\A\AppData\Roaming\Typora\typora-user-images\image-20200316202757617.png)]

    中間件:把很復雜的事情分割成單個,然后依次有條理的執行。就是一個中間處理環節,有輸入,有輸出。

    說的通俗易懂點兒,中間件就是一個(從請求到響應調用的方法)方法。

    把數據從請求到響應分步驟來處理,每一個步驟都是一個中間處理環節。

    var http = require('http'); var url = require('url');var cookie = require('./expressPtoject/cookie'); var query = require('./expressPtoject/query'); var postBody = require('./expressPtoject/post-body');var server = http.createServer(function(){// 解析請求地址中的get參數// var obj = url.parse(req.url,true);// req.query = obj.query;query(req,res); //中間件// 解析請求地址中的post參數req.body = {foo:'bar'} });if(req.url === 'xxx'){// 處理請求... }server.listen(3000,function(){console.log('3000 runing...'); });

    同一個請求對象所經過的中間件都是同一個請求對象和響應對象。

    var express = require('express'); var app = express(); app.get('/abc',function(req,res,next){// 同一個請求的req和res是一樣的,// 可以前面存儲下面調用console.log('/abc');// req.foo = 'bar';req.body = {name:'xiaoxiao',age:18}next(); }); app.get('/abc',function(req,res,next){// console.log(req.foo);console.log(req.body);console.log('/abc'); }); app.listen(3000, function() {console.log('app is running at port 3000.'); });

    [外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-qxpXgg9r-1588084625883)(C:\Users\A\AppData\Roaming\Typora\typora-user-images\image-20200317110520098.png)]

    中間件的分類:

    應用程序級別的中間件

    萬能匹配(不關心任何請求路徑和請求方法的中間件):

    app.use(function(req,res,next){console.log('Time',Date.now());next(); });

    關心請求路徑和請求方法的中間件:

    app.use('/a',function(req,res,next){console.log('Time',Date.now());next(); });

    路由級別的中間件

    嚴格匹配請求路徑和請求方法的中間件

    get:

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

    post:

    app.post('/a',function(req,res){res.send('post'); });

    put:

    app.put('/user',function(req,res){res.send('put'); });

    delete:

    app.delete('/delete',function(req,res){res.send('delete'); });

    var express = require('express'); var app = express();// 中間件:處理請求,本質就是個函數 // 在express中,對中間件有幾種分類// 1 不關心任何請求路徑和請求方法的中間件 // 也就是說任何請求都會進入這個中間件 // 中間件本身是一個方法,該方法接收三個參數 // Request 請求對象 // Response 響應對象 // next 下一個中間件 // // 全局匹配中間件 // app.use(function(req, res, next) { // console.log('1'); // // 當一個請求進入中間件后 // // 如果需要請求另外一個方法則需要使用next()方法 // next(); // // next是一個方法,用來調用下一個中間件 // // 注意:next()方法調用下一個方法的時候,也會匹配(不是調用緊挨著的哪一個) // }); // app.use(function(req, res, next) { // console.log('2'); // });// // 2 關心請求路徑的中間件 // // 以/xxx開頭的中間件 // app.use('/a',function(req, res, next) { // console.log(req.url); // });// 3 嚴格匹配請求方法和請求路徑的中間件 app.get('/',function(){console.log('/'); }); app.post('/a',function(){console.log('/a'); });app.listen(3000, function() {console.log('app is running at port 3000.'); });

    錯誤處理中間件

    app.use(function(err,req,res,next){console.error(err,stack);res.status(500).send('Something broke'); });

    配置使用404中間件:

    app.use(function(req,res){res.render('404.html'); });

    配置全局錯誤處理中間件:

    app.get('/a', function(req, res, next) {fs.readFile('.a/bc', funtion() {if (err) {// 當調用next()傳參后,則直接進入到全局錯誤處理中間件方法中// 當發生全局錯誤的時候,我們可以調用next傳遞錯誤對象// 然后被全局錯誤處理中間件匹配到并進行處理next(err);}}) }); //全局錯誤處理中間件 app.use(function(err,req,res,next){res.status(500).json({err_code:500,message:err.message}); });

    內置中間件

    • express.static(提供靜態文件)
      • http://expressjs.com/en/starter/static-files.html#serving-static-files-in-express

    第三方中間件

    參考文檔:http://expressjs.com/en/resources/middleware.html

    • body-parser
    • compression
    • cookie-parser
    • mogran
    • response-time
    • server-static
    • session

    p.get(’/’,function(req,res){
    res.send(‘get’);
    });

    post:```javascript app.post('/a',function(req,res){res.send('post'); });

    put:

    app.put('/user',function(req,res){res.send('put'); });

    delete:

    app.delete('/delete',function(req,res){res.send('delete'); });

    var express = require('express'); var app = express();// 中間件:處理請求,本質就是個函數 // 在express中,對中間件有幾種分類// 1 不關心任何請求路徑和請求方法的中間件 // 也就是說任何請求都會進入這個中間件 // 中間件本身是一個方法,該方法接收三個參數 // Request 請求對象 // Response 響應對象 // next 下一個中間件 // // 全局匹配中間件 // app.use(function(req, res, next) { // console.log('1'); // // 當一個請求進入中間件后 // // 如果需要請求另外一個方法則需要使用next()方法 // next(); // // next是一個方法,用來調用下一個中間件 // // 注意:next()方法調用下一個方法的時候,也會匹配(不是調用緊挨著的哪一個) // }); // app.use(function(req, res, next) { // console.log('2'); // });// // 2 關心請求路徑的中間件 // // 以/xxx開頭的中間件 // app.use('/a',function(req, res, next) { // console.log(req.url); // });// 3 嚴格匹配請求方法和請求路徑的中間件 app.get('/',function(){console.log('/'); }); app.post('/a',function(){console.log('/a'); });app.listen(3000, function() {console.log('app is running at port 3000.'); });

    錯誤處理中間件

    app.use(function(err,req,res,next){console.error(err,stack);res.status(500).send('Something broke'); });

    配置使用404中間件:

    app.use(function(req,res){res.render('404.html'); });

    配置全局錯誤處理中間件:

    app.get('/a', function(req, res, next) {fs.readFile('.a/bc', funtion() {if (err) {// 當調用next()傳參后,則直接進入到全局錯誤處理中間件方法中// 當發生全局錯誤的時候,我們可以調用next傳遞錯誤對象// 然后被全局錯誤處理中間件匹配到并進行處理next(err);}}) }); //全局錯誤處理中間件 app.use(function(err,req,res,next){res.status(500).json({err_code:500,message:err.message}); });

    內置中間件

    • express.static(提供靜態文件)
      • http://expressjs.com/en/starter/static-files.html#serving-static-files-in-express

    第三方中間件

    參考文檔:http://expressjs.com/en/resources/middleware.html

    • body-parser
    • compression
    • cookie-parser
    • mogran
    • response-time
    • server-static
    • session

    總結

    以上是生活随笔為你收集整理的nodeJS — 学习的笔记的全部內容,希望文章能夠幫你解決所遇到的問題。

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

    亚洲性无码av中文字幕 | 高清无码午夜福利视频 | 好屌草这里只有精品 | 亚洲精品一区二区三区大桥未久 | 国产性猛交╳xxx乱大交 国产精品久久久久久无码 欧洲欧美人成视频在线 | 无码人妻久久一区二区三区不卡 | 久久精品国产一区二区三区 | 久久久久国色av免费观看性色 | 真人与拘做受免费视频 | 狠狠噜狠狠狠狠丁香五月 | 久久午夜无码鲁丝片午夜精品 | 日日碰狠狠躁久久躁蜜桃 | 国产成人综合色在线观看网站 | 波多野结衣av一区二区全免费观看 | 精品久久久无码中文字幕 | 久久精品国产亚洲精品 | 鲁一鲁av2019在线 | 无码av免费一区二区三区试看 | 扒开双腿疯狂进出爽爽爽视频 | 国产国语老龄妇女a片 | 亚洲综合在线一区二区三区 | 成人动漫在线观看 | 蜜臀av无码人妻精品 | 国产成人无码区免费内射一片色欲 | 国色天香社区在线视频 | 国产亚洲人成在线播放 | 国产精品人人爽人人做我的可爱 | 奇米影视888欧美在线观看 | 久久久精品人妻久久影视 | 午夜免费福利小电影 | 一个人看的www免费视频在线观看 | 亚洲精品一区二区三区在线 | 中文字幕 人妻熟女 | 国产精品第一区揄拍无码 | 精品无码国产一区二区三区av | 日本精品少妇一区二区三区 | 99久久无码一区人妻 | 亚洲精品国产品国语在线观看 | 俺去俺来也在线www色官网 | 成人免费视频一区二区 | 国产午夜精品一区二区三区嫩草 | 日本一区二区三区免费播放 | 成人免费无码大片a毛片 | 久久精品中文字幕一区 | 黑人巨大精品欧美一区二区 | 亚洲日韩av一区二区三区中文 | av小次郎收藏 | 熟女少妇人妻中文字幕 | 国产av久久久久精东av | 中文字幕无码日韩专区 | 久久久久免费看成人影片 | 美女张开腿让人桶 | 青青草原综合久久大伊人精品 | 帮老师解开蕾丝奶罩吸乳网站 | 婷婷五月综合缴情在线视频 | 小泽玛莉亚一区二区视频在线 | 一二三四社区在线中文视频 | 成 人 网 站国产免费观看 | 日韩亚洲欧美中文高清在线 | 全黄性性激高免费视频 | 国产乱人伦av在线无码 | aⅴ在线视频男人的天堂 | 国产精品内射视频免费 | 久久久久久久久888 | 99精品无人区乱码1区2区3区 | 亚洲自偷自偷在线制服 | 精品 日韩 国产 欧美 视频 | 高潮毛片无遮挡高清免费 | 亚洲成色在线综合网站 | 免费观看黄网站 | 免费人成网站视频在线观看 | 九九综合va免费看 | 久久综合久久自在自线精品自 | 欧美人妻一区二区三区 | 伊人久久婷婷五月综合97色 | 久久99热只有频精品8 | 色欲av亚洲一区无码少妇 | 成熟妇人a片免费看网站 | 久久精品国产99精品亚洲 | 日韩无套无码精品 | 国产亚洲精品久久久久久国模美 | 撕开奶罩揉吮奶头视频 | 久久精品女人天堂av免费观看 | 成人三级无码视频在线观看 | 波多野结衣一区二区三区av免费 | 青青草原综合久久大伊人精品 | 丰满少妇高潮惨叫视频 | 亚洲国产精品久久久久久 | 欧美成人高清在线播放 | 国产亚洲精品精品国产亚洲综合 | 国产精品手机免费 | 久久97精品久久久久久久不卡 | ass日本丰满熟妇pics | 狂野欧美性猛xxxx乱大交 | 东京无码熟妇人妻av在线网址 | 小sao货水好多真紧h无码视频 | 精品一二三区久久aaa片 | 日欧一片内射va在线影院 | 乌克兰少妇xxxx做受 | 最新国产麻豆aⅴ精品无码 | 人人妻人人澡人人爽欧美一区 | 亚洲色偷偷男人的天堂 | 亚洲精品久久久久久一区二区 | 国内精品九九久久久精品 | 欧美性猛交内射兽交老熟妇 | 国产精品第一国产精品 | 国产麻豆精品一区二区三区v视界 | 欧美兽交xxxx×视频 | 亚洲精品一区二区三区在线 | 国产色xx群视频射精 | 99久久精品日本一区二区免费 | 午夜精品久久久久久久久 | 99久久精品午夜一区二区 | 亚洲成av人综合在线观看 | 精品人妻人人做人人爽 | 日本护士毛茸茸高潮 | 久久99热只有频精品8 | 国产国语老龄妇女a片 | 人妻aⅴ无码一区二区三区 | 久久国语露脸国产精品电影 | 欧美黑人性暴力猛交喷水 | 老太婆性杂交欧美肥老太 | 精品国产成人一区二区三区 | 午夜福利试看120秒体验区 | 色老头在线一区二区三区 | 一本久久a久久精品亚洲 | 国产精品毛多多水多 | 中文字幕无码免费久久9一区9 | 曰本女人与公拘交酡免费视频 | 在线亚洲高清揄拍自拍一品区 | 97夜夜澡人人爽人人喊中国片 | 夜夜躁日日躁狠狠久久av | 在教室伦流澡到高潮hnp视频 | 波多野结衣乳巨码无在线观看 | 国产xxx69麻豆国语对白 | 亚洲国产av美女网站 | 天天做天天爱天天爽综合网 | 国产成人无码av片在线观看不卡 | а天堂中文在线官网 | 精品国偷自产在线视频 | 日韩成人一区二区三区在线观看 | 亚洲成a人片在线观看无码 | 欧美xxxxx精品 | 扒开双腿疯狂进出爽爽爽视频 | 久久综合久久自在自线精品自 | 成人一区二区免费视频 | 国产精品沙发午睡系列 | 亚洲中文字幕在线无码一区二区 | 久久久久99精品国产片 | 亚洲日韩av片在线观看 | 67194成是人免费无码 | 天堂在线观看www | 精品少妇爆乳无码av无码专区 | 成人av无码一区二区三区 | 在线播放亚洲第一字幕 | 国产人妻精品一区二区三区不卡 | 粉嫩少妇内射浓精videos | 婷婷色婷婷开心五月四房播播 | 国产熟妇高潮叫床视频播放 | 亚洲乱码中文字幕在线 | 国产高清av在线播放 | 国产精品人人爽人人做我的可爱 | 荫蒂被男人添的好舒服爽免费视频 | 日本大香伊一区二区三区 | 最近免费中文字幕中文高清百度 | 亚洲啪av永久无码精品放毛片 | 欧美成人免费全部网站 | 人妻熟女一区 | 大乳丰满人妻中文字幕日本 | 中文字幕无码av激情不卡 | 精品国产一区av天美传媒 | 国内少妇偷人精品视频免费 | 无码av最新清无码专区吞精 | 无码av岛国片在线播放 | 国产精品免费大片 | 欧美怡红院免费全部视频 | 最近中文2019字幕第二页 | 全球成人中文在线 | 久久综合香蕉国产蜜臀av | 乱码av麻豆丝袜熟女系列 | 色 综合 欧美 亚洲 国产 | 久久久国产精品无码免费专区 | 欧美性生交活xxxxxdddd | 午夜精品久久久内射近拍高清 | 疯狂三人交性欧美 | 黑人巨大精品欧美一区二区 | 男女性色大片免费网站 | 国产两女互慰高潮视频在线观看 | 日本乱人伦片中文三区 | 欧美 日韩 亚洲 在线 | 亚洲熟妇色xxxxx欧美老妇 | 国内老熟妇对白xxxxhd | 久久久精品456亚洲影院 | 又湿又紧又大又爽a视频国产 | 欧美兽交xxxx×视频 | 国产亲子乱弄免费视频 | 国产亚洲精品精品国产亚洲综合 | 欧美日韩视频无码一区二区三 | 欧美丰满少妇xxxx性 | 丰满少妇高潮惨叫视频 | 少妇被粗大的猛进出69影院 | 国产成人精品视频ⅴa片软件竹菊 | 日韩人妻少妇一区二区三区 | 亚洲午夜无码久久 | 亚洲国产精品一区二区第一页 | 精品国产福利一区二区 | 国产精品亚洲lv粉色 | 性色欲情网站iwww九文堂 | 欧美性生交xxxxx久久久 | 国产精品无码永久免费888 | 国产激情精品一区二区三区 | 亚洲成av人影院在线观看 | 爽爽影院免费观看 | 亚洲精品一区二区三区在线观看 | 精品水蜜桃久久久久久久 | 日日摸夜夜摸狠狠摸婷婷 | 4hu四虎永久在线观看 | 国产人妻久久精品二区三区老狼 | 亚洲成a人片在线观看无码3d | 久久国产精品精品国产色婷婷 | 久久人人爽人人爽人人片ⅴ | 中文字幕人妻丝袜二区 | 7777奇米四色成人眼影 | 色情久久久av熟女人妻网站 | 最新国产乱人伦偷精品免费网站 | 中国女人内谢69xxxxxa片 | 黑人粗大猛烈进出高潮视频 | 波多野42部无码喷潮在线 | 小鲜肉自慰网站xnxx | 亚洲熟悉妇女xxx妇女av | 荫蒂被男人添的好舒服爽免费视频 | 最近免费中文字幕中文高清百度 | 久久亚洲中文字幕无码 | 夫妻免费无码v看片 | 中文亚洲成a人片在线观看 | 青青青手机频在线观看 | 久久久久久久人妻无码中文字幕爆 | 欧美一区二区三区视频在线观看 | 国产一区二区不卡老阿姨 | 亚洲色偷偷男人的天堂 | 综合激情五月综合激情五月激情1 | 国产亚洲人成a在线v网站 | 久久www免费人成人片 | 久久人人爽人人爽人人片av高清 | 亚洲 欧美 激情 小说 另类 | 亚洲色大成网站www国产 | 久久精品99久久香蕉国产色戒 | 永久免费观看美女裸体的网站 | 国产特级毛片aaaaaaa高清 | 精品久久8x国产免费观看 | 亚洲乱亚洲乱妇50p | 最近中文2019字幕第二页 | 日韩精品久久久肉伦网站 | 少女韩国电视剧在线观看完整 | 国产精品久免费的黄网站 | 黑人玩弄人妻中文在线 | 无码精品国产va在线观看dvd | 成熟女人特级毛片www免费 | 久久久久亚洲精品中文字幕 | 激情人妻另类人妻伦 | 精品亚洲成av人在线观看 | 99久久99久久免费精品蜜桃 | 国产免费无码一区二区视频 | 免费人成网站视频在线观看 | 国产一区二区三区四区五区加勒比 | 国产婷婷色一区二区三区在线 | 精品熟女少妇av免费观看 | 无码国模国产在线观看 | 欧美国产日产一区二区 | 亚洲成a人一区二区三区 | 国产精品va在线观看无码 | 欧美野外疯狂做受xxxx高潮 | 人人妻人人澡人人爽人人精品浪潮 | 久久久久久久久蜜桃 | 成 人 网 站国产免费观看 | 水蜜桃av无码 | 成人免费视频一区二区 | 亚洲精品国产a久久久久久 | 国产农村乱对白刺激视频 | 人人妻人人澡人人爽精品欧美 | 亚洲码国产精品高潮在线 | 国产人妻精品一区二区三区 | 亚洲精品国产精品乱码不卡 | 亚洲日韩一区二区 | 美女毛片一区二区三区四区 | 香蕉久久久久久av成人 | 最近免费中文字幕中文高清百度 | 亚洲の无码国产の无码影院 | 97人妻精品一区二区三区 | 久久99精品久久久久久 | 精品国产一区av天美传媒 | 国产一区二区三区四区五区加勒比 | 亚洲a无码综合a国产av中文 | 国产av无码专区亚洲awww | 在线欧美精品一区二区三区 | 国产精品久久久久久久影院 | 日产精品99久久久久久 | 黑人巨大精品欧美黑寡妇 | 99精品视频在线观看免费 | 久青草影院在线观看国产 | 亚洲国产精品成人久久蜜臀 | 性做久久久久久久免费看 | 人妻尝试又大又粗久久 | 全黄性性激高免费视频 | 久久午夜无码鲁丝片午夜精品 | 亚洲春色在线视频 | 国产亚洲美女精品久久久2020 | 人人爽人人澡人人人妻 | 亚洲精品一区二区三区在线 | 日韩精品a片一区二区三区妖精 | 国产一区二区三区精品视频 | 久久人人爽人人爽人人片ⅴ | 欧美丰满少妇xxxx性 | 精品无码国产一区二区三区av | 一本色道久久综合狠狠躁 | 蜜臀av在线播放 久久综合激激的五月天 | 红桃av一区二区三区在线无码av | 老熟妇仑乱视频一区二区 | 亚洲精品中文字幕乱码 | 久在线观看福利视频 | 久久99精品国产麻豆 | 天堂久久天堂av色综合 | 亚洲精品久久久久中文第一幕 | 日本一本二本三区免费 | 国内精品一区二区三区不卡 | 无码中文字幕色专区 | 日本精品久久久久中文字幕 | 亚洲国产精品无码久久久久高潮 | 亚洲成色www久久网站 | 亚洲熟悉妇女xxx妇女av | 亚洲中文字幕乱码av波多ji | 亚洲欧洲日本综合aⅴ在线 | 成 人 网 站国产免费观看 | 国产性猛交╳xxx乱大交 国产精品久久久久久无码 欧洲欧美人成视频在线 | 午夜福利一区二区三区在线观看 | 老头边吃奶边弄进去呻吟 | 国产午夜亚洲精品不卡下载 | 亚洲色欲色欲欲www在线 | 成人无码精品1区2区3区免费看 | 动漫av一区二区在线观看 | 中文字幕乱码人妻无码久久 | 99久久久无码国产精品免费 | 精品国产国产综合精品 | 粉嫩少妇内射浓精videos | 亚洲精品国产精品乱码视色 | 久久国产自偷自偷免费一区调 | 18无码粉嫩小泬无套在线观看 | 丰满肥臀大屁股熟妇激情视频 | 久久婷婷五月综合色国产香蕉 | 亚洲中文字幕无码中字 | 国产无套内射久久久国产 | 色欲久久久天天天综合网精品 | a国产一区二区免费入口 | 野外少妇愉情中文字幕 | 国产激情无码一区二区app | 欧美午夜特黄aaaaaa片 | 亚洲第一网站男人都懂 | 日本欧美一区二区三区乱码 | 欧美日韩一区二区三区自拍 | 欧美国产亚洲日韩在线二区 | 少妇性l交大片欧洲热妇乱xxx | 图片区 小说区 区 亚洲五月 | 国产精品久久久一区二区三区 | 波多野42部无码喷潮在线 | 国产av一区二区精品久久凹凸 | 国产成人精品必看 | 国产在线一区二区三区四区五区 | 76少妇精品导航 | 亚洲日韩中文字幕在线播放 | 色欲久久久天天天综合网精品 | 国产亚洲欧美日韩亚洲中文色 | 噜噜噜亚洲色成人网站 | 综合激情五月综合激情五月激情1 | 亚洲色无码一区二区三区 | 日日摸夜夜摸狠狠摸婷婷 | 日韩视频 中文字幕 视频一区 | 亚洲熟妇色xxxxx亚洲 | 国产亚洲tv在线观看 | 人妻aⅴ无码一区二区三区 | 国产精品久久久午夜夜伦鲁鲁 | 领导边摸边吃奶边做爽在线观看 | 理论片87福利理论电影 | 荫蒂被男人添的好舒服爽免费视频 | 久久综合给合久久狠狠狠97色 | 国产成人一区二区三区在线观看 | 在线观看国产一区二区三区 | 一本大道伊人av久久综合 | 中文字幕av日韩精品一区二区 | 中文字幕乱码人妻二区三区 | 日韩欧美群交p片內射中文 | www一区二区www免费 | 蜜桃av蜜臀av色欲av麻 999久久久国产精品消防器材 | 亚洲精品一区二区三区在线观看 | 国产精品亚洲专区无码不卡 | 亚洲精品一区二区三区四区五区 | 青青草原综合久久大伊人精品 | 精品欧洲av无码一区二区三区 | 999久久久国产精品消防器材 | 国产精品99爱免费视频 | 精品少妇爆乳无码av无码专区 | 兔费看少妇性l交大片免费 | 久久综合九色综合97网 | 无码人妻丰满熟妇区五十路百度 | 成人毛片一区二区 | 老头边吃奶边弄进去呻吟 | 色一情一乱一伦 | 青草青草久热国产精品 | 国产人妻久久精品二区三区老狼 | 国产亚av手机在线观看 | 久久久av男人的天堂 | 99久久久无码国产aaa精品 | aⅴ亚洲 日韩 色 图网站 播放 | 强辱丰满人妻hd中文字幕 | 欧美人与动性行为视频 | 欧美放荡的少妇 | 久久精品视频在线看15 | 小鲜肉自慰网站xnxx | 中文字幕乱码人妻二区三区 | 中文字幕无码人妻少妇免费 | 亚洲日韩av一区二区三区四区 | 亚洲精品国产品国语在线观看 | 国产亚洲精品久久久久久 | 亚洲色欲色欲天天天www | 亚洲gv猛男gv无码男同 | 秋霞成人午夜鲁丝一区二区三区 | 日韩av无码一区二区三区 | 国产精品亚洲专区无码不卡 | 中文字幕无码免费久久99 | 日本高清一区免费中文视频 | 夜先锋av资源网站 | 特黄特色大片免费播放器图片 | 性欧美牲交xxxxx视频 | 国内少妇偷人精品视频免费 | 久久亚洲a片com人成 | 久久综合激激的五月天 | 日韩av无码一区二区三区不卡 | 亚洲精品欧美二区三区中文字幕 | 国产精品无套呻吟在线 | 久久国产精品偷任你爽任你 | 国产精品多人p群无码 | 最近免费中文字幕中文高清百度 | 久久精品无码一区二区三区 | 欧美zoozzooz性欧美 | 亚洲区欧美区综合区自拍区 | 久9re热视频这里只有精品 | 成人无码视频在线观看网站 | 色噜噜亚洲男人的天堂 | 亚洲人交乣女bbw | 99er热精品视频 | 国产精品久久国产三级国 | 无码乱肉视频免费大全合集 | 亚洲色欲久久久综合网东京热 | 99麻豆久久久国产精品免费 | 图片小说视频一区二区 | 国模大胆一区二区三区 | √天堂资源地址中文在线 | 性生交大片免费看女人按摩摩 | 亚洲熟妇自偷自拍另类 | 水蜜桃亚洲一二三四在线 | 最新国产乱人伦偷精品免费网站 | 亚洲高清偷拍一区二区三区 | 欧美老人巨大xxxx做受 | 色欲久久久天天天综合网精品 | 动漫av一区二区在线观看 | aⅴ亚洲 日韩 色 图网站 播放 | 131美女爱做视频 | 啦啦啦www在线观看免费视频 | 亚洲日韩乱码中文无码蜜桃臀网站 | 国产麻豆精品精东影业av网站 | 精品水蜜桃久久久久久久 | 国产乱子伦视频在线播放 | 亚洲高清偷拍一区二区三区 | 少妇人妻大乳在线视频 | 又粗又大又硬毛片免费看 | 亚洲中文字幕成人无码 | 久久精品国产精品国产精品污 | 亚洲日韩精品欧美一区二区 | 日日碰狠狠躁久久躁蜜桃 | 欧美猛少妇色xxxxx | 亚洲日本在线电影 | 国产午夜亚洲精品不卡 | 男人扒开女人内裤强吻桶进去 | 一本久道高清无码视频 | 熟妇人妻激情偷爽文 | 日日噜噜噜噜夜夜爽亚洲精品 | 色爱情人网站 | 大乳丰满人妻中文字幕日本 | 蜜臀av在线播放 久久综合激激的五月天 | 老熟女重囗味hdxx69 | 无码av岛国片在线播放 | 人妻少妇精品无码专区动漫 | 成人试看120秒体验区 | 国产成人一区二区三区在线观看 | 午夜精品久久久久久久久 | 亚洲国产午夜精品理论片 | 久久这里只有精品视频9 | 国产免费久久久久久无码 | 麻花豆传媒剧国产免费mv在线 | 国产xxx69麻豆国语对白 | 亚洲成av人片天堂网无码】 | 波多野结衣av一区二区全免费观看 | 成人精品视频一区二区 | 中文精品久久久久人妻不卡 | 亚洲一区av无码专区在线观看 | 无码一区二区三区在线 | 黄网在线观看免费网站 | 日本爽爽爽爽爽爽在线观看免 | 国产一区二区三区四区五区加勒比 | 欧美日韩人成综合在线播放 | 国产疯狂伦交大片 | 97精品人妻一区二区三区香蕉 | 国精品人妻无码一区二区三区蜜柚 | 午夜无码区在线观看 | 曰韩少妇内射免费播放 | 亚洲一区二区三区国产精华液 | 东京热无码av男人的天堂 | 国产午夜手机精彩视频 | 伊人久久大香线焦av综合影院 | 在线а√天堂中文官网 | 久久国产精品偷任你爽任你 | 97精品人妻一区二区三区香蕉 | 天天躁日日躁狠狠躁免费麻豆 | 亚洲一区av无码专区在线观看 | 精品欧美一区二区三区久久久 | 一本色道久久综合狠狠躁 | 夜精品a片一区二区三区无码白浆 | 无人区乱码一区二区三区 | yw尤物av无码国产在线观看 | 美女毛片一区二区三区四区 | 中文字幕日产无线码一区 | 亚洲午夜福利在线观看 | 久久久国产一区二区三区 | 国产人妻人伦精品1国产丝袜 | 亚洲熟女一区二区三区 | 亚洲欧美日韩国产精品一区二区 | 午夜福利电影 | 秋霞成人午夜鲁丝一区二区三区 | 国产精品无码mv在线观看 | 欧美肥老太牲交大战 | 一个人看的www免费视频在线观看 | 在线观看欧美一区二区三区 | 男女猛烈xx00免费视频试看 | 日本熟妇乱子伦xxxx | 中文字幕av无码一区二区三区电影 | 麻豆果冻传媒2021精品传媒一区下载 | 蜜臀aⅴ国产精品久久久国产老师 | 丰满肥臀大屁股熟妇激情视频 | 国产色在线 | 国产 | 一区二区三区高清视频一 | 国产亚洲视频中文字幕97精品 | 麻花豆传媒剧国产免费mv在线 | √天堂资源地址中文在线 | 日日橹狠狠爱欧美视频 | 又黄又爽又色的视频 | 亚洲无人区午夜福利码高清完整版 | 婷婷丁香五月天综合东京热 | 老熟妇乱子伦牲交视频 | 国产精品二区一区二区aⅴ污介绍 | 国产激情一区二区三区 | 天堂无码人妻精品一区二区三区 | 亚洲精品一区二区三区婷婷月 | 粉嫩少妇内射浓精videos | 人妻少妇精品无码专区二区 | www国产亚洲精品久久久日本 | 欧美一区二区三区 | 国产成人无码区免费内射一片色欲 | 性生交大片免费看女人按摩摩 | 欧美一区二区三区视频在线观看 | 国产亚洲精品久久久久久久 | 一本久道久久综合婷婷五月 | 亚洲精品成a人在线观看 | 久久午夜无码鲁丝片秋霞 | 日本大香伊一区二区三区 | 在线播放无码字幕亚洲 | 激情综合激情五月俺也去 | 久精品国产欧美亚洲色aⅴ大片 | 麻豆人妻少妇精品无码专区 | 蜜臀aⅴ国产精品久久久国产老师 | www国产亚洲精品久久久日本 | 天堂一区人妻无码 | 亚洲成熟女人毛毛耸耸多 | 久久综合激激的五月天 | 国产熟妇高潮叫床视频播放 | 狂野欧美性猛xxxx乱大交 | 亚洲七七久久桃花影院 | 97精品国产97久久久久久免费 | 亚洲精品无码国产 | 人妻无码αv中文字幕久久琪琪布 | 欧美野外疯狂做受xxxx高潮 | 国产特级毛片aaaaaaa高清 | 久久精品国产大片免费观看 | 精品无码国产自产拍在线观看蜜 | 色婷婷香蕉在线一区二区 | 国产乱人偷精品人妻a片 | 夜夜躁日日躁狠狠久久av | 亚洲精品一区二区三区大桥未久 | 亚洲日韩精品欧美一区二区 | 又大又硬又爽免费视频 | 九九综合va免费看 | 领导边摸边吃奶边做爽在线观看 | 午夜免费福利小电影 | 亚洲va欧美va天堂v国产综合 | 全黄性性激高免费视频 | 偷窥日本少妇撒尿chinese | 亚洲精品美女久久久久久久 | 亚洲欧美中文字幕5发布 | 日韩av无码一区二区三区 | 久久亚洲中文字幕精品一区 | 成人影院yy111111在线观看 | 人人妻人人澡人人爽欧美一区九九 | 精品人人妻人人澡人人爽人人 | 亚洲高清偷拍一区二区三区 | 日日摸夜夜摸狠狠摸婷婷 | 色婷婷久久一区二区三区麻豆 | 欧美性生交活xxxxxdddd | 亚洲国产高清在线观看视频 | 中国女人内谢69xxxx | 真人与拘做受免费视频 | 丝袜美腿亚洲一区二区 | 97资源共享在线视频 | 亚洲精品久久久久avwww潮水 | 国产suv精品一区二区五 | 欧美zoozzooz性欧美 | 国产人妻精品一区二区三区 | 久久精品无码一区二区三区 | 国内精品一区二区三区不卡 | 久久人人爽人人爽人人片av高清 | 国产肉丝袜在线观看 | 精品国产乱码久久久久乱码 | √天堂资源地址中文在线 | 正在播放老肥熟妇露脸 | www国产精品内射老师 | 色综合天天综合狠狠爱 | 亚洲精品欧美二区三区中文字幕 | 亚洲热妇无码av在线播放 | 日韩精品无码一本二本三本色 | 澳门永久av免费网站 | 天堂在线观看www | 中文字幕亚洲情99在线 | 亚洲精品国偷拍自产在线观看蜜桃 | 给我免费的视频在线观看 | 又紧又大又爽精品一区二区 | 成年美女黄网站色大免费全看 | 人人澡人人妻人人爽人人蜜桃 | 97夜夜澡人人爽人人喊中国片 | 亚洲大尺度无码无码专区 | 亚洲熟妇色xxxxx亚洲 | 亚洲综合无码一区二区三区 | 国产精品高潮呻吟av久久 | 帮老师解开蕾丝奶罩吸乳网站 | 粗大的内捧猛烈进出视频 | 国内少妇偷人精品视频免费 | 久久久精品欧美一区二区免费 | 欧美亚洲国产一区二区三区 | 伦伦影院午夜理论片 | 性色欲情网站iwww九文堂 | 亚洲精品成a人在线观看 | 狠狠色丁香久久婷婷综合五月 | 中文久久乱码一区二区 | 国产成人无码一二三区视频 | 国产偷抇久久精品a片69 | 全黄性性激高免费视频 | 国产福利视频一区二区 | 精品无码国产一区二区三区av | 亚洲中文字幕av在天堂 | 日本一卡二卡不卡视频查询 | 国产精品亚洲lv粉色 | 澳门永久av免费网站 | 中文字幕无码乱人伦 | 中文无码伦av中文字幕 | ass日本丰满熟妇pics | 一本久道久久综合狠狠爱 | 男人和女人高潮免费网站 | 永久免费精品精品永久-夜色 | 国产无遮挡吃胸膜奶免费看 | 亚洲の无码国产の无码步美 | 乌克兰少妇xxxx做受 | 久久99精品国产麻豆蜜芽 | 波多野结衣乳巨码无在线观看 | 亚洲国产一区二区三区在线观看 | 亚洲日韩乱码中文无码蜜桃臀网站 | 在线观看国产一区二区三区 | 夜夜高潮次次欢爽av女 | 老太婆性杂交欧美肥老太 | 亚洲熟妇色xxxxx亚洲 | 日本精品少妇一区二区三区 | 黑人玩弄人妻中文在线 | 久久综合激激的五月天 | 性生交大片免费看l | 久久久久久av无码免费看大片 | 中文字幕无码热在线视频 | 欧美变态另类xxxx | 97精品国产97久久久久久免费 | 香港三级日本三级妇三级 | 欧美精品免费观看二区 | 精品日本一区二区三区在线观看 | 国产精品福利视频导航 | 国产精品二区一区二区aⅴ污介绍 | 亚洲中文字幕成人无码 | 精品无人区无码乱码毛片国产 | 国产激情艳情在线看视频 | 亚洲精品国偷拍自产在线麻豆 | 久久综合给合久久狠狠狠97色 | 99re在线播放 | 欧美兽交xxxx×视频 | 欧美性生交xxxxx久久久 | 少妇邻居内射在线 | 成人女人看片免费视频放人 | 欧美日韩视频无码一区二区三 | 大肉大捧一进一出好爽视频 | 国产精品对白交换视频 | 国产精品无码mv在线观看 | 激情五月综合色婷婷一区二区 | 99久久久国产精品无码免费 | 欧美日韩色另类综合 | 丝袜人妻一区二区三区 | 国产高清不卡无码视频 | 无码福利日韩神码福利片 | 欧美成人家庭影院 | 色诱久久久久综合网ywww | 2020久久香蕉国产线看观看 | 国产成人精品无码播放 | 久久国产精品萌白酱免费 | 国产熟女一区二区三区四区五区 | 欧洲精品码一区二区三区免费看 | 成人试看120秒体验区 | 亚洲爆乳无码专区 | 亚洲成a人片在线观看无码3d | 成人一区二区免费视频 | 熟女体下毛毛黑森林 | 久久综合香蕉国产蜜臀av | 野外少妇愉情中文字幕 | 蜜桃无码一区二区三区 | 蜜臀av在线播放 久久综合激激的五月天 | 国产97色在线 | 免 | 国产精品亚洲а∨无码播放麻豆 | 国产舌乚八伦偷品w中 | 久久亚洲精品成人无码 | 免费无码午夜福利片69 | 日本一本二本三区免费 | 欧美 日韩 亚洲 在线 | 波多野结衣av一区二区全免费观看 | 中文字幕 亚洲精品 第1页 | 日本精品人妻无码免费大全 | 综合激情五月综合激情五月激情1 | 欧美xxxxx精品 | 国产精品免费大片 | 久久久精品人妻久久影视 | 麻豆成人精品国产免费 | 成在人线av无码免费 | 精品成人av一区二区三区 | 国产美女极度色诱视频www | 在教室伦流澡到高潮hnp视频 | 国产高清不卡无码视频 | 国产在线精品一区二区高清不卡 | 久久精品女人天堂av免费观看 | 国产精品毛片一区二区 | 国产av一区二区精品久久凹凸 | 曰本女人与公拘交酡免费视频 | 蜜桃av蜜臀av色欲av麻 999久久久国产精品消防器材 | 亚洲中文字幕无码一久久区 | 国产精品.xx视频.xxtv | 国産精品久久久久久久 | 亚洲国产精品成人久久蜜臀 | 精品国产aⅴ无码一区二区 | 暴力强奷在线播放无码 | 亚洲精品欧美二区三区中文字幕 | 国产精品久久久久7777 | 伦伦影院午夜理论片 | 亚洲理论电影在线观看 | 日日噜噜噜噜夜夜爽亚洲精品 | 人妻人人添人妻人人爱 | 亚洲国产精品久久久久久 | 婷婷丁香六月激情综合啪 | 国产精品成人av在线观看 | 亚洲国产精品久久人人爱 | 呦交小u女精品视频 | 狠狠色噜噜狠狠狠7777奇米 | 日本乱偷人妻中文字幕 | 国产后入清纯学生妹 | 少妇邻居内射在线 | 免费国产黄网站在线观看 | 久久 国产 尿 小便 嘘嘘 | 鲁鲁鲁爽爽爽在线视频观看 | 国产精品香蕉在线观看 | 沈阳熟女露脸对白视频 | 天堂亚洲2017在线观看 | 亚洲乱亚洲乱妇50p | 国产亚洲欧美日韩亚洲中文色 | 国产精品怡红院永久免费 | 精品国产一区二区三区四区 | 欧美亚洲国产一区二区三区 | 成在人线av无码免观看麻豆 | 色婷婷久久一区二区三区麻豆 | 国产又粗又硬又大爽黄老大爷视 | 亚洲国产精品久久人人爱 | 一个人看的www免费视频在线观看 | 亚洲国产一区二区三区在线观看 | 免费看男女做好爽好硬视频 | 色情久久久av熟女人妻网站 | 欧美性生交活xxxxxdddd | 久久人人97超碰a片精品 | 伊在人天堂亚洲香蕉精品区 | 国产国语老龄妇女a片 | 亚洲乱码中文字幕在线 | а√资源新版在线天堂 | 国产sm调教视频在线观看 | 丝袜足控一区二区三区 | 亚洲成熟女人毛毛耸耸多 | 午夜福利一区二区三区在线观看 | 国产乱人偷精品人妻a片 | 少妇人妻av毛片在线看 | 国产两女互慰高潮视频在线观看 | 国产凸凹视频一区二区 | 亚洲色在线无码国产精品不卡 | 久久久精品成人免费观看 | 国产精品亚洲а∨无码播放麻豆 | 成人一区二区免费视频 | 亚洲精品一区二区三区在线 | 日韩亚洲欧美精品综合 | 国产精品美女久久久 | 无码av最新清无码专区吞精 | 激情五月综合色婷婷一区二区 | 国产精品对白交换视频 | 国内精品久久毛片一区二区 | 麻豆蜜桃av蜜臀av色欲av | 国内精品一区二区三区不卡 | 亚洲国产精品美女久久久久 | 久久97精品久久久久久久不卡 | 西西人体www44rt大胆高清 | av在线亚洲欧洲日产一区二区 | 野外少妇愉情中文字幕 | 天天拍夜夜添久久精品 | 国产成人精品久久亚洲高清不卡 | 国产一区二区三区四区五区加勒比 | 久久久中文久久久无码 | 国产av人人夜夜澡人人爽麻豆 | 中文字幕av无码一区二区三区电影 | 亚洲人成影院在线观看 | 色偷偷人人澡人人爽人人模 | 日本xxxx色视频在线观看免费 | 国产精品高潮呻吟av久久 | 中文精品久久久久人妻不卡 | 日本一区二区三区免费高清 | 国产成人午夜福利在线播放 | 无码人妻精品一区二区三区不卡 | 色窝窝无码一区二区三区色欲 | 欧美成人免费全部网站 | 亚洲精品午夜无码电影网 | 成人性做爰aaa片免费看不忠 | 精品水蜜桃久久久久久久 | 性生交大片免费看女人按摩摩 | 中文字幕乱码亚洲无线三区 | 久久久久久亚洲精品a片成人 | 久久久久人妻一区精品色欧美 | 日本va欧美va欧美va精品 | 国产精品久久久久9999小说 | 国产午夜无码精品免费看 | 大色综合色综合网站 | 久久久中文久久久无码 | 欧美日本精品一区二区三区 | 国产明星裸体无码xxxx视频 | www国产亚洲精品久久久日本 | 国产精品免费大片 | 无码播放一区二区三区 | 精品国产精品久久一区免费式 | 无码人妻av免费一区二区三区 | 亚洲爆乳大丰满无码专区 | 蜜桃视频插满18在线观看 | 欧美黑人乱大交 | 无码人妻丰满熟妇区毛片18 | 女人被男人爽到呻吟的视频 | 无套内射视频囯产 | 色欲久久久天天天综合网精品 | 成 人影片 免费观看 | 国产亚洲精品久久久久久 | 亚洲经典千人经典日产 | 熟妇人妻中文av无码 | 人妻中文无码久热丝袜 | 啦啦啦www在线观看免费视频 | 亚洲码国产精品高潮在线 | 国产精品对白交换视频 | 国产av一区二区精品久久凹凸 | 领导边摸边吃奶边做爽在线观看 | 国产成人无码区免费内射一片色欲 | 日本一卡2卡3卡四卡精品网站 | 亚洲熟妇色xxxxx亚洲 | 日本一区二区三区免费播放 | 娇妻被黑人粗大高潮白浆 | 巨爆乳无码视频在线观看 | 日韩精品无码一区二区中文字幕 | 性啪啪chinese东北女人 | www一区二区www免费 | 天天躁日日躁狠狠躁免费麻豆 | 又粗又大又硬又长又爽 | 国产人妖乱国产精品人妖 | 亚洲国产精品成人久久蜜臀 | 一本无码人妻在中文字幕免费 | 又色又爽又黄的美女裸体网站 | 精品人妻人人做人人爽夜夜爽 | 色综合久久网 | 中国女人内谢69xxxxxa片 | 青草视频在线播放 | 蜜桃av蜜臀av色欲av麻 999久久久国产精品消防器材 | 在线天堂新版最新版在线8 | 日本又色又爽又黄的a片18禁 | 中文字幕精品av一区二区五区 | 久久精品国产99精品亚洲 | 人妻少妇精品无码专区二区 | 色 综合 欧美 亚洲 国产 | 伊人色综合久久天天小片 | 色欲久久久天天天综合网精品 | v一区无码内射国产 | 亚洲人交乣女bbw | 国产莉萝无码av在线播放 | 十八禁视频网站在线观看 | 一个人看的www免费视频在线观看 | 亚洲国产精品久久久久久 | 欧美精品无码一区二区三区 | 国产av无码专区亚洲awww | 亚洲综合伊人久久大杳蕉 | 欧美日本日韩 | 少妇无码av无码专区在线观看 | 亚洲国产综合无码一区 | av小次郎收藏 | 亚洲国产日韩a在线播放 | 色欲av亚洲一区无码少妇 | 最新国产麻豆aⅴ精品无码 | 日韩亚洲欧美中文高清在线 | 亚洲一区二区三区香蕉 | 捆绑白丝粉色jk震动捧喷白浆 | aⅴ亚洲 日韩 色 图网站 播放 | 久久精品人人做人人综合试看 | 亚洲国产av美女网站 | 欧美激情一区二区三区成人 | 波多野结衣av在线观看 | 久久久久久亚洲精品a片成人 | 漂亮人妻洗澡被公强 日日躁 | 欧美一区二区三区视频在线观看 | 国产午夜亚洲精品不卡下载 | 久激情内射婷内射蜜桃人妖 | 亚洲乱码日产精品bd | 成人无码视频在线观看网站 | 妺妺窝人体色www在线小说 | 亚洲高清偷拍一区二区三区 | 成人无码精品1区2区3区免费看 | 国产精品久久精品三级 | 国产精品美女久久久久av爽李琼 | 国产av一区二区精品久久凹凸 | 无遮挡国产高潮视频免费观看 | aⅴ亚洲 日韩 色 图网站 播放 | 18禁黄网站男男禁片免费观看 | 99久久99久久免费精品蜜桃 | 日本熟妇乱子伦xxxx | 国产免费久久精品国产传媒 | 18无码粉嫩小泬无套在线观看 | 无人区乱码一区二区三区 | 婷婷五月综合激情中文字幕 | 色欲久久久天天天综合网精品 | 国产超级va在线观看视频 | 国产精品无码一区二区三区不卡 | 中文亚洲成a人片在线观看 | 无码精品国产va在线观看dvd | 国产精品久久久av久久久 | 无码一区二区三区在线观看 | 天天爽夜夜爽夜夜爽 | 国产成人无码av片在线观看不卡 | 国产人妻人伦精品1国产丝袜 | 牲交欧美兽交欧美 | 牛和人交xxxx欧美 | а天堂中文在线官网 | 午夜无码人妻av大片色欲 | 蜜臀av在线观看 在线欧美精品一区二区三区 | 国产成人午夜福利在线播放 | 无码一区二区三区在线观看 | 欧美老熟妇乱xxxxx | 免费播放一区二区三区 | 亚洲精品美女久久久久久久 | 国产香蕉尹人视频在线 | 四十如虎的丰满熟妇啪啪 | 国产精品丝袜黑色高跟鞋 | 三级4级全黄60分钟 | 国产99久久精品一区二区 | 精品 日韩 国产 欧美 视频 | 亚洲精品中文字幕 | 在线欧美精品一区二区三区 | 一本色道久久综合亚洲精品不卡 | 国产xxx69麻豆国语对白 | 亚洲欧美精品伊人久久 | 人妻夜夜爽天天爽三区 | 一本久道久久综合婷婷五月 | 午夜理论片yy44880影院 | 亚洲 日韩 欧美 成人 在线观看 | 亚洲中文无码av永久不收费 | 国产精品自产拍在线观看 | 亚洲 高清 成人 动漫 | 欧洲熟妇色 欧美 | 久久久中文字幕日本无吗 | 在线精品亚洲一区二区 | 精品国产av色一区二区深夜久久 | 少妇无码av无码专区在线观看 | 国产精品美女久久久网av | 国产农村妇女高潮大叫 | 国产成人精品久久亚洲高清不卡 | 亚洲国产精品一区二区第一页 | 欧美亚洲日韩国产人成在线播放 | 美女张开腿让人桶 | 久久伊人色av天堂九九小黄鸭 | 亚洲区小说区激情区图片区 | a在线亚洲男人的天堂 | 网友自拍区视频精品 | 香蕉久久久久久av成人 | 免费男性肉肉影院 | 美女张开腿让人桶 | 又大又硬又黄的免费视频 | 男人的天堂av网站 | 国产69精品久久久久app下载 | 中文字幕亚洲情99在线 | 日韩精品乱码av一区二区 | 内射后入在线观看一区 | а天堂中文在线官网 | 亚洲成色www久久网站 | 欧美老妇与禽交 | 亚洲精品国偷拍自产在线观看蜜桃 | 久久精品人妻少妇一区二区三区 | 在线观看免费人成视频 | 一本久久伊人热热精品中文字幕 | 人人澡人摸人人添 | 人妻少妇精品无码专区动漫 | 中文字幕人妻无码一区二区三区 | 国产精品永久免费视频 | 日日鲁鲁鲁夜夜爽爽狠狠 | 亚洲国产精品一区二区第一页 | 国产特级毛片aaaaaaa高清 | 又湿又紧又大又爽a视频国产 | 无码国产乱人伦偷精品视频 | 一本精品99久久精品77 | 在线视频网站www色 | 亚洲国产一区二区三区在线观看 | 欧洲极品少妇 | 日本一卡2卡3卡四卡精品网站 | 免费乱码人妻系列无码专区 | 亚洲国产精品久久久久久 | 国产亚洲精品精品国产亚洲综合 | 精品aⅴ一区二区三区 | 成 人 网 站国产免费观看 | 永久免费精品精品永久-夜色 | 欧美第一黄网免费网站 | 亚洲精品中文字幕乱码 | 秋霞成人午夜鲁丝一区二区三区 | 俺去俺来也在线www色官网 | 国产精品久久国产精品99 | 丰满少妇女裸体bbw | 一区二区三区高清视频一 | 中文字幕乱妇无码av在线 | 国产人妻精品午夜福利免费 | 大肉大捧一进一出好爽视频 | 2020最新国产自产精品 | 美女极度色诱视频国产 | 亚洲精品国偷拍自产在线观看蜜桃 | 97久久精品无码一区二区 | 波多野结衣乳巨码无在线观看 | 全球成人中文在线 | 九九热爱视频精品 | 国产亚洲精品久久久久久大师 | 在线欧美精品一区二区三区 | 人妻无码αv中文字幕久久琪琪布 | 国产熟妇高潮叫床视频播放 | 国产熟女一区二区三区四区五区 | 亚洲国产午夜精品理论片 | 亚洲色偷偷偷综合网 | 波多野结衣av一区二区全免费观看 | 无码人妻丰满熟妇区五十路百度 | 男女爱爱好爽视频免费看 | 亚洲国产精品成人久久蜜臀 | 蜜臀av在线播放 久久综合激激的五月天 | 青草视频在线播放 | 风流少妇按摩来高潮 | 给我免费的视频在线观看 | 无码人妻少妇伦在线电影 | 亚洲乱码日产精品bd | 亚洲国产av精品一区二区蜜芽 | av无码不卡在线观看免费 | 国产网红无码精品视频 | 日产国产精品亚洲系列 | 精品一区二区三区无码免费视频 | 免费人成网站视频在线观看 | 国产艳妇av在线观看果冻传媒 | 内射白嫩少妇超碰 | 扒开双腿吃奶呻吟做受视频 | 亚洲精品中文字幕久久久久 | 天天摸天天透天天添 | 久久99久久99精品中文字幕 | 国产精品无码成人午夜电影 | 99麻豆久久久国产精品免费 | 天堂а√在线地址中文在线 | 久久久久99精品成人片 | 国产成人精品必看 | 丰满少妇人妻久久久久久 | 亚洲精品综合一区二区三区在线 | 精品无码一区二区三区爱欲 | av在线亚洲欧洲日产一区二区 | 丰满少妇熟乱xxxxx视频 | 国产成人久久精品流白浆 | 色婷婷综合中文久久一本 | 亚洲一区av无码专区在线观看 | аⅴ资源天堂资源库在线 | 天天拍夜夜添久久精品大 | 四虎影视成人永久免费观看视频 | 伊人久久大香线蕉亚洲 | 天海翼激烈高潮到腰振不止 | 中文字幕乱妇无码av在线 | 伊人久久婷婷五月综合97色 | 国产乱人无码伦av在线a | 内射老妇bbwx0c0ck | 欧美老妇与禽交 | 精品一区二区三区无码免费视频 | 妺妺窝人体色www在线小说 | 国产口爆吞精在线视频 | 真人与拘做受免费视频一 | 欧美丰满熟妇xxxx性ppx人交 | 国内精品九九久久久精品 | 国产精品丝袜黑色高跟鞋 | 免费观看又污又黄的网站 | 天天摸天天透天天添 | 玩弄人妻少妇500系列视频 | 麻豆人妻少妇精品无码专区 | 西西人体www44rt大胆高清 | 国产亚洲精品精品国产亚洲综合 | 野狼第一精品社区 | 亚洲 另类 在线 欧美 制服 | 日本一卡2卡3卡四卡精品网站 | 国内精品人妻无码久久久影院蜜桃 | 国产性生交xxxxx无码 | 国产免费久久久久久无码 | 欧美老熟妇乱xxxxx | 一二三四社区在线中文视频 | 久久精品国产99精品亚洲 | 超碰97人人射妻 | 亚洲高清偷拍一区二区三区 | √天堂资源地址中文在线 | 亚洲欧美日韩成人高清在线一区 | 乱码午夜-极国产极内射 | 久久 国产 尿 小便 嘘嘘 | 熟妇人妻无乱码中文字幕 | 男女爱爱好爽视频免费看 | 精品熟女少妇av免费观看 | 久久久精品成人免费观看 | 强开小婷嫩苞又嫩又紧视频 | 国产两女互慰高潮视频在线观看 | 精品午夜福利在线观看 | 久久精品国产精品国产精品污 | 久久精品女人天堂av免费观看 | 婷婷丁香五月天综合东京热 | 成人aaa片一区国产精品 | 鲁大师影院在线观看 | 亚洲熟妇自偷自拍另类 | 欧美国产日产一区二区 | 亚洲国产精品美女久久久久 | 激情亚洲一区国产精品 | 国产午夜亚洲精品不卡下载 | 亚洲第一网站男人都懂 | 性欧美牲交xxxxx视频 | 久精品国产欧美亚洲色aⅴ大片 | 狠狠色色综合网站 | 欧美刺激性大交 | 日日麻批免费40分钟无码 | 国产精品久久久久久亚洲影视内衣 | 国产人妻精品一区二区三区不卡 | 性做久久久久久久久 | 中文字幕无码av波多野吉衣 | 日韩亚洲欧美精品综合 | 一本久道高清无码视频 | 蜜桃视频韩日免费播放 | 国产一区二区三区四区五区加勒比 | 国产午夜福利100集发布 | 欧美刺激性大交 | 中文字幕色婷婷在线视频 | 日日摸日日碰夜夜爽av | 欧洲熟妇精品视频 | 精品无码国产一区二区三区av | 强辱丰满人妻hd中文字幕 | 亚洲成av人综合在线观看 | 国产三级精品三级男人的天堂 | 国产偷自视频区视频 | 国产午夜无码精品免费看 | 丝袜人妻一区二区三区 | 亚洲 a v无 码免 费 成 人 a v | 国产精品亚洲а∨无码播放麻豆 | 久久久久成人片免费观看蜜芽 | 亚洲欧洲日本综合aⅴ在线 | 无码精品国产va在线观看dvd | 国产乱人伦偷精品视频 | 巨爆乳无码视频在线观看 | 国产精品国产三级国产专播 | 久久 国产 尿 小便 嘘嘘 | 精品久久综合1区2区3区激情 | 人妻尝试又大又粗久久 | 久久午夜无码鲁丝片午夜精品 | 欧美第一黄网免费网站 | 国产后入清纯学生妹 | 永久黄网站色视频免费直播 | 99久久久无码国产精品免费 | 欧美熟妇另类久久久久久不卡 | 国产精品美女久久久 | 精品 日韩 国产 欧美 视频 | 亚洲人成影院在线观看 | av无码久久久久不卡免费网站 | 久久aⅴ免费观看 | 免费观看又污又黄的网站 | 熟妇人妻无码xxx视频 | 日韩av激情在线观看 | 亚洲精品久久久久久久久久久 | 中文字幕精品av一区二区五区 | 双乳奶水饱满少妇呻吟 | 亚洲欧美精品aaaaaa片 | 欧美成人午夜精品久久久 | 狠狠亚洲超碰狼人久久 | 高潮毛片无遮挡高清免费视频 | 1000部夫妻午夜免费 | 图片小说视频一区二区 | 无码国产激情在线观看 | 国产色xx群视频射精 | 中文字幕av日韩精品一区二区 | 欧美黑人性暴力猛交喷水 | 秋霞特色aa大片 | 一本加勒比波多野结衣 | 欧美野外疯狂做受xxxx高潮 | 日本熟妇乱子伦xxxx | 日本熟妇人妻xxxxx人hd | 久久人人97超碰a片精品 | 三级4级全黄60分钟 | 精品人妻人人做人人爽夜夜爽 | 亚洲一区二区三区无码久久 | 国产av剧情md精品麻豆 | 亚洲一区二区三区 | 熟妇人妻中文av无码 | 丰满人妻被黑人猛烈进入 | 国产色在线 | 国产 | 男人和女人高潮免费网站 | 国产精品久久久久7777 | 久久久无码中文字幕久... | 婷婷六月久久综合丁香 | 麻豆国产丝袜白领秘书在线观看 | 精品久久久无码中文字幕 | 大屁股大乳丰满人妻 | 久久五月精品中文字幕 | yw尤物av无码国产在线观看 | 中文字幕久久久久人妻 | 成人性做爰aaa片免费看不忠 | 强伦人妻一区二区三区视频18 | 精品厕所偷拍各类美女tp嘘嘘 | 国产午夜视频在线观看 | 亚洲理论电影在线观看 | 扒开双腿疯狂进出爽爽爽视频 | 精品国产aⅴ无码一区二区 | 2019午夜福利不卡片在线 | 国产成人无码区免费内射一片色欲 | 一本色道久久综合狠狠躁 | 国产精品va在线播放 | 国产成人综合色在线观看网站 | 成人女人看片免费视频放人 | 亚洲精品无码国产 | 男女超爽视频免费播放 | 精品熟女少妇av免费观看 | 国产精品久久久久久无码 | 精品久久久无码人妻字幂 | 亚洲第一网站男人都懂 | 青青草原综合久久大伊人精品 | 内射爽无广熟女亚洲 | 午夜肉伦伦影院 | 色一情一乱一伦一区二区三欧美 | 一本加勒比波多野结衣 | 国产猛烈高潮尖叫视频免费 | 欧美一区二区三区 | 国产精品久久久久久久9999 | 久久99精品国产麻豆蜜芽 | 76少妇精品导航 | 丝袜美腿亚洲一区二区 | 国产精品自产拍在线观看 | 精品国产青草久久久久福利 | 日韩精品乱码av一区二区 | 人人爽人人澡人人人妻 | 久久久久久久人妻无码中文字幕爆 | 成人亚洲精品久久久久 | 日韩少妇白浆无码系列 | 精品午夜福利在线观看 | 国产绳艺sm调教室论坛 | 樱花草在线社区www | 色综合久久久久综合一本到桃花网 | 男人扒开女人内裤强吻桶进去 | 四虎4hu永久免费 | 丰腴饱满的极品熟妇 | 国产亚av手机在线观看 | 午夜精品久久久久久久久 | 日韩精品成人一区二区三区 | 久久久久久九九精品久 | 日韩av无码一区二区三区不卡 | 国模大胆一区二区三区 | 亚洲色成人中文字幕网站 | 无码人妻久久一区二区三区不卡 | 性色欲网站人妻丰满中文久久不卡 | 女人被男人爽到呻吟的视频 | 中文久久乱码一区二区 | 四虎永久在线精品免费网址 | 亚洲欧美国产精品专区久久 | 午夜福利试看120秒体验区 | 国产熟女一区二区三区四区五区 | 国产手机在线αⅴ片无码观看 | 一本无码人妻在中文字幕免费 | 日本熟妇乱子伦xxxx | 嫩b人妻精品一区二区三区 | 亚洲国产日韩a在线播放 | 亚洲午夜福利在线观看 | 国产人妻大战黑人第1集 | 日韩人妻无码一区二区三区久久99 | 人妻少妇精品视频专区 | 国产精品亚洲综合色区韩国 | 国产午夜无码视频在线观看 | 亚洲日本va中文字幕 | 久久久久成人片免费观看蜜芽 | 国产av无码专区亚洲a∨毛片 | 久久无码人妻影院 | 欧洲精品码一区二区三区免费看 | 女人被男人躁得好爽免费视频 | 色一情一乱一伦一区二区三欧美 | 中文字幕av伊人av无码av | 精品国产一区二区三区av 性色 | 性开放的女人aaa片 | 国产精品无码一区二区三区不卡 | 亚洲欧洲日本无在线码 | 老太婆性杂交欧美肥老太 | 亚洲综合无码一区二区三区 | 小泽玛莉亚一区二区视频在线 | 四虎国产精品一区二区 | 无码一区二区三区在线观看 | 少妇性俱乐部纵欲狂欢电影 | 性做久久久久久久久 | 欧美猛少妇色xxxxx | 人妻无码αv中文字幕久久琪琪布 | 无遮挡国产高潮视频免费观看 | 亚洲熟妇色xxxxx欧美老妇 | 日韩欧美群交p片內射中文 | 日本饥渴人妻欲求不满 | 老熟妇仑乱视频一区二区 | 亚洲热妇无码av在线播放 | 国产国产精品人在线视 | 大肉大捧一进一出好爽视频 | 精品人妻人人做人人爽夜夜爽 | 给我免费的视频在线观看 | 欧美肥老太牲交大战 | 伊在人天堂亚洲香蕉精品区 | 荫蒂被男人添的好舒服爽免费视频 | 日日碰狠狠丁香久燥 | 人人妻人人澡人人爽精品欧美 | 撕开奶罩揉吮奶头视频 | 丰满少妇弄高潮了www | 亚洲精品欧美二区三区中文字幕 | 搡女人真爽免费视频大全 | 欧美变态另类xxxx | 国产午夜手机精彩视频 | 国产手机在线αⅴ片无码观看 | 亚洲热妇无码av在线播放 | 波多野结衣av在线观看 | 日韩欧美群交p片內射中文 | 国产精品va在线观看无码 | 东京无码熟妇人妻av在线网址 | 久久精品国产大片免费观看 | 亚洲色在线无码国产精品不卡 | 亚洲国产精品成人久久蜜臀 | 日日鲁鲁鲁夜夜爽爽狠狠 | 欧美精品在线观看 | 最新版天堂资源中文官网 | 麻豆国产97在线 | 欧洲 | 欧美 丝袜 自拍 制服 另类 | 国内少妇偷人精品视频免费 | 午夜男女很黄的视频 | 亚洲 a v无 码免 费 成 人 a v | 亚洲 另类 在线 欧美 制服 | 无码av免费一区二区三区试看 | 草草网站影院白丝内射 | 亚洲七七久久桃花影院 | 亚洲日本va午夜在线电影 | 国产 浪潮av性色四虎 | 狠狠躁日日躁夜夜躁2020 | 久久精品国产一区二区三区 | 精品一区二区不卡无码av | 国産精品久久久久久久 | 成 人 免费观看网站 | 香港三级日本三级妇三级 | 色综合久久久久综合一本到桃花网 | 免费人成网站视频在线观看 | 搡女人真爽免费视频大全 | 国产精品成人av在线观看 | 99视频精品全部免费免费观看 | 久久久精品成人免费观看 | 国产真实伦对白全集 | 欧美日本日韩 | 中文字幕乱妇无码av在线 | 国产精品第一国产精品 | 婷婷色婷婷开心五月四房播播 | 国产av无码专区亚洲a∨毛片 | 色婷婷香蕉在线一区二区 | 性啪啪chinese东北女人 | 久久 国产 尿 小便 嘘嘘 | 最新版天堂资源中文官网 | 国产精华av午夜在线观看 | 国产午夜手机精彩视频 | 亚洲欧洲无卡二区视頻 | 免费观看激色视频网站 | 波多野结衣av在线观看 | 日韩av无码中文无码电影 | 久久97精品久久久久久久不卡 | 国产亚洲人成在线播放 | av人摸人人人澡人人超碰下载 | 亚洲国产欧美日韩精品一区二区三区 | 小sao货水好多真紧h无码视频 | 国内精品人妻无码久久久影院蜜桃 | 秋霞成人午夜鲁丝一区二区三区 | 色综合久久88色综合天天 | 正在播放老肥熟妇露脸 | 国产亚洲人成a在线v网站 | 亚洲天堂2017无码中文 | 久久久久亚洲精品中文字幕 | 国产女主播喷水视频在线观看 | 成人亚洲精品久久久久软件 | 中文久久乱码一区二区 | 亚洲精品美女久久久久久久 | 国产午夜手机精彩视频 | 成人精品天堂一区二区三区 | 午夜丰满少妇性开放视频 | 在线亚洲高清揄拍自拍一品区 | 亚洲国产av精品一区二区蜜芽 | 又大又硬又爽免费视频 | 亚洲中文字幕无码一久久区 | 亚洲国产精品毛片av不卡在线 | 初尝人妻少妇中文字幕 | 久久午夜无码鲁丝片 | 亚洲色大成网站www国产 | 亚洲人成影院在线无码按摩店 | 日韩av无码一区二区三区不卡 | 亚洲天堂2017无码中文 | 久在线观看福利视频 | 久久亚洲日韩精品一区二区三区 | 又粗又大又硬毛片免费看 | 国内精品人妻无码久久久影院 | 亚洲va欧美va天堂v国产综合 | 人人妻人人澡人人爽欧美一区 | 无码人妻出轨黑人中文字幕 | 国产xxx69麻豆国语对白 | 日本熟妇大屁股人妻 | 亚洲欧美精品aaaaaa片 | 午夜成人1000部免费视频 | 精品国偷自产在线视频 | 无码人妻久久一区二区三区不卡 | 国产suv精品一区二区五 | 内射老妇bbwx0c0ck | 亚洲中文字幕无码中字 | 中文久久乱码一区二区 | 国产午夜无码精品免费看 | 大地资源中文第3页 | 男女性色大片免费网站 | 成人免费无码大片a毛片 | 无码纯肉视频在线观看 | 久久精品成人欧美大片 | 福利一区二区三区视频在线观看 | 亚洲日本一区二区三区在线 | 无码人妻丰满熟妇区五十路百度 | 色欲综合久久中文字幕网 | 欧美性生交活xxxxxdddd | 国产精品a成v人在线播放 | 亚洲中文无码av永久不收费 | 国产欧美熟妇另类久久久 | 国产黑色丝袜在线播放 | 最新国产麻豆aⅴ精品无码 | 无码国产色欲xxxxx视频 | 亚洲va中文字幕无码久久不卡 | 精品国产一区二区三区av 性色 | 人妻少妇精品视频专区 | 一本大道伊人av久久综合 | 日韩精品一区二区av在线 | 国内揄拍国内精品人妻 | 国产内射老熟女aaaa | 激情五月综合色婷婷一区二区 | 麻豆国产人妻欲求不满谁演的 | 欧美国产日韩亚洲中文 | 久久人人97超碰a片精品 | 色妞www精品免费视频 | 老头边吃奶边弄进去呻吟 | 国产做国产爱免费视频 | 久久综合给久久狠狠97色 | 99久久精品午夜一区二区 | 自拍偷自拍亚洲精品10p | 色综合久久久久综合一本到桃花网 | 国产精品福利视频导航 | 精品国产一区二区三区四区在线看 | 欧美日韩一区二区综合 | 精品人人妻人人澡人人爽人人 | 粉嫩少妇内射浓精videos | 国产成人综合在线女婷五月99播放 | 久久久亚洲欧洲日产国码αv | 性啪啪chinese东北女人 | 亚洲区欧美区综合区自拍区 | 成年美女黄网站色大免费全看 | 成 人 免费观看网站 | 久久精品一区二区三区四区 | 无码人中文字幕 | 纯爱无遮挡h肉动漫在线播放 | 国产成人无码a区在线观看视频app | 欧美老妇与禽交 | 中文字幕无线码免费人妻 | 国产xxx69麻豆国语对白 | а√天堂www在线天堂小说 | 一区二区三区高清视频一 | 久久久久久九九精品久 | 荫蒂添的好舒服视频囗交 | 国产激情艳情在线看视频 | 色一情一乱一伦一区二区三欧美 | 国产av久久久久精东av | 精品久久8x国产免费观看 | 日本丰满护士爆乳xxxx | 久久99精品国产麻豆蜜芽 | 国产极品美女高潮无套在线观看 | 内射爽无广熟女亚洲 | 亚洲 a v无 码免 费 成 人 a v | 亚洲成熟女人毛毛耸耸多 | 亚洲精品鲁一鲁一区二区三区 | 夜先锋av资源网站 | 精品国产av色一区二区深夜久久 | 亚洲国产精品一区二区美利坚 | 兔费看少妇性l交大片免费 | 欧美激情综合亚洲一二区 | 四虎国产精品免费久久 | 在线看片无码永久免费视频 | av无码电影一区二区三区 | 亚洲s码欧洲m码国产av | 国产亚洲精品久久久久久久 | 日本大乳高潮视频在线观看 | 欧美阿v高清资源不卡在线播放 | 人妻少妇精品久久 | 日本饥渴人妻欲求不满 | 色婷婷香蕉在线一区二区 | 无码国内精品人妻少妇 | 精品久久久久久亚洲精品 | 天天做天天爱天天爽综合网 | 十八禁真人啪啪免费网站 | 在线 国产 欧美 亚洲 天堂 | 亚洲一区二区三区国产精华液 | 亚洲毛片av日韩av无码 | 亚洲精品综合一区二区三区在线 | 亚洲毛片av日韩av无码 | 性做久久久久久久久 | 一二三四在线观看免费视频 | 成人性做爰aaa片免费看不忠 | 日韩欧美群交p片內射中文 | 免费人成在线观看网站 | 俺去俺来也www色官网 | 久久久久成人片免费观看蜜芽 | 亚洲日韩乱码中文无码蜜桃臀网站 | 久久久久亚洲精品中文字幕 | 久久久久人妻一区精品色欧美 | 麻豆国产丝袜白领秘书在线观看 | 国产女主播喷水视频在线观看 | 国产精品欧美成人 | 强辱丰满人妻hd中文字幕 | 国产精品久久久久久久影院 | 国产精品高潮呻吟av久久 | 成人亚洲精品久久久久 | 精品 日韩 国产 欧美 视频 | 九月婷婷人人澡人人添人人爽 | 国产精品久久久久久亚洲毛片 | 99久久亚洲精品无码毛片 | 内射老妇bbwx0c0ck | 亚洲成a人一区二区三区 | 乱人伦人妻中文字幕无码久久网 | 午夜无码人妻av大片色欲 | 九一九色国产 | 东北女人啪啪对白 | 激情五月综合色婷婷一区二区 | 男人和女人高潮免费网站 | 中文字幕日韩精品一区二区三区 | 午夜福利一区二区三区在线观看 | 亚洲综合久久一区二区 | 麻豆国产97在线 | 欧洲 | 亚洲熟女一区二区三区 | 亚洲欧美综合区丁香五月小说 | 黑人巨大精品欧美一区二区 | 澳门永久av免费网站 | 欧美xxxx黑人又粗又长 | 色偷偷人人澡人人爽人人模 | 亚洲乱码国产乱码精品精 | 九九综合va免费看 | 人人澡人人透人人爽 | 国产av无码专区亚洲a∨毛片 | 国产口爆吞精在线视频 | 男女性色大片免费网站 | 亚洲欧美精品aaaaaa片 | 成在人线av无码免费 | 成人无码视频在线观看网站 | 欧美激情综合亚洲一二区 | 欧美日韩人成综合在线播放 | 最近免费中文字幕中文高清百度 | 亚洲色欲色欲欲www在线 | 色婷婷香蕉在线一区二区 | 一二三四社区在线中文视频 | 国产精品成人av在线观看 | 国产精品二区一区二区aⅴ污介绍 | 一本大道伊人av久久综合 | 娇妻被黑人粗大高潮白浆 | 女人被男人爽到呻吟的视频 | 1000部夫妻午夜免费 | 女人被男人爽到呻吟的视频 | 扒开双腿疯狂进出爽爽爽视频 | 久久精品中文字幕大胸 | 久久久久亚洲精品中文字幕 | 免费看少妇作爱视频 | 一本久道久久综合狠狠爱 | 国产福利视频一区二区 | 国产精品美女久久久 | 久精品国产欧美亚洲色aⅴ大片 | 中文久久乱码一区二区 | 欧美怡红院免费全部视频 | 久久久精品人妻久久影视 | 国产成人精品久久亚洲高清不卡 | 国产精品久久久午夜夜伦鲁鲁 | 国产 精品 自在自线 | 国语精品一区二区三区 | 中文字幕日产无线码一区 | 中国女人内谢69xxxxxa片 | 亚洲男女内射在线播放 | 国产成人精品无码播放 | 亚洲欧洲日本综合aⅴ在线 | 亚洲综合伊人久久大杳蕉 | 国产精品欧美成人 | 国语自产偷拍精品视频偷 | 一本色道久久综合亚洲精品不卡 | 精品 日韩 国产 欧美 视频 | 亚洲狠狠色丁香婷婷综合 | 欧美午夜特黄aaaaaa片 | 中文字幕无码av激情不卡 | 女高中生第一次破苞av | 亚洲狠狠婷婷综合久久 | 国产熟妇高潮叫床视频播放 | 美女黄网站人色视频免费国产 | 欧美激情综合亚洲一二区 | 亚洲一区二区三区在线观看网站 | 国产精品视频免费播放 | 精品一区二区不卡无码av | 精品乱码久久久久久久 | 国产女主播喷水视频在线观看 | 亚洲色在线无码国产精品不卡 | 国产一区二区三区精品视频 | 亚洲欧美中文字幕5发布 | 亚洲色大成网站www | 人妻aⅴ无码一区二区三区 | 久久久精品欧美一区二区免费 | 99久久久无码国产精品免费 | 国产熟女一区二区三区四区五区 | 国产精品久久久久久久9999 | 国内少妇偷人精品视频 | 国产av久久久久精东av | 国产精品爱久久久久久久 | 双乳奶水饱满少妇呻吟 | 精品无码国产自产拍在线观看蜜 | 国产高潮视频在线观看 | 少妇人妻大乳在线视频 | 欧美怡红院免费全部视频 | 国产午夜亚洲精品不卡下载 | 中文字幕人妻丝袜二区 | 成熟人妻av无码专区 | 精品亚洲韩国一区二区三区 | 装睡被陌生人摸出水好爽 | 国产成人无码av片在线观看不卡 | 欧美日本免费一区二区三区 | 人妻互换免费中文字幕 | 亚洲综合伊人久久大杳蕉 |