国产秋霞理论久久久电影-婷婷色九月综合激情丁香-欧美在线观看乱妇视频-精品国avA久久久久久久-国产乱码精品一区二区三区亚洲人-欧美熟妇一区二区三区蜜桃视频

Node.js 中的 require 是如何工作的?

共 8050字,需瀏覽 17分鐘

 ·

2020-09-26 06:42

作者:FESKY 鏈接:https://juejin.im/post/6844903957752463374

作為前端開(kāi)發(fā)者,不可避免每天都要跟?Node.js?打交道。Node?遵循?Commonjs?規(guī)范,規(guī)范的核心是通過(guò)?require?來(lái)加載依賴的其他模塊。我們已經(jīng)常習(xí)慣于使用社區(qū)提供的各種庫(kù),但對(duì)于模塊引用的背后原理知之甚少。這篇文章通過(guò)源碼閱讀,淺析在?commonjs?規(guī)范中?require?背后的工作原理。

require 從哪里來(lái)?

大家都知道,在?node js?的模塊/文件中,有些“全局”變量是可以直接使用的,比如?require, module, __dirname, __filename, exports。其實(shí)這些變量或方法并不是“全局”的,而是在?commonjs?模塊加載中, 通過(guò)包裹的形式,提供的局部變量。

module.exports?=?function?()?{
????console.log(__dirname);
}

經(jīng)過(guò)?compile?之后,就有了?module,__dirname?等變量可以直接使用。

(function?(exports,?require,?module,?__filename,?__dirname)?{
????module.exports?=?function?()?{
????????console.log(__dirname);
????}
})

這也可以很好解答初學(xué)者常常會(huì)困惑的問(wèn)題,為什么給?exports?賦值,require?之后得到的結(jié)果是?undefined?

//?直接給?exports?賦值是不會(huì)生效的
(function?(exports,?module)?{
????exports?=?function?()?{
????}
})(m.exports,?m)

return?m.exports;

直接賦值只是修改了局部變臉?exports?的值。最終?export?出去的?module.exports沒(méi)有被賦值。

require 的查找過(guò)程

文檔中描述得非常清楚,簡(jiǎn)化版?require?模塊的查找過(guò)程如下:在?Y?路徑下,require(X)

  1. 如果X是內(nèi)置模塊(http, fs, path 等), 直接返回內(nèi)置模塊,不再執(zhí)行
  2. 如果 X 以 '/' 開(kāi)頭,把 Y 設(shè)置為文件系統(tǒng)根目錄
  3. 如果 X 以 './', '/', '../' 開(kāi)頭 a. 按照文件的形式加載(Y + X),根據(jù) extensions 依次嘗試加載文件 [X, X.js, X.json, X.node] 如果存在就返回該文件,不再繼續(xù)執(zhí)行。b. 按照文件夾的形式加載(Y + X),如果存在就返回該文件,不再繼續(xù)執(zhí)行,若找不到將拋出錯(cuò)誤 a. 嘗試解析路徑下 package.json main 字段 b. 嘗試加載路徑下的 index 文件(index.js, index.json, index.node)
  4. 搜索 NODE_MODULE,若存在就返回模塊 a. 從路徑 Y 開(kāi)始,一層層往上找,嘗試加載(路徑 + 'node_modules/' + X) b. 在 GLOBAL_FOLDERS node_modules 目錄中查找 X
  5. 拋出 "Not Found" Error 復(fù)制代碼例如在?/Users/helkyle/projects/learning-module/foo.js` 中 require('bar') 將會(huì)從`/Users/helkyle/projects/learning-module/?開(kāi)始逐層往上查找bar?模塊(不是以?'./', '/', '../'?開(kāi)頭)。
'/Users/helkyle/projects/learning-module/node_modules',
'/Users/helkyle/projects/node_modules',
'/Users/helkyle/node_modules',
'/Users/node_modules',
'/node_modules'

需要注意的是,在使用?npm link?功能的時(shí)候,被?link?模塊內(nèi)的?require?會(huì)以被?link?模塊在文件系統(tǒng)中的絕對(duì)路徑進(jìn)行查找,而不是?main module?所在的路徑。舉個(gè)例子,假設(shè)有兩個(gè)模塊。

/usr/lib/foo
/usr/lib/bar

通過(guò)?link?形式在?foo?模塊中?link bar,會(huì)產(chǎn)生軟連?/usr/lib/foo/node_modules/bar?指向?/usr/lib/bar,這種情況下?bar?模塊下?require('quux')?的查找路徑是?/usr/lib/bar/node_modules/而不是?/usr/lib/foo/node_modules我之前踩過(guò)的坑

Cache 機(jī)制

在實(shí)踐過(guò)程中能了解到,實(shí)際上?Node module require?的過(guò)程會(huì)有緩存。也就是兩次?require?同一個(gè)?module會(huì)得到一樣的結(jié)果。

//?a.js
module.exports?=?{
????foo:?1,
};

//?b.js
const?a1?=?require('./a.js');
a1.foo?=?2;

const?a2?=?require('./a.js');

console.log(a2.foo);?//?2
console.log(a1?===?a2);?//?true

執(zhí)行?node b.js,可以看到,第二次?require a.js?跟第一次?require?得到的是相同的模塊引用。從源碼上看,require?是對(duì)?module?常用方法的封裝。

function?makeRequireFunction(mod,?redirects)?{
??const?Module?=?mod.constructor;

??let?require;
??//?簡(jiǎn)化其他代碼
??require?=?function?require(path)?{
????return?mod.require(path);
??};

??function?resolve(request,?options)?{
????validateString(request,?'request');
????return?Module._resolveFilename(request,?mod,?false,?options);
??}

??require.resolve?=?resolve;

??function?paths(request)?{
????validateString(request,?'request');
????return?Module._resolveLookupPaths(request,?mod);
??}

??resolve.paths?=?paths;
??require.main?=?process.mainModule;
??require.extensions?=?Module._extensions;
??require.cache?=?Module._cache;

??return?require;
}

跟蹤代碼看到,require()?最終調(diào)用的是?Module._load?方法:// 忽略代碼,看看?load?的過(guò)程發(fā)生了什么?

Module._load?=?function(request,?parent,?isMain)?{
??//?調(diào)用?_resolveFilename?獲得模塊絕對(duì)路徑
??const?filename?=?Module._resolveFilename(request,?parent,?isMain);

??const?cachedModule?=?Module._cache[filename];
??if?(cachedModule?!==?undefined)?{
????//?如果存在緩存,直接返回緩存的?exports?對(duì)象
????return?cachedModule.exports;
??}
??//?內(nèi)建模塊直接返回
??const?mod?=?loadNativeModule(filename,?request,?experimentalModules);
??if?(mod?&&?mod.canBeRequiredByUsers)?return?mod.exports;

??//?創(chuàng)建新的?module?對(duì)象
??const?module?=?new?Module(filename,?parent);

??//?main?module?特殊處理
??if?(isMain)?{
????process.mainModule?=?module;
????module.id?=?'.';
??}
??//?緩存?module
??Module._cache[filename]?=?module;
??
??//?返回?module?exports?對(duì)象
??return?module.exports;
};

到這里,module cache?的原理也很清晰,模塊在首次加載后,會(huì)以模塊絕對(duì)路徑為?key?緩存在?Module._cache屬性上,再次?require?時(shí)會(huì)直接返回已緩存的結(jié)果以提高 效率。在控制臺(tái)打印?require.cache?看看。

//?b.js
require('./a.js');
require('./a.js');

console.log(require.cache);

緩存中有兩個(gè)key,分別是?a.js, b.js?文件在系統(tǒng)中的絕對(duì)路徑。value?則是對(duì)應(yīng)模塊?load?之后的?module?對(duì)象。所以第二次?require('./a.js')?的結(jié)果是?require.cache['/Users/helkyle/projects/learning-module/a.js'].exports?和第一次?require?指向的是同一個(gè)?Object。

{?
????'/Users/helkyle/projects/learning-module/b.js':?
???????Module?{
?????????id:?'.',
?????????exports:?{},
?????????parent:?null,
?????????filename:?'/Users/helkyle/projects/learning-module/b.js',
?????????loaded:?false,
?????????children:?[?[Object]?],
?????????paths:?
??????????[?'/Users/helkyle/projects/learning-module/node_modules',
????????????'/Users/helkyle/projects/node_modules',
????????????'/Users/helkyle/node_modules',
????????????'/Users/node_modules',
????????????'/node_modules'?]?},
??'/Users/helkyle/projects/learning-module/a.js':?
???????Module?{
?????????id:?'/Users/helkyle/projects/learning-module/a.js',
?????????exports:?{?foo:?1?},
?????????parent:?
??????????Module?{
????????????id:?'.',
????????????exports:?{},
????????????parent:?null,
????????????filename:?'/Users/helkyle/projects/learning-module/b.js',
????????????loaded:?false,
????????????children:?[Array],
????????????paths:?[Array]?},
?????????filename:?'/Users/helkyle/projects/learning-module/a.js',
?????????loaded:?true,
?????????children:?[],
?????????paths:?[?
????????????'/Users/helkyle/projects/learning-module/node_modules',
????????????'/Users/helkyle/projects/node_modules',
????????????'/Users/helkyle/node_modules',
????????????'/Users/node_modules',
????????????'/node_modules'?
????????]
???}
}

應(yīng)用——實(shí)現(xiàn) Jest 的 mock module 效果

jest??是 Facebook 開(kāi)源的前端測(cè)試庫(kù),提供了很多非常強(qiáng)大又實(shí)用的功能。mock module?是其中非常搶眼的特性。使用方式是在需要被 mock 的文件模塊同級(jí)目錄下的?__mock__?文件夾添加同名文件,執(zhí)行測(cè)試代碼時(shí)運(yùn)行?jest.mock(modulePath),jest?會(huì)自動(dòng)加載?mock?版本的?module。舉個(gè)例子,項(xiàng)目中有個(gè) apis 文件,提供對(duì)接后端 api。

//?/projects/foo/apis.js
module.export?=?{
????getUsers:?()?=>?fetch('api/users')
};

在跑測(cè)試過(guò)程中,不希望它真的連接后端請(qǐng)求。這時(shí)候根據(jù) jest 文檔,在 apis 文件同級(jí)目錄創(chuàng)建?mock file

//?/projects/foo/__mock__/apis.js
module.exports?=?{
????getUsers:?()?=>?[
????????{
????????????id:?"1",
????????????name:?"Helkyle"
????????},
????????{
????????????id:?"2",
????????????name:?"Chinuketsu"
????????}
????]
}

測(cè)試文件中,主動(dòng)調(diào)用 jest.mock('./apis.js') 即可。

jest.mock('./apis.js');
const?apis?=?require('./apis.js');

apis.getUsers()
??.then((users)?=>?{
????console.log(users);
????//?[?{?id:?'1',?name:?'Helkyle'?},?{?id:?'2',?name:?'Chinuketsu'?}?]
??})

了解?require?的基礎(chǔ)原理之后,我們也來(lái)實(shí)現(xiàn)類似的功能,將加載 api.js 的語(yǔ)句改寫(xiě)成加載?mock/api.js。

使用 require.cache

由于緩存機(jī)制的存在,提前寫(xiě)入目標(biāo)緩存,再次 require 將得到我們期望的結(jié)果。

//?提前 require mock apis 文件,產(chǎn)生緩存。
require('./__mock__/apis.js');

//?給即將 require 的文件路徑寫(xiě)入緩存
const?originalPath?=?require.resolve('./apis.js');
require.cache[originalPath]?=?require.cache[require.resolve('./__mock__/apis.js')];

//?得到的將是緩存版本
const?apis?=?require('./apis.js');

apis.getUsers()
??.then((users)?=>?{
????console.log(users);
????//?[?{?id:?'1',?name:?'Helkyle'?},?{?id:?'2',?name:?'Chinuketsu'?}?]
??})

魔改 module._load

基于?require.cache?的方式,需要提前?require mock module。?提到了,由于最終都是通過(guò)?Module._load來(lái)加載模塊,在這個(gè)位置進(jìn)行攔截即可完成按需?mock

const?Module?=?require('module');
const?originalLoad?=?Module._load;

Module._load?=?function?(path,?...rest)?{
??if?(path?===?'./apis.js')?{
????path?=?'./__mock__/apis.js';
??}
??return?originalLoad.apply(Module,?[path,?...rest]);
}

const?apis?=?require('./apis.js');
apis.getUsers()
??.then((users)?=>?{
????console.log(users);
??})

注意:以上內(nèi)容僅供參考。從實(shí)際運(yùn)行結(jié)果上看,Jest?有自己實(shí)現(xiàn)的模塊加載機(jī)制,跟?commonjs?有出入。比如在?jest?中?require module?并不會(huì)寫(xiě)入?require.cache。

程序啟動(dòng)時(shí)的?require

查閱?Node?文檔發(fā)現(xiàn),在?Command Line?章節(jié)也有一個(gè)?--require?,使用這個(gè)參數(shù)可以在執(zhí)行業(yè)務(wù)代碼之前預(yù)先加載特定模塊。舉個(gè)例子,編寫(xiě)?setup?文件,往?global?對(duì)象上掛載?it,?assert?等方法。

//?setup.js
global.it?=?async?function?test(title,?callback)?{
??try?{
????await?callback();
????console.log(`??${title}`);
??}?catch?(error)?{
????console.error(`??${title}`);
????console.error(error);
??}
}
global.assert?=?require('assert');

給啟動(dòng)代碼添加?--require?參數(shù)。引入?global.assert,?global.it,就可以在代碼中直接使用?assert, it?不用在測(cè)試文件中引入。

node?--require?'./setup.js'?foo.test.js
//?foo.test.js
//?不需要?require('assert');
function?sum?(a,?b)?{
????return?a?+?b;
}

//?沒(méi)有?--require 會(huì)報(bào) it is not defined
it('add?two?numbers',?()?=>?{
????assert(sum(2,?3)?===?5);
})
- END -



分享前端好文,點(diǎn)亮?在看



瀏覽 58
點(diǎn)贊
評(píng)論
收藏
分享

手機(jī)掃一掃分享

分享
舉報(bào)
評(píng)論
圖片
表情
推薦
點(diǎn)贊
評(píng)論
收藏
分享

手機(jī)掃一掃分享

分享
舉報(bào)

感谢您访问我们的网站,您可能还对以下资源感兴趣:

国产秋霞理论久久久电影-婷婷色九月综合激情丁香-欧美在线观看乱妇视频-精品国avA久久久久久久-国产乱码精品一区二区三区亚洲人-欧美熟妇一区二区三区蜜桃视频 日本不卡一区二区三区| 日韩中文字幕永久| 亚洲综合网站| 91av成人| 国产美女av| 色五月婷婷久久| 三级AV在线观看| 996热久久| 亚洲综合五月天婷婷丁香| 亚洲性爱中文字幕| 欧美亚洲日韩中文字幕| 成人精品视频在线| 色天堂污| 激情小说在线观看| 北条麻妃无码视频在线| 欧美久久电影| 强奸校花到高潮| 亚洲第一影院| 在线观看亚洲天堂| wwwxxx18| 依人综合网| 亚洲无码性爱视频| 日韩高清成人无码| 日逼免费| 成人性爱视频免费在线观看| 国产精品一品二区三区的使用体验| 男女拍拍视频| 国产AV天堂| 岛国精品在线播放| 国产精品卡一卡二| 亚洲香蕉在线视频| 丁香五月网站| 夜夜夜叫天天天做| 成人做爱免费网站| 99色网站| 亚洲二级片| 国产美女高潮视频| 精品乱子伦一区二区三区在线播放 | 91免费福利视频| 玖玖色资源| 52妺嘿嘿午夜福利在线| 欧美一区三区视频z| 天天干夜夜骑| 伊人天天日| 国产欧美综合三级伦| 午夜精品久久久久久久久无码99热| 中文字幕乱伦| 高清无码视频免费观看| 日韩成人在线观看视频| 久久久久久无码精品亚洲日韩麻豆| 国产麻豆精品成人毛片| a无码视频在线观看| 操小嫩逼视频| AAA精品| 日韩av在线看| 拍拍拍免费视频| 亚洲护士无码| 久久午夜无码鲁丝午夜精品| 中国黄色一级A片| 国产女人免费| 亚洲成人中文字幕在线| 国产美女一级特黄大片| 国产精品HongKong麻豆| 女神思瑞精品一区二区三区| 五丁香在线观看AV| 91在线视频| 欧美黄色电影在线观看| 蜜桃视频一区二区三区| 亚洲免费视频在线观看| 欧美无人区码suv| 日韩一页| 国产精品电影| 天天干天天插| 国产一级a| 日韩国产欧美| 亚洲18禁| 亚洲熟女一区二区三区妖精 | 国产女人在线观看| 日韩在观看线| 美国久久久| 蜜桃av秘无码一区二区三区| 久久黄网| 一级免费视频| 一级片免费| 中文字幕在线观看一区| 午夜福利无码视频| 天天爽夜夜爽夜夜爽精品视频| 久操大香蕉| 亚洲高清中文字幕| 日韩精品欧美一区二区三区| 欧美激情四射老司机| 国产美女精品久久AV爽| 成人精东影业JDAV3密友| 日韩人妻无码专区一区二区| 国精产品秘一区二区| 亚洲AV自拍| 亚洲无码三级片在线观看| 亚洲国产成人va| 五月天无码av| 日本天堂网站| 狠狠艹狠狠干| 亚洲天堂在线观看免费视频| 91精品国产一区二区三区| 日本a在线免费观看| 2019国产精品| 日韩在线视频一区二区三区| 久久久夜夜夜| 成人三级片免费| 国产亚洲精品久久久久动| 97人人草| 激情综合五月天| 影音先锋男人站| 俺来也俺去也| 国产高清视频| 亚洲va综合va国产va中文| 国产AV日韩AⅤ亚洲AV中文| 九九色色| 亚洲成人在线视频免费观看| 欧美级黑寡妇毛片app| wwwwww黄| 一线毛片| 中文字幕久热| 日本親子亂子倫XXXX50路 | 在线观看中文字幕一区| 成人777777免费视频色| 日日摸夜夜| 成人黄色视频网站在线观看| 黄色a视频| 翔田千里AV在线| 亚洲网站在线| 久久肏| 国产18欠欠欠一区二区| 九九色在线视频| 中文字幕+乱码+中文字幕一区| 亚洲天堂国产视频| 亚洲乱码一区二区三区| 91色秘乱码一区二区| 啪啪视频最新地址发布页| 三级片网站大全| 亚洲玖玖爱| 日韩人妻精品中文字幕免费| 欧美激情四射老司机| 夜夜爽夜夜高潮夜夜爽| 国产精品2| 人人操人人爽人人妻| 国产精品一区二区在线观看| 波多野结衣久久中文字幕| 北岛玲在线视频| 日韩国产高清无码| 亚洲AV无码乱码精品| 色就是色欧美成人网| 欧美在线观看网站18| 午夜激情操一操| 日韩黄色电影视频| 99黄片| 99免费在线观看视频| 亚洲欧美一区二区三区在线| www.狠狠操| 国产一级a毛一级a毛片视频黑人| AV中文在线| 欧洲黑人成人A版免费视频| 翔田千里在线一区二区三区| 在线观看中文字幕一区| 久久国产精品免费视频| 凹凸熟女凹凸BBWBBW| www.超碰在线| 久久精品99| 影音先锋av色| 538在线观看| 日本电影一区二区三区| a视频| 大香蕉网视频| 操逼的视频| 欧美精产国品一| 成人理论片| 北京熟妇搡BBBB搡BBBB| 六月丁香网| 丁香色婷婷| 4444操| 成人无码自拍| 中文字幕av久久爽爽| 丝瓜av| 99久久99久久精品免费看蜜桃| 亚洲无码视频免费观看| 人人爽亚洲AV人人爽AV人人片| 国产精品v欧美精品v日韩精品| 久久久精品网站| 婷婷五月丁香激情| 99视频网| 亚洲性夜夜天天天天天天| 男女一区| 国产肏屄| 五十路AV| 色五月激情| 午夜AV在线播放| 免费在线观看视频a| 超碰93| 国产三级片在线视频| 天天爽夜夜爽夜夜爽精品视频| 亚洲高潮| 夸克看成人片一级A片| 黄片免费播放| 久久久久久亚洲Av无码精品专口 | 国产一级二级三级久久久| 日韩无码精品一区二区三区| 操逼电影| 97精品视频| 精品人人操| 一级午夜福利| 四川少妇BBBB槡BBBB槡| 亚洲成人无码视频| 亚洲色人妻| yw尤物视频| 青青草在线播放| 久久婷婷视频| 日韩黄色视频在线观看| 日韩欧美在线中文字幕| 一区二区网站| 国产操逼网站| 亚洲国产色婷婷| 亚洲免费毛片| 九九热精品视频在线播放| 爱精品视频| 亚洲一二三四区| 国产欧美日韩一区二区三区| 91亚洲综合| 亚洲操逼逼| 嫩草在线精品| 欧美特级黄片| 久久久久亚洲AV无码网影音先锋| 亚洲AV网址| 18禁一区二区三区| 逼逼AV网站-日韩电影| 人人妻人人澡人人DⅤD| 黄在线| 男人天堂2024| 天天色天天色| 91无码人妻一区二区成人aⅴ| 欧美日韩小电影| 日韩精品无码一区二区三区| 国产精品永久久久久久久久久| 一级成人毛片| 国产美女啪啪视频| 日韩国无码| 蜜桃AV无码一区二区三区| 黄色毛片一级| 97国产精品视频| 日韩欧美国产高清91| 熟女一区| 91在线免费看| 2018天天日天天操| 337P人体美鮑高清| 亚洲天堂第一页| 色综合色综合色综合| 中文字幕在线永久| 久久久精品免费| 无码人妻一区二区三区免费n鬼沢 北京熟妇槡BBBB槡BBBB | 日日操夜夜爽| 国产在线一区二区三区四区| 成人一级黄色电影| 伊人影院在线看| 欧美一级一区| 久久久久三级| 中文字幕无码观看| 黄色视频一级| 香蕉日逼| 国产性交网站| www.re99| 黄片高清无码| 国产成人a亚洲精品www| 69Av视频| 日韩视频免费| 黄色a片在线观看| 一级a一级a爰片免费| 国产77777| 在线中文字幕第一页| 亚洲午夜在线| 青青草av| 中韩日美免费看的电影| 国产最新视频| 日韩AV毛| 国产又猛又黄又爽| 天天干天天添| 天天日天天综合| 亚洲专区中文字幕| 风情万种AV| 97超碰资源站| 久久天堂网| 国产特级毛片AAAAAA| 国产香蕉av| 在线观看a片| 久久电影精品| 91免费国产视频| 中文字幕无码毛片| 亚洲日产专区| caoporen| www,色婷婷| 玖玖色综合| 色九月婷婷| 青青草原网址| 亚洲欧洲久久电影| 三级91| 99久久99久久精品免费看小说。 | 天堂色播| 国内自拍青青| 亚洲成人免费在线| 无码三级在线观看| 日韩不卡在线| 91色| 乌克兰毛片| 婷婷五月天免费视频| 啪啪啪免费| 中文免费高清在线观看视频| 成人欧美精品| 在线观看亚洲视频| 蜜臀AV一区二区| 中国一级A片| 无码毛片在线观看| 岛国无码破解AV在线播放| 久久99精品国产麻豆婷婷洗澡| 亚洲欧美视频一区| 999精品视频| 久久大香蕉精品| 国产成人99久久亚洲综合精品 | 无码人妻丰满熟妇区蜜桃| 日韩欧美在线播放| 国产麻豆一区二区三区| 涩涩99| 日韩国产三级| 一级A爱爱| 色婷婷在线视频播放| 欧美特黄AAAAAAAAA片| 免费看a的网站| 亚洲国产毛片| 中文无码人妻少妇| 精品国产欧美| 中字一区人妻水多多| 欧美人妻中文字幕| 人妻少妇av中文字幕乱码牛牛| 丁香激情五月少妇| 免费操逼网站| 日韩视频久久| 亚洲无码播放| wwwAV在线观看| 国产小视频在线观看| 黄色A片免费视频| 最近中文字幕免费MV第一季歌词十 | 丁香五月欧美| 国产h在线播放| 大鸡巴在线观看| 亚洲午夜成人精品一区二区| 久久久久久久国产精品| 久精久久| 毛片一区二区| 尤物yw| 超碰亚洲| 我爱大香蕉| 91国产精品| 国产jizz| 欧美操B电影| 国产无遮挡又黄又爽又色| 午夜黄电影| 欧美一级婬片AAAAAA片| 中文字幕一区二区蜜桃| 国产成人ab| 国产成人精品a区在线观看| 欧美高清视频| 日韩潮喷| 日韩中文字幕久久| 日韩中文无码电影| 精品国产无码怀孕| 黄片欧美| 国产三级视频| 欧美特大黄| 天堂素人| 少妇高潮喷水| 中文字幕无码A片久久| 一级色情片| 操逼视频91| 另类在线| 天天操夜夜干| 人人操人人色| 四虎成人免费视频| 欧美黄色网视频| 日韩无码人妻一区二区| 国产性播放| 国产在线黄片| 婷婷色中文网| 欧美精产国品一二三产品动漫| 精品伊人| 国产久久免费视频| 国产综合av| 日本親子亂子倫XXXX| 国产怡红院| 久久大香蕉精品| 色玖玖| 欧美色噜噜| 国产精品免费麻豆| 国产AV黄色| 成人无码影院日韩,成人年…| 国产高潮视频| www.91AV| 欧洲肥胖BBBBBBBBBB| 亚欧免费视频| 欧美成人性爱影院| 亚洲综合中文| 性爱黄色视频| 日韩大码无码| 亚洲精品成a人在线观看| 一级黄在线观看| 国产在线激情视频| 国产一区二区电影| 国产美女网站| 亚洲免费中文字幕| 欧美亚洲视频在线观看| 日本中文字幕在线观看| av在线免费观看网站| 日韩无修正| 伊人亚洲综合| 国产精品高| 999精品视频在线| 国产人妻精品| 亚洲AV毛片成人精品网站| 蜜桃av| 免费在线观看黄视频| AV大全在线免费观看| 国产a片| 天天草天天撸| 国产精品麻豆视频| 中文字幕一区二区久久人妻| 成人免费乱码大片a毛片蜜芽| 亚洲第一中文字幕网| 超碰天天| 国产AV剧情| 免费在线黄片| 欧美日韩爱爱| 精品国产精品三级精品AV网址| 精品视频一区二区三区| 先锋资源在线视频| 婷婷五月天成人社区| 一级片A片| 国产乱伦中文字幕| 亚洲Av在线观看| 国产传媒在线观看| 日本中文字幕亚洲| 青草香蕉视频| 久久97| 国产精品91在线| 刘玥精品A片在线观看| 午夜看黄| 青青草成人网站| 全部在线A片免费播放| 怡红院AV| 日韩熟妇无码中文字慕| 日韩xxx视频| 高清无码视频网站| 在线观看无码av| 日韩无码2024| 操碰在线视频| 粉嫩av懂色av蜜臀av分享| 成人无码网站在线观看| 麻豆天美传媒AV果冻传媒| 无码一区二区视频| 91丨国产丨白浆| 国产最新在线视频| 一道本无吗一区| 欧美久久免费| 日韩精品免费一区二区在线观看 | 日韩操比视频| 中文字幕无码在线| 欧美午夜精品成人片在线播放| 精品在线播放视频| 操逼日韩欧美| 欧美群交在线| 男女黄网站| 九月婷婷综合| 亚洲日韩一区| 伊人久久av| 91瑟瑟| 国产免费av在线观看| 国产美女操逼| 亚洲中文字幕在线看| 97人妻精品一区二区三区软件 | 五月天干美女| www.俺来也| 波多野结衣大战黑人| 美女毛片网站| 九九热精品视频| 亚洲精品人妻在线| 国产精品久久久久久婷婷天堂| 国产毛片久久久久久国产毛片| 欧美性爱视频免费看| 在线日韩AV| 亚洲色图15| 人妻77777| 特级毛片| 亚洲污| 婷婷五月天电影网| 婷婷九月色| 日韩人妻精品无码久久| 精品成人一区二区三区| 久久九九电影| 粉嫩小泬BBBB免费看| 精品视频久久| 欧美成人精品欧美一级私黄| 婷婷五月成人| 996精品在线| 天天色天天日| 三级三级久久三级久久18| yw在线播放| 91国啪| 精品无码免费看专区| 日本色色视频| 特级婬片AAAAAAA级| 久久97人妻AⅤ无码一区| 91丨九色丨熟女老版| 99久久综合| 黄色片一级| 精品国产久久久久久| 日本成人不卡| 91激情在线| 国产精品一级片| 亚洲性爱一区二区| 日本韩国无码视频| 欧美a片在线看| 久久精品禁一区二区三区四区五区| 99视频网| 中文无码电影| 无码无卡| 精品人妻一区二区三区蜜桃| 青操AV| 五月婷婷综合网| 成人午夜毛片| 成人片免费看| 又黄又色的视频| 人妻丰满熟妇| 日本人人操人人摸| 精品中文字幕在线观看| 91麻豆精品91久久久ios版| 国产乱子伦一区二区三区在线观看| 日本黄在线看| 国产免费一区二区三区四区| 亚洲黄色视频网站| 中文字幕人妻丰满熟妇| 午夜啊啊啊| 日韩无码视频观看| 91ThePorn国产| 国产一级精品视频| 日本在线免费观看| 黄色国产av| 久久99人妻无码精品一区| 欧美久久久久久久| 免费看A片视频| 亚洲无吗在线视频| 欧美九九| 无码高清一区二区| 中文AV字幕| 91久久免费视频| 欧美亚洲成人在线观看| 97在线免费| 国产乱码精品一区二区三区的特点| 一区二区三区在线看| 日韩欧美成人电影| 成人做爰69片免费观看| 韩国三级HD久久精品HD| 日本精品在线播放| 天天日天天日天天操| 一级无码A片| 九九热毛片在线观看| 欧美丰满人妻免费视频人| 97香蕉久久国产超碰青草专区 | 国产高清精品在线| 天天日毛片| 超碰人人干| 亚洲精品内射| 天天日天天射天天操| 再深点好爽灬轻点久久国产| 激情五月伊人| 午夜精品久久久久久久91蜜桃| 色色网站视频| 伊人网站视频在线| 天天操天天操| 亚洲高清在线视频| 97人妻无码一区二区| 日本一级黄色| 三级AV在线观看| 蜜桃视频成人版网站| 久久99精品国产.久久久久| 亚洲秘无码一区二区三区胖子| 韩日在线| A级成人网站| 操操操影院| 特级婬片AAAAAAA级| 女同久久另类99精品国产91| 一级少女免费播放电视剧韩剧TV| 北条麻妃成人视频| 日日騒av无码| 国产骚逼视频| 无码av亚洲一区二区毛片公司| 91成人在线观看国产| 99香蕉视频| 无码精品一区二区三区同学聚会| 黄色成人网站在线| 欧美疯狂做受XXXXX高潮 | 黄片大全在线观看| 国产精品96久久久| 丁香五月社区| 囯产精品久久久久久久| 九九视频免费观看| 热久久伊人| 3d动漫精品一区二区三区在线观看| aaa在线观看| 成人精品一区二区无码| 野花Av| 国内精品人妻无码久久久影院蜜桃 | a免费视频| 久久国产精品久久| 337p大胆色噜噜噜噜噜| 欧美精品第一页| 蜜桃久久久亚洲精品| 麻豆md0049免费| 少妇厨房愉情理伦BD在线观看 | 久久久久久97电影院电影院无码| 熟女一区| 日本中文字幕在线观看| 少妇一区二区三区| 涩婷婷| 内射免费视频| caobi视频| 高清无码在线观看视频| 亚洲va国产va天堂va久久 | 男女拍拍拍拍| 九月丁香婷婷| 在线播放高清无码| 欧美AAA黄片| 一级a一级a爰片免费免免中国A片 一级一级a免一级a做免费线看内裤 | 丁香五月在线观看| 日韩无码视频一区| 国产自偷自拍| 天堂资源网| xxx综合网| 无码在线免费观看视频| 电影91久久久| 四川少妇搡bbbbb搡多人| 久久系列| 女人天堂AV| 91在线无码| 亚洲精品一区二区三区| 国产黄色片在线观看| 四川w搡BBB搡wBBB搡| 黄色www| 久久yzy| 亚洲精品一区二区三区| 午夜18视频在线观看| 青娱乐亚洲领先| 五月天成人社区| 亚洲欧美久久| 免费A级毛片| 北条麻妃无码视频| 国产成人精品八戒| 久久久久久国际四虎免费精品视频| 欧美国产日韩综合在线观看170 | 欧美性爱香蕉视频| 狠狠色AV| 久久久久久麻豆| 亚洲精品三级在线观看| 亚洲成人福利电影| 成人国产片| 啪啪视频m3u8| 欧美香蕉在线| 最近最火中文字幕mv歌词| 在线播放高清无码| 狠狠插网站| 777色色色| 国内自拍偷拍视频| 国产操逼的视频| 韩国三级av| 99热这里精品| 黄片一区二区三区| 精品69| 亚洲成人在线网站| 日韩成人中文字幕| 黄色电影免费在线观看| 青青操在线视频| 国产激情都市一区二区三区欧美| 久久av综合| 亚洲无人禁区| 国产免费黄色视频网站| 欧美一区二区三区成人| 91麻豆国产福利在线观看| 亚洲天堂在线免费| 日韩中文字幕av在线| NP玩烂了公用爽灌满视频播放| 九九精品热播| 亚洲黄色视频免费看| 西西4444WWW无码精品| 天天操免费视频| 黄色免费在线观看视频| 婷婷五月天久久| 午夜亚洲| 亚洲国产一区二区三区四区| 夜夜爽夜夜爽| 欧美a∨| 日本熟妇无码一区二区| 亚洲在线成人视频| 伦理被部长侵犯HD中字| 婷婷丁香五月社区亚洲| 97香蕉久久国产超碰青草专区| 操逼视频在线播放| 久久er| 朝鲜性感AV在线| 足交 | 亚洲AV黄片| 亚洲美女免费视频| 农村少妇久久久久久久| 国产AV中文字幕| 野花av| 黄色视频一区二区| jizz免费视频| 少妇性受XXXX黑人XYX性爽| 欧美成人电影在线观看| 在线免费观看网站| 91麻豆精品国产91久久久吃药 | 手机不卡黄色视频在线| 米奇电影777无码| 一级a黄色片| 大鸡吧操视频| 天天射夜夜操| 91秦先生在线播放| 无码高清一区| 天天做天天爱天天高潮| 中文字幕精品在线免费视频观看视频 | 怡红院一区二区| 97人人澡| 国产色呦呦| 人人干人人干人人| 亚洲日韩视频在线观看| 成人性生活A级毛片网站| 青青精品视频| 97免费在线观看视频| 人人操人人摸人人爽| 亚洲午夜免费视频| 91九色视频| 欧美日韩精品在线观看| 免费中文资源在线观看| 北岛玲视频在线| 精品在线播放视频| 亚洲秘av无码一区二区| 日逼精品| 国产熟妇码视频| 欧美怡春院| 成人日韩精品| 91无码精品国产AⅤ| 69式荫蒂被添全过程| 日韩久久电影| 天天干,夜夜操| 强奸校花到高潮| 色五月天激情| 大香蕉最新视频| 亚洲精品秘一区二区三小| 日韩成人网址| 午夜精东影业果冻传媒| 毛片在线看片| 99久久成人| 色色五月天视频| 国产在线高潮| 午夜探花| 秋霞精品一区二区三区| 日韩操逼av| 一区二区三区四区五区| 狠狠干中文字幕| 四虎国产| 天堂AV色| 91视频免费在线看| 97精品人妻一区二区| 成人久久网| 丁香五月中文字幕| 久久亚洲福利视频| 日韩视频在线观看一区| 日韩成人三级片| 国产精品国产三级国产专业不| 日韩无码一级| 日韩精品一区二区三区四在线播放| 操碰99| 欧美高潮视频| 中文字幕第12页| 看毛片网站| 国产一级A片视频| 91久久久青青青青草| 特级婬片AAAAAAA级| 一本道高清无码视频| 亚洲视频中文字母| 高清不卡一区二区| 视频一区二区三| 免费AV大全| 性欧美亚洲| 国产超级无码高清在线视频观看| 久久婷婷成人综合色怡春院| 你懂的在线观看视频| 亚洲av影院| 日韩精品成人在线视频| 亚洲无码AV在线观看| 福利毛片| 九九九九精品| 日本一级片中文字幕| 超碰成人在线免费观看| 欧美成人激情视频| 色婷婷久久| 中字幕视频在线永久在线观看免费 | 无码窝在线观看| 欧美精品99久久久| 亚洲午夜精品久久久久久APP| 麻豆一区在线| 91精品久久久久久久久| 无码人妻一区二区三区| 综合插插| 久久综合在线| 翔田AV无码秘三区| 国产精品国产精品国产| 操碰99| 围产精品久久久久久久| 五十路在线视频| 成人区色情综合小说| 伊人成人片| 久久免费国产视频| 色婷婷久久综合久色| 秋霞网一区二区| 国产成人精品无码| 国产Av一区二区三区| 女人A片一级黄色| 在线观看av资源| 日韩大香蕉在线| AV在线天堂| 黄片视频在线免费播放| 欧美成年人网站| 熟妇自拍| 最新久欠一区二区免费看| 亚洲精品观看| 国产精品视频福利| 成人小说视频在线社区| AV老鸭窝| 欧美成人免费电影| 成人网在线观看| 黄色毛片在线播放| 91久热| 国产精品久久久久野外| 在线观看黄片网站| 99久久精品国产一区二区三区 | 53岁露大奶熟女偷情贴吧| 久久精品成人| 国产欧美一区在线看| 欧美日韩肏屄视频| JLZZJLZZ亚洲女人| 91久久精品无码一区二区三区| 欧美成人精品网站| A片免费观看视频| 亚洲AV一二三区| 日韩高清无码不卡| 福利一区二区视频网| 97伊人超碰| 午夜精品久久久| 樱桃码一区二区三区| 国产aaaaaaaaaaaaa| 九九精品热播| 影音先锋三级| 97色色婷婷五月天| 日韩无码视频网站| 乱子伦国产精品| 午夜免费AV| 亚洲色图片区| 手机免费AV| 午夜福利sw| 日韩av中文| 东京热综合网| a亚洲a| 日韩大香蕉视频| 中文字幕乱码亚洲无线码在线日噜噜| 手机无码在线播放| 一插综合网| 男女av| 中文字幕北条麻妃| 人人干干| 97爱爱| 婷婷中文字幕亚洲| 成人亚洲视频| 韩国午夜电影| 欧美人成人无码| 在线观看欧美日韩| 欧美性之站| 曰曰摸日日碰| 国产无遮挡又黄又爽免费网站| 日本久久不卡| 97少妇| 91香蕉视频| 日韩欧美三级在线| 四虎欧美| AV天堂小说| 国产熟女一区| 国产成人aV| 三级影片在线观看性|