精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Nodejs 14大版本中新增特性總結(jié)

開發(fā) 前端
以下內(nèi)容也是基于筆者在日常 Node.js 工作和學(xué)習(xí)中所總結(jié)的,可能不全,同時(shí)也歡迎補(bǔ)充,有些功能之前也曾單獨(dú)寫過(guò)文章來(lái)介紹,接下讓我們一起看看都有哪些新的變化。

[[384503]]

 Node.js 是一個(gè)基于 Chrome V8 引擎 的 JavaScript 運(yùn)行時(shí)。在 2020 年 10 月 27 日 Node.js v14.15.0 LTS 版已發(fā)布,即長(zhǎng)期支持版本,其中包含了很多很棒的新功能,以下內(nèi)容也是基于筆者在日常 Node.js 工作和學(xué)習(xí)中所總結(jié)的,可能不全,同時(shí)也歡迎補(bǔ)充,有些功能之前也曾單獨(dú)寫過(guò)文章來(lái)介紹,接下讓我們一起看看都有哪些新的變化?

Optional Chaining(可選鏈)

如果我們使用 JavaScript 不管是用在前端或者 Node.js 服務(wù)端都會(huì)出現(xiàn)如下情況,因?yàn)槲覀冇袝r(shí)是不確定 user 對(duì)象是否存在,又或者 user 對(duì)象里面的 address 是否存在,如果不這樣判斷, 可能會(huì)得到類似于 Cannot read property 'xxx' of undefined 這樣的類似錯(cuò)誤。 

  1. const user = {  
  2.   name: 'Tom',  
  3.   address: {  
  4.     city: 'ZhengZhou'  
  5.   }  
  6.  
  7. if (user && user.address) {  
  8.   console.log(user.address.city)  

現(xiàn)在我們有一種優(yōu)雅的寫法 "可選鏈操作符",不必明確的驗(yàn)證鏈中的每個(gè)引用是否有效,以符號(hào) "?." 表示,在引用為 null 或 undefined 時(shí)不會(huì)報(bào)錯(cuò),會(huì)發(fā)生短路返回 undefined。 

  1. user.address?.city  
  2. user.address?.city?.length  
  3. // 結(jié)合 ?.[] 的方式訪問(wèn)相當(dāng)于 user.address['city']  
  4. user.address?.['city']  
  5. // 結(jié)合 delete 語(yǔ)句使用,僅在 user.address.city 存在才刪除  
  6. delete user.address?.city 

參考 https://v8.dev/features/optional-chaining

Nullish Coalescing(空值合并)

邏輯或操作符(||)會(huì)在左側(cè)為假值時(shí)返回右側(cè)的操作符,例如我們傳入一個(gè)屬性為 enabled:0 我們期望輸出左側(cè)的值,則是不行的。 

  1. function Component(props) {  
  2.   const enable = props.enabled || true; // true  
  3.  
  4. Component({ enabled: 0 }) 

現(xiàn)在我們可以使用 **空值合并操作符(??)**來(lái)實(shí)現(xiàn),僅當(dāng)左側(cè)為 undefined 或 null 時(shí)才返回右側(cè)的值。 

  1. function Component(props) {  
  2.   const enable = props.enabled ?? true; // 0  
  3.  
  4. Component({ enabled: 0 }) 

參考:https://v8.dev/features/nullish-coalescing

Intl.DisplayNames(國(guó)際化顯示名稱)

對(duì)于國(guó)際化應(yīng)用需要用到的語(yǔ)言、區(qū)域、貨幣、腳本的名稱,現(xiàn)在 JavaScript 開發(fā)者可以使用 Intl.DisplayNames API 直接訪問(wèn)這些翻譯,使應(yīng)用程序更輕松的顯示本地化名稱。

Language(語(yǔ)言) 

  1. let longLanguageNames = new Intl.DisplayNames(['zh-CN'], { type: 'language' });  
  2. longLanguageNames.of('en-US'); // 美國(guó)英語(yǔ)  
  3. longLanguageNames.of('zh-CN'); // 中文(中國(guó))  
  4. longLanguageNames = new Intl.DisplayNames(['en'], { type: 'language' });  
  5. longLanguageNames.of('en-US'); // American English  
  6. longLanguageNames.of('zh-CN'); // Chinese (China) 

Region(區(qū)域) 

  1. let regionNames = new Intl.DisplayNames(['zh-CN'], {type: 'region'});  
  2. regionNames.of('US'); // 美國(guó)  
  3. regionNames.of('419'); // 拉丁美洲  
  4. regionNames = new Intl.DisplayNames(['en'], {type: 'region'});  
  5. regionNames.of('US'); // United States  
  6. regionNames.of('419'); // Latin America 

Currency(貨幣) 

  1. let currencyNames = new Intl.DisplayNames(['zh-CN'], {type: 'currency'});  
  2. currencyNames.of('CNY'); // 人民幣  
  3. currencyNames.of('USD'); // 美元  
  4. currencyNames = new Intl.DisplayNames(['en'], {type: 'currency'});  
  5. currencyNames.of('CNY'); // Chinese Yuan  
  6. currencyNames.of('USD'); // US Dollar 

Script(腳本) 

  1. let scriptNames = new Intl.DisplayNames(['zh-CN'], {type: 'script'});  
  2. scriptNames.of('Hans'); // 簡(jiǎn)體  
  3. scriptNames.of('Latn'); // 拉丁文  
  4. scriptNames = new Intl.DisplayNames(['en'], {type: 'script'});  
  5. scriptNames.of('Hans'); // Simplified 
  6. scriptNames.of('Latn'); // Latin 

參考:https://v8.dev/features/intl-displaynames

上述實(shí)例用到的國(guó)家代號(hào)和 code 都可從參考地址獲取。

Intl.DateTimeFormat(國(guó)際化處理日期時(shí)間格式)

Intl.DateTimeFormat API 用來(lái)處理特定語(yǔ)言環(huán)境的日期格式。 

  1. const date = new Date();  
  2. // Sunday, January 10, 2021 at 9:02:29 PM GMT+8  
  3. new Intl.DateTimeFormat('en-US', { dateStyle: 'full', timeStyle: 'long'}).format(date)  
  4. // 21/1/10 中國(guó)標(biāo)準(zhǔn)時(shí)間 下午9:02:29.315  
  5. new Intl.DateTimeFormat('zh-CN', {  
  6.   year: '2-digit',  
  7.   month: 'numeric',  
  8.   day: 'numeric',  
  9.   hour: 'numeric',  
  10.   minute: 'numeric',  
  11.   second: 'numeric',  
  12.   fractionalSecondDigits: 3,  
  13.   timeZoneName: 'long'  
  14. }).format(date) 

參考: 

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/DateTimeFormat

String.prototype.matchAll (throws on non-global regex)

matchAll() 返回一個(gè)包含所有匹配正則表達(dá)式的結(jié)果,返回值為一個(gè)不可重用(不可重用意思為讀取完之后需要再次獲取)的迭代器。

matchAll() 方法在 Node.js v12.4.0 以上版本已支持,該方法有個(gè)限制,如果設(shè)置的正則表達(dá)式?jīng)]有包含全局模式 g ,在 Node.js v14.5.0 之后的版本如果沒(méi)有提供會(huì)拋出一個(gè) TypeError 異常。 

  1. // const regexp = RegExp('foo[a-z]*','g'); // 正確  
  2. const regexp = RegExp('foo[a-z]*'); // 錯(cuò)誤,沒(méi)有加全局模式  
  3. const str = 'table football, foosball, fo' 
  4. const matches = str.matchAll(regexp); // TypeError: String.prototype.matchAll called with a non-global RegExp argument  
  5. for (const item of matches) {  
  6.   console.log(item);  

參考:

https://node.green/#ES2020-features-String-prototype-matchAll-throws-on-non-global-regex

Async Local Storage(異步本地存儲(chǔ))

Node.js Async Hooks 模塊提供了 API 用來(lái)追蹤 Node.js 程序中異步資源的聲明周期,在最新的 v14.x LTS 版本中新增加了一個(gè) AsyncLocalStorage 類可以方便實(shí)現(xiàn)上下文本地存儲(chǔ),在異步調(diào)用之間共享數(shù)據(jù),對(duì)于實(shí)現(xiàn)日志鏈路追蹤場(chǎng)景很有用。

下面是一個(gè) HTTP 請(qǐng)求的簡(jiǎn)單示例,模擬了異步處理,并且在日志輸出時(shí)去追蹤存儲(chǔ)的 id。 

  1. const http = require('http');  
  2. const { AsyncLocalStorage } = require('async_hooks');  
  3. const asyncLocalStorage = new AsyncLocalStorage();  
  4. function logWithId(msg) {  
  5.   const id = asyncLocalStorage.getStore();  
  6.   console.log(`${id !== undefined ? id : '-'}:`, msg);  
  7.  
  8. let idSeq = 0 
  9. http.createServer((req, res) => {  
  10.   asyncLocalStorage.run(idSeq++, () => {  
  11.     logWithId('start');  
  12.     setImmediate(() => {  
  13.       logWithId('processing...');  
  14.       setTimeout(() => {  
  15.         logWithId('finish');  
  16.         res.end();  
  17.       }, 2000)  
  18.     });  
  19.   });  
  20. }).listen(8080); 

下面是運(yùn)行結(jié)果,我在第一次調(diào)用之后直接調(diào)用了第二次,可以看到我們存儲(chǔ)的 id 信息與我們的日志一起成功的打印了出來(lái)。

image.png

便利性的同時(shí)也會(huì)犧牲一些性能上的代價(jià)。

ES Modules 支持

ES Modules 的支持總體上來(lái)說(shuō)是個(gè)好事,進(jìn)一步的規(guī)范了 Node.js 與瀏覽器的模塊生態(tài),使之進(jìn)一步趨同,同時(shí)避免了進(jìn)一步的分裂。

在當(dāng)前 Node.js v14.x LTS 版本中已移除試驗(yàn)性支持,現(xiàn)在使用無(wú)需使用標(biāo)志了,它使用 import、export 關(guān)鍵字,兩種使用方式:

使用 .mjs 擴(kuò)展名 

  1. // caculator.mjs  
  2. export function add (a, b) {  
  3.   return a + b;  
  4. };  
  5. // index.mjs  
  6. import { add } from './caculator.js';  
  7. console.log(add(4, 2)); // 6 

告訴 Node.js 將 JavaScript 代碼視為 ES Modules

默認(rèn)情況下 Node.js 將 JavaScript 代碼視為 CommonJS 規(guī)范,所以我們要在上面使用擴(kuò)展名為 .mjs 的方式來(lái)聲明,除此之外我們還可以在 package.json 文件中 設(shè)置 type 字段為 module 或在運(yùn)行 node 時(shí)加上標(biāo)志 --input-type=module 告訴 Node.js 將 JavaScript 代碼視為 ES Modules。 

  1. // package.json  
  2.  
  3.   "name": "esm-project",  
  4.   "type": "module",  
  5.   ...  

前端的同學(xué)可能會(huì)對(duì)以上使用 ES Modules 的方式很熟悉。

Top-Level Await(頂級(jí) await 支持)

頂級(jí) await 支持在異步函數(shù)之外使用 await 關(guān)鍵字,在 Node.js v14.x LTS 版本中已去掉試驗(yàn)性支持,現(xiàn)在使用也不再需要設(shè)置標(biāo)志。 

  1. import fetch from 'node-fetch';  
  2. const res = await fetch(url) 

也可以像調(diào)用函數(shù)一樣動(dòng)態(tài)的導(dǎo)入模塊。 

  1. const myModule = await import('./my-module.js'); 

對(duì)于異步資源,之前我們必須在 async 函數(shù)內(nèi)才可使用 await,這對(duì)一些在文件頂部需要實(shí)例化的資源可能會(huì)不 好操作,現(xiàn)在有了頂級(jí) await 我們可以方便的在文件頂部對(duì)這些異步資源做一些初始化操作。

Diagnostic report(診斷報(bào)告)

Diagnostic report 是 Node.js v14.x LTS 提供的一個(gè)穩(wěn)定功能,在某些情況下會(huì)生成一個(gè) JSON 格式的診斷報(bào)告,可用于開發(fā)、測(cè)試、生產(chǎn)環(huán)境。報(bào)告會(huì)提供有價(jià)值的信息,包括:JavaScript 和本機(jī)堆棧信息、堆統(tǒng)計(jì)信息、平臺(tái)信息、資源使用情況等,幫助用戶快速追蹤問(wèn)題。

https://github.com/IBM/report-toolkit 是 IBM 開發(fā)的一個(gè)款工具,用于簡(jiǎn)化報(bào)告工具的使用,如下是一個(gè)簡(jiǎn)單 Demo 它會(huì)造成服務(wù)的內(nèi)存泄漏。 

  1. const total = [];  
  2. setInterval(function() {  
  3.   total.push(new Array(20 * 1024 * 1024)); // 大內(nèi)存占用,不會(huì)被釋放  
  4. }, 1000) 

最終生成的 JSON 報(bào)告被 report-toolkit 工具診斷的結(jié)果可能是下面這樣的。

Stream

新版本中包含了對(duì) Stream 的一些更改,旨在提高 Stream API 的一致性,以消除歧義并簡(jiǎn)化 Node.js 核心各個(gè)部分的行為,例如:

  •  http.OutgoingMessage 與 stream.Writable 類似
  •  net.Socket 的行為與 stream.Duplex 完全相同
  •  一個(gè)顯著的變化 autoDestroy 的默認(rèn)值為 true,使流在結(jié)束之后始終調(diào)用 _destroy

參考:

https://nodejs.medium.com/node-js-version-14-available-now-8170d384567e

使用異步迭代器

使用異步迭代器我們可以對(duì) Node.js 中的事件、Stream 亦或者 MongoDB 返回?cái)?shù)據(jù)遍歷,這是一件很有意思的事情,盡管它不是 Node.js v14.x 中新提出的功能,例如 event.on 是在 Node.js v12.16.0 才支持的,這些目前看到的介紹還不太多,因此我想在這里做下簡(jiǎn)單介紹。

在 Events 中使用

Node.js v12.16.0 中新增了 events.on(emitter, eventName) 方法,返回一個(gè)迭代 eventName 事件的異步迭代器,例如啟動(dòng)一個(gè) Node.js 服務(wù)可以如下這樣寫,想知道它的原理的可以看筆者下面提到的相關(guān)文章介紹。 

  1. import { createServer as server } from 'http';  
  2. import { on } from 'events';  
  3. const ee = on(server().listen(3000), 'request');  
  4. for await (const [{ url }, res] of ee)  
  5.   if (url === '/hello')  
  6.     res.end('Hello Node.js!');  
  7.   else  
  8.     res.end('OK!'); 

在 Stream 中使用

以往我們可以通過(guò) on('data') 以事件監(jiān)聽的方式讀取數(shù)據(jù),通過(guò)異步迭代器可以一種更簡(jiǎn)單的方式實(shí)現(xiàn)。 

  1. async function readText(readable) {  
  2.   let data = '' 
  3.   for await (const chunk of readable) {  
  4.     data += chunk;  
  5.   }  
  6.   return data;  

目前在 JavaScript 中還沒(méi)有被默認(rèn)設(shè)定 [Symbol.asyncIterator] 屬性的內(nèi)建對(duì)象,在 Node.js 的一些模塊 Events、Stream 中是可使用的,另外你還可以用它來(lái)遍歷 MongoDB 的返回結(jié)果。 

 

 

責(zé)任編輯:龐桂玉 來(lái)源: 前端大全
相關(guān)推薦

2009-11-11 16:37:50

ADO.NET新增特性

2023-07-19 08:03:05

Future異步JDK

2010-02-02 09:08:39

Python 特性

2009-07-09 16:29:19

JDK版本

2025-02-20 09:52:45

C# 6開發(fā)代碼

2012-11-16 11:11:06

深度影音Linux Deepi

2022-03-15 14:11:21

iOS蘋果操作系統(tǒng)

2009-04-27 13:42:38

SQL Server Hierarchyid微軟

2010-02-04 09:17:26

Visual Stud

2013-02-25 14:08:56

Windows Ser

2025-05-07 08:30:00

2013-10-11 09:41:01

Windows 8.1支付寶

2022-05-25 07:22:07

ES12JavaScript語(yǔ)言

2010-09-29 14:08:31

2009-07-09 14:57:56

Java Consol

2017-11-16 15:54:01

2012-06-21 09:21:06

微軟Windows Pho

2009-09-08 11:26:35

Spring 3.0

2010-01-25 10:11:32

Oracle 11g

2009-10-22 08:54:56

WF4 Beta 2
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

国模私拍视频在线播放| 丰满人妻熟女aⅴ一区| 日本欧美视频| 欧美一区二区视频在线观看2020| 欧美大黑帍在线播放| 欧洲成人av| 国产精品自拍网站| 热门国产精品亚洲第一区在线| 欧美日韩生活片| 波多野结衣一区二区三区免费视频| 色偷偷88欧美精品久久久| 中文字幕一区二区三区有限公司| 日批视频在线播放| 青青草国产精品亚洲专区无| 久久露脸国产精品| 伊人影院综合网| 秋霞在线一区| 日韩免费看网站| 亚洲综合婷婷久久| 综合日韩av| 亚洲无线码一区二区三区| 亚洲国产欧洲综合997久久| 亚洲国产精品久久久久久6q| 日本欧美一区二区三区乱码| 国内精品久久久| 乱h高h女3p含苞待放| 国产精品密蕾丝视频下载| 日韩欧美高清在线| 国模私拍视频在线观看| 国产精品极品美女在线观看| 亚洲午夜国产一区99re久久| 在线观看免费黄色片| 国产毛片av在线| 99精品视频在线观看免费| 91视频88av| 一区二区日韩视频| 久久精品导航| 人妖精品videosex性欧美| 久久久久黄色片| 欧美在线精品一区| 久久久电影免费观看完整版| 日韩女同一区二区三区 | 最新真实国产在线视频| 久久久午夜精品理论片中文字幕| 国产日韩亚洲精品| 精品国产一级片| 国产麻豆9l精品三级站| 国产日韩欧美在线| 亚洲一级视频在线观看| 日本不卡一区二区三区| 国产精品久久久久久五月尺| 老熟妇一区二区三区| 久久久综合网| 国产精品成人一区| 国产又粗又猛又爽又| 久久蜜桃精品| 国产mv久久久| 日韩av免费播放| 日本欧美一区二区在线观看| 国产精品视频不卡| 国产精品自拍电影| 国产精品18久久久久久久久久久久 | 精品一区二区三区在线播放视频 | 欧美国产综合一区二区| 日本一区二区视频| 思思99re6国产在线播放| 国产精品久久夜| 一级全黄肉体裸体全过程| 美女隐私在线观看| 亚洲欧洲中文日韩久久av乱码| www.黄色网址.com| 白浆在线视频| 色综合亚洲欧洲| 黄色片在线免费| 成人av在线播放| 亚洲成人av在线| 国产偷人妻精品一区| 精品国产a一区二区三区v免费| 中文字幕无线精品亚洲乱码一区| 国产稀缺精品盗摄盗拍| 伊人久久久大香线蕉综合直播| 97在线视频精品| 亚洲av无码乱码国产精品fc2| 蜜桃av一区二区在线观看| 国产日产亚洲精品| wwwav网站| 久久色视频免费观看| 亚洲自拍偷拍二区| 2020国产在线| 欧美视频中文字幕| 国产高潮失禁喷水爽到抽搐| 国际精品欧美精品| 久久6免费高清热精品| 亚洲永久精品在线观看| 久久91精品久久久久久秒播| 国产欧美综合精品一区二区| 成年午夜在线| 性做久久久久久免费观看欧美| 日韩手机在线观看视频| 久久综合给合| 国产一区二区黄| 久草资源在线视频| 全部av―极品视觉盛宴亚洲| 国产精品二区三区| 色综合久久久久综合一本到桃花网| 亚洲高清三级视频| 在线观看国产中文字幕| 久久国产精品色av免费看| 中文字幕在线观看亚洲| 国产成人免费观看视频 | 午夜日韩在线| 国产精品久久久久77777| 亚洲国产精品视频在线| 国产精品久久久久9999吃药| 日韩在线一级片| 日韩成人精品| 综合av色偷偷网| 你懂的国产在线| 豆国产96在线|亚洲| 亚洲综合第一| 亚洲综合在线电影| 亚洲精品国产综合久久| 久草视频免费在线| 国模少妇一区二区三区| 午夜精品福利一区二区| 小h片在线观看| 日韩免费视频一区二区| 午夜国产小视频| 青椒成人免费视频| 亚洲va久久久噜噜噜久久狠狠| 蜜桃av.网站在线观看| 欧美zozo另类异族| 久久久综合久久久| 国产一区二区不卡在线| 在线综合视频网站| 巨胸喷奶水www久久久| 亚洲精品资源在线| 亚洲黄色小说图片| 99精品黄色片免费大全| 黄色大片中文字幕| 久久久伦理片| 97色在线视频观看| 四虎影视精品成人| 欧美午夜片欧美片在线观看| 亚洲男人在线天堂| 亚洲影院免费| 免费看成人午夜电影| 色戒汤唯在线| 亚洲欧美精品在线| 欧美成人一区二区三区四区| 久久中文字幕电影| 日韩一级片播放| 精品无人区麻豆乱码久久久| 国产精品丝袜视频| 九七电影韩国女主播在线观看| 欧美疯狂做受xxxx富婆| 丝袜 亚洲 另类 欧美 重口| 国产高清成人在线| 福利视频一二区| 日韩高清影视在线观看| 国产成人综合精品| 1024免费在线视频| 日韩一级视频免费观看在线| 久久老司机精品视频| 99这里只有精品| 日韩视频免费在线播放| 欧美超碰在线| 91精品国产一区二区三区动漫| 毛片在线导航| 亚洲欧美在线磁力| 亚洲自拍偷拍另类| 一卡二卡欧美日韩| 人妻丰满熟妇aⅴ无码| 日本免费新一区视频| 懂色av粉嫩av蜜臀av| a看欧美黄色女同性恋| 7777免费精品视频| h视频在线播放| 日韩免费一区二区| 波多野结衣电车痴汉| 亚洲同性同志一二三专区| 极品白嫩少妇无套内谢| 国产精品久久久久久久久久妞妞| 视频一区视频二区视频三区高| 国产不卡精品在线| 91精品国产91久久久久久吃药| 3p在线观看| 精品久久国产字幕高潮| 成人毛片一区二区三区| 亚洲你懂的在线视频| 亚洲久久久久久| 激情五月婷婷综合| 日韩在线综合网| 欧美成人自拍| 美乳视频一区二区| 国产一区二区三区| 欧美在线亚洲一区| 91国内在线| 一区二区三区高清国产| 亚洲成人久久精品| 欧美男生操女生| 日韩特黄一级片| 亚洲丝袜制服诱惑| 爱爱的免费视频| 国产裸体歌舞团一区二区| www日韩在线观看| 国产一区二区三区四区老人| 日韩欧美精品一区二区| youjizzjizz亚洲| 成人免费午夜电影| 国产成人精品123区免费视频| 欧美高清无遮挡| 快射视频在线观看| 国产亚洲人成a一在线v站| 人人妻人人澡人人爽精品日本| 欧美日韩国产综合久久| 亚洲综合久久网| 亚洲成人在线观看视频| 国产日韩欧美在线观看视频| 久久久久久久综合| 国产精品久久AV无码| 国产精品一二三四区| av在线网址导航| 日一区二区三区| 欧美 日韩精品| 亚洲毛片一区| www.国产在线视频| 欧美日韩亚洲一区| 波多野结衣三级在线| 欧美视频免费| 欧美日韩精品一区| 亚洲精品亚洲人成在线观看| 国产精品视频福利| a级日韩大片| 国产伦理久久久| 成人福利一区| 国产精品区免费视频| 亚洲视频精选| 动漫精品视频| www.神马久久| 激情视频一区二区| 欧美一区二区三区红桃小说| 国产精品日本一区二区| 国产成人澳门| 精品一区日韩成人| 日韩手机在线| 牛人盗摄一区二区三区视频| 中文字幕亚洲影视| 欧美一区二区三区成人久久片| 国产精品欧美三级在线观看| 日韩免费av电影| 日韩免费视频| 性欧美18一19内谢| 在线一区电影| 五月丁香综合缴情六月小说| 日韩午夜在线| 国产精品亚洲a| 日产欧产美韩系列久久99| 亚洲一级片免费| 国产揄拍国内精品对白| 欧美熟妇另类久久久久久多毛| 国产精品18久久久久久久久久久久| 色诱av手机版| 99国产精品久| 免费看日本黄色片| 亚洲欧美日韩中文播放| 国产精品999久久久| 精品久久中文字幕久久av| 精品不卡一区二区| 欧美精品久久99| 韩国av免费在线| 亚洲免费视频网站| 日本在线www| 欧美激情精品久久久久久黑人| av免费在线视| 国产精品入口福利| 无码国模国产在线观看| 精品在线一区| 91成人精品视频| 黄色一级视频在线播放| 久热综合在线亚洲精品| 又色又爽又黄视频| www.欧美精品一二区| 成人性生交大片免费看无遮挡aⅴ| 亚洲欧美日韩一区二区| 一级片中文字幕| 欧美精品日韩精品| 亚洲欧美丝袜中文综合| 色偷偷av亚洲男人的天堂| √天堂8资源中文在线| 国产精品揄拍一区二区| av男人一区| 一区二区三区偷拍| 日韩视频久久| 极品粉嫩美女露脸啪啪| 99re亚洲国产精品| a一级免费视频| 色婷婷亚洲一区二区三区| 国产视频手机在线| 国产亚洲一区二区精品| √8天堂资源地址中文在线| 91精品久久久久久久久久久久久久 | 欧美一二三区在线观看| 久草在线青青草| 欧美高清自拍一区| 美女视频一区| 日韩福利一区二区三区| 亚洲区国产区| 日本中文字幕精品| 国产精品国产自产拍高清av王其| 在线观看日韩中文字幕| 精品国产人成亚洲区| 日本在线播放| 国产精品极品尤物在线观看| 欧美调教在线| 日韩精品视频在线观看视频| 国产一区二区三区不卡在线观看| 精品无码人妻一区二区免费蜜桃| 亚洲mv在线观看| 国产精品久久久久久久免费看| 亚洲午夜未满十八勿入免费观看全集| 欧美人与牲禽动交com| 国产综合久久久久久| 国内黄色精品| 日韩精品免费播放| 91视频你懂的| 日韩欧美激情视频| 欧美成人vps| 羞羞网站在线免费观看| 91中文字幕一区| 91综合在线| 91丨九色丨蝌蚪| 国产精品久久久久国产精品日日| 中文字幕人妻一区二区在线视频 | 精品福利一区二区三区| aaa大片在线观看| 成人免费淫片aa视频免费| 99精品视频在线| 天天摸天天舔天天操| 国产精品国产成人国产三级| 在线免费观看av片| 这里只有精品在线播放| 欧美日韩不卡| 一本一本a久久| 国内不卡的二区三区中文字幕| www深夜成人a√在线| 91精品国产高清一区二区三区蜜臀 | 国产成人精品亚洲线观看| 丁香婷婷综合激情| 不卡的看片网站| 天天干天天干天天干天天| 亚洲精品少妇网址| 午夜日韩成人影院| 色播亚洲婷婷| 精品一区二区三区在线播放| 精品国产视频一区二区三区| 欧美一卡2卡三卡4卡5免费| 性网站在线观看| 国产一区二区三区无遮挡| 国产视频一区三区| 国产精成人品免费观看| 91精品欧美综合在线观看最新| 四虎影院观看视频在线观看 | 青青草综合网| 182午夜视频| 亚洲国产日韩在线一区模特| 五月激情婷婷网| 国产精品jizz在线观看麻豆| 欧美gvvideo网站| 成人啪啪18免费游戏链接| 精品久久久免费| 淫片在线观看| 国产成人精品日本亚洲11| 久久精品麻豆| 制服丨自拍丨欧美丨动漫丨| 日韩美女一区二区三区四区| 久草在线中文最新视频| 亚洲精品电影在线一区| 国产**成人网毛片九色| 你懂的国产在线| 超碰精品一区二区三区乱码| 国语一区二区三区| 五月婷婷六月丁香激情| 午夜一区二区三区在线观看| 福利视频在线看| 成人在线观看av| 日韩精品一区第一页| 免费在线观看黄色av| 亚洲欧美中文另类| 日韩成人在线看| 9久久婷婷国产综合精品性色| 亚洲激情欧美激情| 久久米奇亚洲| 99久久精品免费看国产四区 | 欧美在线免费一级片| 扒开jk护士狂揉免费| 日韩欧美的一区| 高清在线一区| 国产l精品国产亚洲区久久| 伊人色综合久久天天人手人婷|