精品欧美一区二区三区在线观看 _久久久久国色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)

污污免费在线观看| 大片在线观看网站免费收看| 日韩美一区二区| 日韩精品欧美激情一区二区| 欧美视频第二页| 中文字幕一区二区三区四区五区| 高清乱码毛片入口| 久久激情一区| 欧美成人精品激情在线观看 | 波多野在线观看| 97久久超碰精品国产| 国产精品91在线观看| 可以直接看的黄色网址| 欧美亚洲色图校园春色| 欧美日韩的一区二区| 成年人网站免费视频| 午夜激情视频在线| www.亚洲国产| 亚洲www在线观看| 综合网在线观看| 国产精品久久| 色偷偷9999www| 亚洲中文字幕无码一区| 日韩综合久久| 色网站国产精品| 国产精品久久国产| 麻豆免费在线视频| 国产嫩草影院久久久久| 国产一区二区三区免费不卡| 国产精品久久久久久久久毛片 | 一本精品一区二区三区| 亚洲欧美色图片| 成人h视频在线| 日本道在线观看| 午夜视频一区| 日韩视频在线免费| 五月天亚洲视频| 天堂av在线网| 亚洲午夜电影在线观看| 亚洲一区二区三区免费观看| 免费在线黄色网址| av在线不卡免费看| 99久久精品无码一区二区毛片| 中国女人一级一次看片| 久久久久网站| 欧美亚洲另类激情另类| 好吊操这里只有精品| 欧美午夜不卡| 欧美高跟鞋交xxxxhd| 97在线观看免费高| 久久精品青草| 日韩在线视频中文字幕| av在线播放中文字幕| 国内精品伊人久久久| 亚洲视频在线观看网站| 国产精品1000部啪视频| 午夜先锋成人动漫在线| 亚洲精品成人久久| 免费成人深夜夜行p站| 欧美精品中文| 亚洲女人初尝黑人巨大| 熟女高潮一区二区三区| 国产一区二区精品福利地址| 亚洲人免费视频| 久久美女免费视频| 国产激情精品一区二区三区| 欧美精选午夜久久久乱码6080| 午夜国产一区二区三区| 九九久久国产| 欧美一级午夜免费电影| youjizz.com日本| 国产毛片久久久| 精品亚洲一区二区三区在线播放| 极品粉嫩小仙女高潮喷水久久| 午夜a一级毛片亚洲欧洲| 亚洲天天在线日亚洲洲精| 亚洲色图欧美色| 99欧美视频| 欧美激情三级免费| 好看的av在线| 久久国产麻豆精品| 91视频免费进入| 亚洲日本在线播放| 国产目拍亚洲精品99久久精品| 爱爱爱视频网站| 美女精品导航| 欧美日韩裸体免费视频| 欧美三级理论片| 精品国产鲁一鲁****| 欧美r级电影在线观看| 亚洲调教欧美在线| 色爱综合网欧美| 久久久久久亚洲| 夜夜躁日日躁狠狠久久av| 国内一区二区视频| 久久久久九九九| 日本高清视频在线播放| 亚洲国产成人av| wwww.国产| 精品三级在线观看视频| 色婷婷av一区二区三区久久| 欧美日韩在线观看成人| 久久国产欧美| www.一区二区三区| av在线免费观看网站| 一区二区高清在线| 天天干天天干天天干天天干天天干| 国产成人免费视频网站视频社区 | 黄色片在线免费看| 亚洲精品成人a在线观看| 成年人黄色片视频| 亚洲福利合集| 色诱女教师一区二区三区| 久草精品视频在线观看| 精品在线视频一区| 欧美一区亚洲二区| av免费不卡国产观看| 欧美日本一区二区| 精品人妻无码一区二区三区| 欧美精品色网| 国产在线精品一区免费香蕉| 网站黄在线观看| 亚洲精品免费在线| jizz18女人| 欧美男男gaytwinkfreevideos| 欧美美最猛性xxxxxx| 中文字幕91爱爱| 99精品偷自拍| 欧美图片激情小说| 久久九九精品视频| 最近2019好看的中文字幕免费 | 精品婷婷伊人一区三区三| 亚洲国产综合视频| 激情综合在线| julia一区二区中文久久94| 国产在线观看91| 欧美三级韩国三级日本一级| 国产免费看av| 久久精品动漫| 欧美一区二区高清在线观看| 999av小视频在线| 亚洲国产99精品国自产| 欧美成人综合色| 激情图区综合网| 在线亚洲美日韩| 亚洲成人高清| 久久久成人的性感天堂| 97人妻一区二区精品免费视频| 欧美激情在线看| 超碰在线97免费| 久久精品国产大片免费观看| 国产精品青草久久久久福利99| 精品无人乱码| 欧美在线啊v一区| 欧美黄色高清视频| 另类成人小视频在线| 亚洲视频导航| 亚洲日日夜夜| 欧美大学生性色视频| 亚洲精品一区二区三区四区| 伊人夜夜躁av伊人久久| 天堂va欧美va亚洲va老司机| 欧美午夜精品| 久久精品国产第一区二区三区最新章节 | 午夜久久久久久久久久久| 免费一级欧美片在线观看网站| 久久伊人精品一区二区三区| 999久久久久| 亚洲国产裸拍裸体视频在线观看乱了| 国产情侣久久久久aⅴ免费| 国产亚洲成人一区| 日韩国产在线一区| 四虎影视国产精品| 欧美激情一区二区久久久| 无码h黄肉3d动漫在线观看| 色综合天天综合在线视频| 成人激情五月天| 国产一级精品在线| 国产精品久久中文字幕| 欧洲毛片在线视频免费观看| 国产精品青青在线观看爽香蕉 | 欧美亚洲成人网| 国产爆初菊在线观看免费视频网站| 欧美日韩一二区| 久久久久成人精品无码| 97精品久久久午夜一区二区三区| 亚洲人成无码www久久久| 午夜影院欧美| 国产一区二区三区四区五区加勒比| 免费观看欧美大片| 久久综合免费视频影院| 午夜成人鲁丝片午夜精品| 欧美性色黄大片| 麻豆91精品91久久久| 久久久一区二区三区捆绑**| 最新av免费在线观看| 亚洲日本欧美| 伊甸园精品99久久久久久| 国产精东传媒成人av电影| 国产精品久久久精品| 色综合999| 中文字幕国产精品久久| 人妻无码中文字幕| 欧美美女黄视频| www.国产色| 亚洲精品亚洲人成人网| 一区二区精品免费| 成人性生交大片免费看中文网站| 污版视频在线观看| 亚洲一区二区三区四区五区午夜| 国产91av视频在线观看| 亚洲警察之高压线| 国产精品精品软件视频| 伊人久久大香线蕉综合影院首页| 8x海外华人永久免费日韩内陆视频| 欧美成人hd| 国产香蕉97碰碰久久人人| 亚洲精品一区二区口爆| 欧美精品1区2区| 日本成人一级片| 欧美性猛交xxxx免费看久久久| 日韩精品一区二区亚洲av性色| 91啪亚洲精品| 亚洲一级Av无码毛片久久精品| 久久机这里只有精品| 久久久久久久久久久免费视频| 国产中文一区| 日本精品福利视频| 欧美激情理论| 色一情一乱一伦一区二区三欧美| 欧美国产不卡| 精品一区二区国产| 成人搞黄视频| 国产精品10p综合二区| 久久综合给合| 亚洲a∨日韩av高清在线观看| 欧美极品在线| 国产精品久久久久久中文字| 蜜臀国产一区| 国产精品白丝jk喷水视频一区| 蜜桃视频www网站在线观看| 欧美国产在线电影| 污污的网站在线看| 另类视频在线观看| 污视频网站免费在线观看| 久久精品一本久久99精品| 青青影院在线观看| 久久国产一区二区三区| 日本福利专区在线观看| 色妞色视频一区二区三区四区| 午夜视频在线免费观看| 中文字幕精品一区二区精品| 99中文字幕一区| 日韩视频精品在线| 四虎av在线| 久久免费少妇高潮久久精品99| 黄色影院在线看| 午夜精品久久久久久久99热浪潮| 国产三线在线| 欧美一级淫片播放口| 亚洲第一影院| 成人国产精品av| 欧美1区2区3| 国产精品久久久久久久天堂第1集 国产精品久久久久久久免费大片 国产精品久久久久久久久婷婷 | 久久电影天堂| 亚洲伊人一本大道中文字幕| 日韩免费一级| 精品国产一区二区三区麻豆小说| 欧洲精品一区| 日韩av一区二区三区美女毛片| 日韩欧美精品| www.日本三级| 久久中文精品| 欧美成人手机在线视频| 福利一区二区在线| 实拍女处破www免费看| 国产精品热久久久久夜色精品三区 | 久久97精品久久久久久久不卡| av在线不卡免费| 国产福利视频一区二区| 亚洲综合视频| 久久人人九九| 99久久www免费| 久在线观看视频| 久久精品国产久精国产爱| 91精品人妻一区二区三区蜜桃2 | 久久综合色一本| 色喇叭免费久久综合网| 青青在线免费观看| 麻豆成人免费电影| www国产视频| 国产精品国产自产拍高清av| 欧美成人免费看| 欧美在线免费播放| 性一交一乱一伧老太| 亚洲欧洲在线免费| 黄色美女视频在线观看| 国产精品久久久久77777| 亚洲欧美日本国产| 日韩一区二区三区资源| 精品二区久久| 看看黄色一级片| 久久综合狠狠综合久久激情 | 波多野结衣在线影院| 欧美高清在线观看| 欧美韩国日本| 欧美一级二级三级九九九| 中文字幕一区二区精品区| 国产精品wwwww| 不卡区在线中文字幕| 国产又色又爽又高潮免费| 欧美性猛xxx| 成人毛片在线精品国产| 日韩中文字幕免费看| av日韩电影| 精品1区2区| 好吊一区二区三区| 四虎1515hh.com| 中文字幕在线不卡国产视频| 中文字幕69页| 亚洲福利在线观看| 天天色天天射天天综合网| 国产精品永久免费在线| 精品一区在线| 欧美网站免费观看| 成人h精品动漫一区二区三区| 国产色无码精品视频国产| 欧美日韩美少妇| 国产高清自拍视频在线观看| 久久免费精品日本久久中文字幕| 欧美午夜在线播放| 中文字幕乱码一区二区三区| 丝袜美腿亚洲一区二区图片| 成人性生活免费看| 亚洲成人黄色影院| 亚洲精品一区二区三区四区| 久久在精品线影院精品国产| 少妇高潮一区二区三区99| 亚洲成人网上| 青草国产精品久久久久久| 日韩在线免费观看av| 欧美三级免费观看| 日本一区视频| 日韩免费观看视频| 精品午夜久久| 中文字幕有码av| 国产精品免费久久| 91丨九色丨丰满| 久久中文字幕一区| 亚洲国产一区二区三区网站| 日本中文字幕一级片| 国产v综合v亚洲欧| 中文在线观看免费网站| 亚洲精品不卡在线| 日韩大片欧美大片| 亚洲黄色成人久久久| 久久精品国产亚洲aⅴ| 神马午夜精品91| 欧美岛国在线观看| 电影在线观看一区| 秋霞毛片久久久久久久久| 日韩电影在线观看网站| 一级片黄色录像| 欧美一区二区三区婷婷月色 | 久久精品国产亚洲夜色av网站| 在线黄色免费看| 夜夜嗨av一区二区三区| 特黄aaaaaaaaa真人毛片| 日本精品免费观看| 91欧美日韩| 免费不卡的av| 色噜噜狠狠成人网p站| 日韩子在线观看| 国产欧美日韩综合一区在线观看 | 亚洲精品视频一区| 欧美自拍偷拍一区二区| 国产97色在线| 我不卡伦不卡影院| 超碰97在线资源站| 欧美色老头old∨ideo| 在线观看av免费| 欧美精品二区三区四区免费看视频 | 色呦色呦色精品| 亚洲国产成人av好男人在线观看| 欧美一区二区三区少妇| 91九色国产社区在线观看| 亚洲国产清纯| 天堂а√在线中文在线鲁大师| 欧美变态tickling挠脚心| 成人性教育av免费网址| 手机成人av在线| 91免费观看国产| aaa级黄色片| 日本精品久久久久影院| 午夜国产精品视频| 性猛交娇小69hd| 欧美精品一区二区三区视频| 欧美日韩国产网站| av在线播放亚洲| 成人欧美一区二区三区在线播放|