伊人久久大香线蕉综合影视_日韩精品少妇无码受不了_71pao成人国产永久免费视频_国产伦片中文免费观看_国产高清无码麻豆精品_九色综合伊人久久富二代_日韩黄色精品_日韩A∨精品日韩精品无码

初學者應該看的 Webpack 完整指南(2020)

2020-7-19    seo達人

我們應該學習 webpack 嗎 ?

如今,CLI工具(如create-react-app或Vue -cli)已經為我們抽象了大部分配置,并提供了合理的默認設置。


即使那樣,了解幕后工作原理還是有好處的,因為我們遲早需要對默認值進行一些調整。


在本文中中,我們會知道 webpack可以做什么,以及如何配置它以滿足我們的日常需求。


什么是 webpack?

作為前端開發(fā)人員,我們應該熟悉 module 概念。 你可能聽說過 AMD模塊,UMD,Common JS還有ES模塊。


webpack是一個模塊綁定器,它對模塊有一個更廣泛的定義,對于webpack來說,模塊是:


Common JS modules

AMD modules

CSS import

Images url

ES modules

webpack 還可以從這些模塊中獲取依賴關系。


webpack 的最終目標是將所有這些不同的源和模塊類型統(tǒng)一起來,從而將所有內容導入JavaScript代碼,并最生成可以運行的代碼。


entry

Webpack的 entry(入口點)是收集前端項目的所有依賴項的起點。 實際上,這是一個簡單的 JavaScript 文件。


這些依賴關系形成一個依賴關系圖。


Webpack 的默認入口點(從版本4開始)是src/index.js,它是可配置的。 webpack 可以有多個入口點。


Output

output是生成的JavaScript和靜態(tài)文件的地方。


Loaders

Loaders 是第三方擴展程序,可幫助webpack處理各種文件擴展名。 例如,CSS,圖像或txt文件。


Loaders的目標是在模塊中轉換文件(JavaScript以外的文件)。 文件成為模塊后,webpack可以將其用作項目中的依賴項。


Plugins

插件是第三方擴展,可以更改webpack的工作方式。 例如,有一些用于提取HTML,CSS或設置環(huán)境變量的插件。


Mode

webpack 有兩種操作模式:開發(fā)(development)和生產(production)。 它們之間的主要區(qū)別是生產模式自動生成一些優(yōu)化后的代碼。


Code splitting

代碼拆分或延遲加載是一種避免生成較大包的優(yōu)化技術。


通過代碼拆分,開發(fā)人員可以決定僅在響應某些用戶交互時加載整個JavaScript塊,比如單擊或路由更改(或其他條件)。


被拆分的一段代碼稱為 chunk。


Webpack入門

開始使用webpack時,先創(chuàng)建一個新文件夾,然后進入該文件中,初始化一個NPM項目,如下所示:


mkdir webpack-tutorial && cd $_


npm init -y

接著安裝 webpack,webpack-cli和 webpack-dev-server:


npm i webpack webpack-cli webpack-dev-server --save-dev

要運行 webpack,只需要在 package.json 配置如下命令即可:


 "scripts": {

   "dev": "webpack --mode development"

 },

通過這個腳本,我們指導webpack在開發(fā)模式下工作,方便在本地工作。


Webpack 的第一步

在開發(fā)模式下運行 webpack:


npm run dev

運行完后會看到如下錯誤:


ERROR in Entry module not found: Error: Can't resolve './src'

webpack 在這里尋找默認入口點src/index.js,所以我們需要手動創(chuàng)建一下,并輸入一些內容:


mkdir src


echo 'console.log("Hello webpack!")' > src/index.js

現在再次運行npm run dev,錯誤就沒有了。 運行的結果生成了一個名為dist/的新文件夾,其中包含一個名為main.js的 JS 文件:


dist

└── main.js

這是我們的第一個webpack包,也稱為output。


配置 Webpack

對于簡單的任務,webpack無需配置即可工作,但是很快我們就會遇到問題,一些文件如果沒有指定的 loader 是沒法打包的。所以,我們需要對 webpack進行配置,對于 webpack 的配置是在 webpack.config.js 進行的,所以我們需要創(chuàng)建該文件:


touch webpack.config.js

Webpack 用 JavaScript 編寫,并在無頭 JS 環(huán)境(例如Node.js)上運行。 在此文件中,至少需要一個module.exports,這是的 Common JS 導出方式:


module.exports = {

 //

};

在webpack.config.js中,我們可以通過添加或修改來改變webpack的行為方式


entry point

output

loaders

plugins

code splitting

例如,要更改入口路徑,我們可以這樣做


const path = require("path");


module.exports = {

 entry: { index: path.resolve(__dirname, "source", "index.js") }

};

現在,webpack 將在source/index.js中查找要加載的第一個文件。 要更改包的輸出路徑,我們可以這樣做:


const path = require("path");


module.exports = {

 output: {

   path: path.resolve(__dirname, "build")

 }

}

這樣,webpack將把最終生成包放在build中,而不是dist.(為了簡單起見,在本文中,我們使用默認配置)。


打包 HTML

沒有HTML頁面的Web應用程序幾乎沒有用。 要在webpack中使用 HTML,我們需要安裝一個插件html-webpack-plugin:


npm i html-webpack-plugin --save-dev

一旦插件安裝好,我們就可以對其進行配置:


const HtmlWebpackPlugin = require("html-webpack-plugin");

const path = require("path");


module.exports = {

 plugins: [

   new HtmlWebpackPlugin({

     template: path.resolve(__dirname, "src", "index.html")

   })

 ]

};

這里的意思是讓 webpack,從 src/index.html 加載 HTML 模板。


html-webpack-plugin的最終目標有兩個:


加載 html 文件

它將bundle注入到同一個文件中

接著,我們需要在 src/index.html 中創(chuàng)建一個簡單的 HTML 文件:


<!DOCTYPE html>

<html lang="en">

<head>

   <meta charset="UTF-8">

   <title>Webpack tutorial</title>

</head>

<body>


</body>

</html>

稍后,我們會運行這個程序。


webpack development server

在本文第一部分中,我們安裝了webpack-dev-server。如果你忘記安裝了,現在可以運行下面命令安裝一下:


npm i webpack-dev-server --save-dev

webpack-dev-server 可以讓開發(fā)更方便,不需要改動了文件就去手動刷新文件。 配置完成后,我們可以啟動本地服務器來提供文件。


要配置webpack-dev-server,請打開package.json并添加一個 “start” 命令:


"scripts": {

 "dev": "webpack --mode development",

 "start": "webpack-dev-server --mode development --open",

},

有了 start 命令,我們來跑一下:


npm start

運行后,默認瀏覽器應打開。 在瀏覽器的控制臺中,還應該看到一個 script 標簽,引入的是我們的 main.js。


clipboard.png


使用 webpack loader

Loader是第三方擴展程序,可幫助webpack處理各種文件擴展名。 例如,有用于 CSS,圖像或 txt 文件的加載程序。


下面是一些 loader 配置介紹:


module.exports = {

 module: {

   rules: [

     {

       test: /\.filename$/,

       use: ["loader-b", "loader-a"]

     }

   ]

 },

 //

};

相關配置以module 關鍵字開始。 在module內,我們在rules內配置每個加載程序組或單個加載程序。


對于我們想要作為模塊處理的每個文件,我們用test和use配置一個對象


{

   test: /\.filename$/,

   use: ["loader-b", "loader-a"]

}

test 告訴 webpack “嘿,將此文件名視為一個模塊”。 use 定義將哪些 loaders 應用于些打包的文件。


打包 CSS

要 在webpack 中打包CSS,我們需要至少安裝兩個 loader。Loader 對于幫助 webpack 了解如何處理.css文件是必不可少的。


要在 webpack 中測試 CSS,我們需要在 src 下創(chuàng)建一個style.css文件:


h1 {

   color: orange;

}

另外在 src/index.html 添加 h1 標簽


<!DOCTYPE html>

<html lang="en">

<head>

   <meta charset="UTF-8">

   <title>Webpack tutorial</title>

</head>

<body>

<h1>Hello webpack!</h1>

</body>

</html>

最后,在src/index.js 中加載 CSS:


在測試之前,我們需要安裝兩個 loader:


css-loader: 解析 css 代碼中的 url、@import語法像import和require一樣去處理css里面引入的模塊

style-loader:幫我們直接將css-loader解析后的內容掛載到html頁面當中

安裝 loader:


npm i css-loader style-loader --save-dev

然后在webpack.config.js中配置它們


const HtmlWebpackPlugin = require("html-webpack-plugin");

const path = require("path");


module.exports = {

 module: {

   rules: [

     {

       test: /\.css$/,

       use: ["style-loader", "css-loader"]

     }

   ]

 },

 plugins: [

   new HtmlWebpackPlugin({

     template: path.resolve(__dirname, "src", "index.html")

   })

 ]

};

現在,如果你運行npm start,會看到樣式表加載在HTML的頭部:


clipboard.png


一旦CSS Loader 就位,我們還可以使用MiniCssExtractPlugin提取CSS文件


Webpack Loader 順序很重要!

在webpack中,Loader 在配置中出現的順序非常重要。以下配置無效:


//


module.exports = {

 module: {

   rules: [

     {

       test: /\.css$/,

       use: ["css-loader", "style-loader"]

     }

   ]

 },

 //

};

此處,“style-loader”出現在 “css-loader” 之前。 但是style-loader用于在頁面中注入樣式,而不是用于加載實際的CSS文件。


相反,以下配置有效:


module.exports = {

 module: {

   rules: [

     {

       test: /\.css$/,

       use: ["style-loader", "css-loader"]

     }

   ]

 },

 //

};

webpack loaders 是從右到左執(zhí)行的。


打包 sass

要在 webpack 中測試sass,同樣,我們需要在 src 目錄下創(chuàng)建一個 style.scss 文件:


@import url("https://fonts.googleapis.com/css?family=Karla:weight@400;700&display=swap");


$font: "Karla", sans-serif;

$primary-color: #3e6f9e;


body {

 font-family: $font;

 color: $primary-color;

}

另外,在src/index.html中添加一些 Dom 元素:


<!DOCTYPE html>

<html lang="en">

<head>

   <meta charset="UTF-8">

   <title>Webpack tutorial</title>

</head>

<body>

 <h1>Hello webpack!</h1>

 <p>Hello sass!</p>

</body>

</html>

最后,將 sass 文件加載到src/index.js中:


import "./style.scss";

console.log("Hello webpack!");

在測試之前,我們需要安裝幾個 loader:


sass-loader:加載 SASS / SCSS 文件并將其編譯為 CSS

css-loader: 解析 css 代碼中的 url、@import語法像import和require一樣去處理css里面引入的模塊

style-loader:幫我們直接將css-loader解析后的內容掛載到html頁面當中

安裝 loader:


npm i css-loader style-loader sass-loader sass --save-dev

然后在webpack.config.js中配置它們:


const HtmlWebpackPlugin = require("html-webpack-plugin");

const path = require("path");


module.exports = {

 module: {

   rules: [

     {

       test: /\.scss$/,

       use: ["style-loader", "css-loader", "sass-loader"]

     }

   ]

 },

 plugins: [

   new HtmlWebpackPlugin({

     template: path.resolve(__dirname, "src", "index.html")

   })

 ]

};

注意loader的出現順序:首先是sass-loader,然后是css-loader,最后是style-loader。


現在,運行npm start,你應該會在HTML的頭部看到加載的樣式表:


clipboard.png


打包現代 JavaScrip

webpack 本身并不知道如何轉換JavaScript代碼。 該任務已外包給babel的第三方 loader,特別是babel-loader。


babel是一個JavaScript編譯器和“編譯器”。 babel 可以將現代JS(es6, es7...)轉換為可以在(幾乎)任何瀏覽器中運行的兼容代碼。


同樣,要使用它,我們需要安裝一些 Loader:


babel-core :把 js 代碼分析成 ast ,方便各個插件分析語法進行相應的處理

babel-preset-env:將現代 JS 編譯為ES5

babel-loader :用于 webpack

引入依賴關系


npm i @babel/core babel-loader @babel/preset-env --save-dev

接著,創(chuàng)建一個新文件babel.config.json配置babel,內容如下:


{

 "presets": [

   "@babel/preset-env"

 ]

}

最后在配置一下 webpack :


const HtmlWebpackPlugin = require("html-webpack-plugin");

const path = require("path");


module.exports = {

 module: {

   rules: [

     {

       test: /\.scss$/,

       use: ["style-loader", "css-loader", "sass-loader"]

     },

     {

       test: /\.js$/,

       exclude: /node_modules/,

       use: ["babel-loader"]

     }

   ]

 },

 plugins: [

   new HtmlWebpackPlugin({

     template: path.resolve(__dirname, "src", "index.html")

   })

 ]

};

要測試轉換,可以在 src/index.js中編寫一些現代語法:


import "./style.scss";

console.log("Hello webpack!");


const fancyFunc = () => {

 return [1, 2];

};


const [a, b] = fancyFunc();

現在運行npm run dev來查看dist中轉換后的代碼。 打開 dist/main.js并搜索“fancyFunc”:


\n\nvar fancyFunc = function fancyFunc() {\n return [1, 2];\n};\n\nvar _fancyFunc = fancyFunc(),\n _fancyFunc2 = _slicedToArray(_fancyFunc, 2),\n a = _fancyFunc2[0],\n b = _fancyFunc2[1];\n\n//# sourceURL=webpack:///./src/index.js?"

沒有babel,代碼將不會被轉譯:


\n\nconsole.log(\"Hello webpack!\");\n\nconst fancyFunc = () => {\n return [1, 2];\n};\n\nconst [a, b] = fancyFunc();\n\n\n//# sourceURL=webpack:///./src/index.js?");

注意:即使沒有babel,webpack也可以正常工作。 僅在執(zhí)行 ES5 代碼時才需要進行代碼轉換過程。


在 Webpack 中使用 JS 的模塊

webpack 將整個文件視為模塊。 但是,請不要忘記它的主要目的:加載ES模塊。


ECMAScript模塊(簡稱ES模塊)是一種JavaScript代碼重用的機制,于2015年推出,一經推出就受到前端開發(fā)者的喜愛。在2015之年,JavaScript 還沒有一個代碼重用的標準機制。多年來,人們對這方面的規(guī)范進行了很多嘗試,導致現在有多種模塊化的方式。


你可能聽說過AMD模塊,UMD,或CommonJS,這些沒有孰優(yōu)孰劣。最后,在ECMAScript 2015中,ES 模塊出現了。


我們現在有了一個“正式的”模塊系統(tǒng)。


要在 webpack 使用 ES module ,首先創(chuàng)建 src/common/usersAPI.js 文件:


const ENDPOINT = "https://jsonplaceholder.typicode.com/users/";


export function getUsers() {

 return fetch(ENDPOINT)

   .then(response => {

     if (!response.ok) throw Error(response.statusText);

     return response.json();

   })

   .then(json => json);

}

在 src/index.js中,引入上面的模塊:


import { getUsers } from "./common/usersAPI";

import "./style.scss";

console.log("Hello webpack!");


getUsers().then(json => console.log(json));

生產方式

如前所述,webpack有兩種操作模式:開發(fā)(development )和(production)。 到目前為止,我們僅在開發(fā)模式下工作。


在開發(fā)模式中,為了便于代碼調試方便我們快速定位錯誤,不會壓縮混淆源代碼。相反,在生產模式下,webpac k進行了許多優(yōu)化:


使用 TerserWebpackPlugin 進行縮小以減小 bundle 的大小

使用ModuleConcatenationPlugin提升作用域

在生產模式下配 置webpack,請打開 package.json 并添加一個“ build” 命令:


現在運行 npm run build,webpack 會生成一個壓縮的包。


Code splitting

代碼拆分(Code splitting)是指針對以下方面的優(yōu)化技術:


避免出現一個很大的 bundle

避免重復的依賴關系

webpack 社區(qū)考慮到應用程序的初始 bundle 的最大大小有一個限制:200KB。


在 webpack 中有三種激活 code splitting 的主要方法:


有多個入口點

使用 optimization.splitChunks 選項

動態(tài)導入

第一種基于多個入口點的技術適用于較小的項目,但是從長遠來看它是不可擴展的。這里我們只關注第二和第三種方式。


Code splitting 與 optimization.splitChunks

考慮一個使用Moment.js 的 JS 應用程序,Moment.js是流行的時間和日期JS庫。


在項目文件夾中安裝該庫:


npm i moment

現在清除src/index.js的內容,并引入 moment 庫:


import moment from "moment";

運行 npm run build 并查看控制的輸出內容:


main.js 350 KiB 0 [emitted] [big] main

整個 moment 庫都綁定到了 main.js 中這樣是不好的。借助optimization.splitChunks,我們可以從主包中移出moment.js。


要使用它,需要在 webpack.config.js 添加 optimization 選項:


const HtmlWebpackPlugin = require("html-webpack-plugin");

const path = require("path");


module.exports = {

 module: {

 // ...

 },

 optimization: {

   splitChunks: { chunks: "all" }

 },

 // ...

};

運行npm run build 并查看運行結果:


       main.js   5.05 KiB       0  [emitted]         main

vendors~main.js    346 KiB       1  [emitted]  [big]  vendors~main

現在,我們有了一個帶有moment.js 的vendors?main.js,而主入口點的大小更合理。


注意:即使進行代碼拆分,moment.js仍然是一個體積較大的庫。 有更好的選擇,如使用luxon或date-fns。


Code splitting 與 動態(tài)導入

Code splitting的一種更強大的技術使用動態(tài)導入來有條件地加載代碼。 在ECMAScript 2020中提供此功能之前,webpack 提供了動態(tài)導入。


這種方法在 Vue 和 React 之類的現代前端庫中得到了廣泛使用(React有其自己的方式,但是概念是相同的)。


Code splitting 可用于:


模塊級別

路由級別

例如,你可以有條件地加載一些 JavaScript 模塊,以響應用戶的交互(例如單擊或鼠標移動)。 或者,可以在響應路由更改時加載代碼的相關部分。


要使用動態(tài)導入,我們先清除src/index.html,并寫入下面的內容:


<!DOCTYPE html>

<html lang="en">

<head>

   <meta charset="UTF-8">

   <title>Dynamic imports</title>

</head>

<body>

<button id="btn">Load!</button>

</body>

</html>

在 src/common/usersAPI.js中:


const ENDPOINT = "https://jsonplaceholder.typicode.com/users/";


export function getUsers() {

 return fetch(ENDPOINT)

   .then(response => {

     if (!response.ok) throw Error(response.statusText);

     return response.json();

   })

   .then(json => json);

}

在 src/index.js 中


const btn = document.getElementById("btn");


btn.addEventListener("click", () => {

 //

});

如果運行npm run start查看并單擊界面中的按鈕,什么也不會發(fā)生。


現在想象一下,我們想在某人單擊按鈕后加載用戶列表。 “原生”的方法可以使用靜態(tài)導入從src/common /usersAPI.js加載函數:


import { getUsers } from "./common/usersAPI";


const btn = document.getElementById("btn");


btn.addEventListener("click", () => {

 getUsers().then(json => console.log(json));

});

問題在于ES模塊是靜態(tài)的,這意味著我們無法在運行時更改導入的內容。


通過動態(tài)導入,我們可以選擇何時加載代碼


const getUserModule = () => import("./common/usersAPI");


const btn = document.getElementById("btn");


btn.addEventListener("click", () => {

 getUserModule().then(({ getUsers }) => {

   getUsers().then(json => console.log(json));

 });

});

這里我們創(chuàng)建一個函數來動態(tài)加載模塊


const getUserModule = () => import("./common/usersAPI");

現在,當你第一次使用npm run start加載頁面時,會看到控制臺中已加載 js 包:


clipboard.png


現在,僅在單擊按鈕時才加載/common/usersAPI:


clipboard.png


對應的 chunk 是 0.js


通過在導入路徑前面加上魔法注釋/ * webpackChunkName:“ name_here” * /,可以更改塊名稱:


const getUserModule = () =>

 import(/* webpackChunkName: "usersAPI" */ "./common/usersAPI");


const btn = document.getElementById("btn");


btn.addEventListener("click", () => {

 getUserModule().then(({ getUsers }) => {

   getUsers().then(json => console.log(json));

 });

});

藍藍設計www.cqzjtgb.com )是一家專注而深入的界面設計公司,為期望卓越的國內外企業(yè)提供卓越的UI界面設計、BS界面設計 、 cs界面設計 、 ipad界面設計 、 包裝設計 、 圖標定制 、 用戶體驗 、交互設計、 網站建設 、平面設計服務

日歷

鏈接

個人資料

藍藍設計的小編 http://www.cqzjtgb.com

存檔

www.熟女人妻精品国产| 好看av亚洲va欧美ⅴa在| 国产亚洲精品久久久久久毛片 | 久久久久久久精品吃奶| 国产97色在线日韩免费| 在线观看免费高清a一片| 麻豆成人av在线观看| 午夜影院日韩av| 亚洲av日韩精品久久久久久密| 制服诱惑二区| 亚洲情色 制服丝袜| 欧美精品亚洲一区二区| 久久国产乱子伦精品免费另类| 亚洲中文av在线| 后天国语完整版免费观看| 欧美精品av麻豆av| 一边摸一边抽搐一进一出视频| 久久久国产欧美日韩av| 99国产综合亚洲精品| 99热国产这里只有精品6| 久久久久久久久免费视频了| 又紧又爽又黄一区二区| 国产蜜桃级精品一区二区三区 | 在线观看www视频免费| 国产免费av片在线观看野外av| 亚洲国产精品一区二区三区在线| 91麻豆av在线| 女性被躁到高潮视频| tube8黄色片| 国产精品自产拍在线观看55亚洲 | 国产xxxxx性猛交| 中文字幕人妻丝袜制服| 日韩一卡2卡3卡4卡2021年| 王馨瑶露胸无遮挡在线观看| 日韩制服丝袜自拍偷拍| 午夜福利在线免费观看网站| av片东京热男人的天堂| 一本综合久久免费| tube8黄色片| 香蕉丝袜av| 色婷婷av一区二区三区视频| 美国免费a级毛片| 97人妻天天添夜夜摸| 久久精品国产a三级三级三级| 国产成人系列免费观看| 亚洲av美国av| 天堂√8在线中文| 国产视频一区二区在线看| 久久国产乱子伦精品免费另类| 久久久久精品人妻al黑| 一级片免费观看大全| 99久久精品国产亚洲精品| 怎么达到女性高潮| 超碰成人久久| 成人国产一区最新在线观看| 欧美黄色片欧美黄色片| 亚洲黑人精品在线| 成人国语在线视频| 自拍欧美九色日韩亚洲蝌蚪91| 国产在线精品亚洲第一网站| 久久精品国产综合久久久| 亚洲精品中文字幕在线视频| 久久久国产欧美日韩av| 精品久久久久久,| 中文字幕人妻丝袜一区二区| 日韩人妻精品一区2区三区| 无人区码免费观看不卡| 亚洲情色 制服丝袜| 欧美乱色亚洲激情| 99国产极品粉嫩在线观看| 久久精品国产清高在天天线| 精品人妻熟女毛片av久久网站| 亚洲av熟女| 一区在线观看完整版| 狂野欧美激情性xxxx| 亚洲在线自拍视频| 欧美日韩精品网址| 免费看a级黄色片| 日韩精品免费视频一区二区三区| 99国产精品免费福利视频| 人妻一区二区av| 国产亚洲欧美在线一区二区| 女性生殖器流出的白浆| 在线看a的网站| 亚洲五月婷婷丁香| 国产成人免费观看mmmm| 国产精品久久电影中文字幕 | 老熟妇乱子伦视频在线观看| 不卡av一区二区三区| 日本黄色视频三级网站网址 | 国产麻豆69| 亚洲情色 制服丝袜| 国产精品久久久久成人av| 精品亚洲成a人片在线观看| 少妇裸体淫交视频免费看高清 | 亚洲情色 制服丝袜| 999精品在线视频| 美女高潮到喷水免费观看| 热99re8久久精品国产| 真人做人爱边吃奶动态| 免费少妇av软件| 99国产精品一区二区蜜桃av | 亚洲中文av在线| 免费不卡黄色视频| 亚洲国产精品合色在线| 18禁国产床啪视频网站| 久99久视频精品免费| 亚洲av片天天在线观看| 欧美在线黄色| 男人的好看免费观看在线视频 | 嫩草影视91久久| 亚洲性夜色夜夜综合| 免费在线观看亚洲国产| 757午夜福利合集在线观看| 欧美黑人精品巨大| 亚洲色图 男人天堂 中文字幕| 亚洲色图综合在线观看| tube8黄色片| 老鸭窝网址在线观看| 国产高清videossex| 超碰97精品在线观看| 黄色视频不卡| 成年女人毛片免费观看观看9 | 中文字幕另类日韩欧美亚洲嫩草| www.精华液| 国产亚洲av高清不卡| 国产欧美日韩精品亚洲av| bbb黄色大片| 久久精品亚洲精品国产色婷小说| 一区二区日韩欧美中文字幕| 亚洲熟女精品中文字幕| 日韩免费高清中文字幕av| avwww免费| 男人的好看免费观看在线视频 | 国产亚洲精品第一综合不卡| 国产精品九九99| 18禁裸乳无遮挡免费网站照片 | 丰满饥渴人妻一区二区三| 亚洲熟妇熟女久久| 国产单亲对白刺激| 午夜两性在线视频| 久久精品人人爽人人爽视色| 欧美日韩亚洲国产一区二区在线观看 | 脱女人内裤的视频| 天堂俺去俺来也www色官网| 成人av一区二区三区在线看| 欧美精品高潮呻吟av久久| 亚洲av日韩精品久久久久久密| 国产欧美日韩一区二区精品| 亚洲精品国产色婷婷电影| 黑人巨大精品欧美一区二区mp4| 国产主播在线观看一区二区| 亚洲精品中文字幕一二三四区| 国产国语露脸激情在线看| 久久青草综合色| 日韩中文字幕欧美一区二区| 久热这里只有精品99| 国产伦人伦偷精品视频| 99香蕉大伊视频| 午夜免费鲁丝| 悠悠久久av| 一个人免费在线观看的高清视频| 欧美日韩视频精品一区| 91麻豆av在线| 久久国产亚洲av麻豆专区| 美女国产高潮福利片在线看| 成人国产一区最新在线观看| 人妻一区二区av| а√天堂www在线а√下载 | 亚洲精品成人av观看孕妇| 乱人伦中国视频| 他把我摸到了高潮在线观看| 18禁美女被吸乳视频| 欧美日韩福利视频一区二区| 丰满迷人的少妇在线观看| 久久国产精品影院| 国产主播在线观看一区二区| 如日韩欧美国产精品一区二区三区| 在线观看免费高清a一片| 国产不卡一卡二| tocl精华| 久久精品亚洲熟妇少妇任你| 欧美黑人欧美精品刺激| 亚洲一区高清亚洲精品| 又紧又爽又黄一区二区| 久久久国产精品麻豆| 久久久国产一区二区| 激情视频va一区二区三区| 久久国产精品大桥未久av| 午夜久久久在线观看| 黄色 视频免费看| 免费女性裸体啪啪无遮挡网站| 久久人妻av系列| 黑人巨大精品欧美一区二区蜜桃| 国产成人影院久久av| 色播在线永久视频| 宅男免费午夜| 777米奇影视久久| 久久久久久免费高清国产稀缺| 99国产综合亚洲精品| 国产精品一区二区在线不卡| av线在线观看网站| a在线观看视频网站| 韩国av一区二区三区四区| 午夜福利一区二区在线看| 在线观看日韩欧美| 麻豆成人av在线观看| 老司机影院毛片| 国内久久婷婷六月综合欲色啪| 大型黄色视频在线免费观看| 又大又爽又粗| 久久精品国产综合久久久| 18禁国产床啪视频网站| 国产单亲对白刺激| 国产高清视频在线播放一区| 母亲3免费完整高清在线观看| 91老司机精品| 国产精品香港三级国产av潘金莲| 国产成人一区二区三区免费视频网站| 日韩中文字幕欧美一区二区| 69av精品久久久久久| 啦啦啦在线免费观看视频4| avwww免费| 人人妻人人澡人人看| 黄色成人免费大全| 国产有黄有色有爽视频| 免费观看精品视频网站| 久热这里只有精品99| 亚洲人成伊人成综合网2020| 不卡一级毛片| 1024视频免费在线观看| 国产精品久久久久成人av| 日本黄色日本黄色录像| 亚洲欧洲精品一区二区精品久久久| 99国产极品粉嫩在线观看| 欧美日韩成人在线一区二区| 亚洲午夜精品一区,二区,三区| 国产一区二区激情短视频| 国产精品永久免费网站| 一级a爱片免费观看的视频| tocl精华| 国产亚洲av高清不卡| 91av网站免费观看| 国精品久久久久久国模美| 午夜福利一区二区在线看| 色婷婷av一区二区三区视频| 悠悠久久av| 电影成人av| 色综合婷婷激情| a级片在线免费高清观看视频| 欧美黄色淫秽网站| 欧美亚洲日本最大视频资源| 国产黄色免费在线视频| 色老头精品视频在线观看| 久久久久精品人妻al黑| 最新美女视频免费是黄的| 亚洲欧美色中文字幕在线| 99精品久久久久人妻精品| 黄色成人免费大全| 午夜亚洲福利在线播放| 午夜日韩欧美国产| 天堂动漫精品| 国产精品一区二区在线不卡| 日本欧美视频一区| 精品无人区乱码1区二区| 热re99久久精品国产66热6| cao死你这个sao货| 国产免费男女视频| 黄色视频,在线免费观看| 免费观看精品视频网站| 1024香蕉在线观看| 亚洲精品国产一区二区精华液| 午夜免费成人在线视频| 99热国产这里只有精品6| 国产亚洲精品久久久久久毛片 | 亚洲欧美激情在线| 免费人成视频x8x8入口观看| 国产在视频线精品| 精品久久久久久久毛片微露脸| 国产精品一区二区免费欧美| 久久精品aⅴ一区二区三区四区| 色婷婷av一区二区三区视频| 老司机靠b影院| 母亲3免费完整高清在线观看| 成人永久免费在线观看视频| 免费高清在线观看日韩| 看片在线看免费视频| 国产91精品成人一区二区三区| 777米奇影视久久| 婷婷精品国产亚洲av在线 | 国产日韩欧美亚洲二区| 热99re8久久精品国产| 欧美日韩黄片免| 亚洲五月天丁香| 欧美人与性动交α欧美软件| 国产有黄有色有爽视频| 咕卡用的链子| 亚洲人成77777在线视频| 亚洲欧美日韩高清在线视频| 宅男免费午夜| 中文字幕人妻丝袜制服| 在线观看舔阴道视频| 黄色视频不卡| 免费观看精品视频网站| 亚洲av成人av| 91老司机精品| 中文字幕人妻丝袜一区二区| 9色porny在线观看| 亚洲男人天堂网一区| 国产成人啪精品午夜网站| 村上凉子中文字幕在线| 国产欧美日韩综合在线一区二区| 国产欧美日韩一区二区三区在线| 欧美亚洲 丝袜 人妻 在线| 99国产精品一区二区三区| 国产欧美日韩精品亚洲av| 搡老乐熟女国产| 久热这里只有精品99| 亚洲免费av在线视频| 国产亚洲精品久久久久久毛片 | 人妻丰满熟妇av一区二区三区 | 别揉我奶头~嗯~啊~动态视频| 色综合欧美亚洲国产小说| 九色亚洲精品在线播放| 国产精品久久久人人做人人爽| 超色免费av| 一级毛片高清免费大全| 精品亚洲成a人片在线观看| 亚洲av日韩在线播放| 丰满人妻熟妇乱又伦精品不卡| 久久久久久人人人人人| 久久中文字幕一级| 国产单亲对白刺激| 久久精品亚洲熟妇少妇任你| 久久精品aⅴ一区二区三区四区| 久久性视频一级片| 免费在线观看日本一区| 精品人妻1区二区| 男女之事视频高清在线观看| 色尼玛亚洲综合影院| 中文亚洲av片在线观看爽 | 精品无人区乱码1区二区| av电影中文网址| 人妻 亚洲 视频| 久久天躁狠狠躁夜夜2o2o| 久久人人爽av亚洲精品天堂| 色在线成人网| 久久久久国内视频| 国产激情欧美一区二区| av线在线观看网站| 交换朋友夫妻互换小说| 看片在线看免费视频| 成年动漫av网址| 欧美日韩一级在线毛片| 老司机在亚洲福利影院| 日韩三级视频一区二区三区| 大码成人一级视频| 亚洲精品中文字幕在线视频| 18禁国产床啪视频网站| 亚洲精品美女久久av网站| 亚洲avbb在线观看| 男人舔女人的私密视频| 最近最新免费中文字幕在线| 一本综合久久免费| 国产不卡av网站在线观看| 中出人妻视频一区二区| 欧美黑人精品巨大| 男女高潮啪啪啪动态图| 亚洲片人在线观看| 高清在线国产一区| 亚洲视频免费观看视频| 欧美精品av麻豆av| 亚洲久久久国产精品| 国产在线精品亚洲第一网站| 日韩三级视频一区二区三区| 看黄色毛片网站| 欧美日韩中文字幕国产精品一区二区三区 | 精品人妻熟女毛片av久久网站| 亚洲欧美日韩高清在线视频| 久久久久久久午夜电影 | 十八禁高潮呻吟视频| 两人在一起打扑克的视频| 91成人精品电影| 两人在一起打扑克的视频| 午夜福利视频在线观看免费| 国产亚洲欧美精品永久| 精品人妻在线不人妻| 高清在线国产一区| 十八禁网站免费在线| 黄色怎么调成土黄色| 日韩三级视频一区二区三区| 黑人操中国人逼视频| 精品国产乱码久久久久久男人| 亚洲专区字幕在线| 人成视频在线观看免费观看| 亚洲欧美激情在线| 99精品久久久久人妻精品| 大型黄色视频在线免费观看| 女人精品久久久久毛片| 久久狼人影院| 正在播放国产对白刺激| www.999成人在线观看| 人妻丰满熟妇av一区二区三区 | 精品第一国产精品| 大香蕉久久网| 咕卡用的链子| 免费人成视频x8x8入口观看| 黄网站色视频无遮挡免费观看| 中文欧美无线码| 12—13女人毛片做爰片一| 一区在线观看完整版| 男人舔女人的私密视频| 亚洲精品乱久久久久久| 国产av一区二区精品久久| 最近最新中文字幕大全电影3 | 欧美大码av| 久久天堂一区二区三区四区| 脱女人内裤的视频| 国产av精品麻豆| 在线十欧美十亚洲十日本专区| 满18在线观看网站| 午夜两性在线视频| 一进一出抽搐动态| 在线观看一区二区三区激情| 亚洲精品国产色婷婷电影| 男女床上黄色一级片免费看| 亚洲成人手机| 一夜夜www| 水蜜桃什么品种好| 男人操女人黄网站| 99国产极品粉嫩在线观看| 老司机午夜福利在线观看视频| 精品一品国产午夜福利视频| 两个人看的免费小视频| 国产免费现黄频在线看| 热99国产精品久久久久久7| 电影成人av| 动漫黄色视频在线观看| 久久这里只有精品19| 男女午夜视频在线观看| www.精华液| 午夜福利,免费看| 久久 成人 亚洲| 国内毛片毛片毛片毛片毛片| 国产精品免费视频内射| 一级作爱视频免费观看| 日韩成人在线观看一区二区三区| 满18在线观看网站| 亚洲精品成人av观看孕妇| 久久午夜亚洲精品久久| 国产男靠女视频免费网站| 婷婷丁香在线五月| 久久中文看片网| 久久国产亚洲av麻豆专区| 日韩免费av在线播放| 国产成人免费观看mmmm| 午夜福利一区二区在线看| 精品国产乱子伦一区二区三区| 国产免费现黄频在线看| 一边摸一边抽搐一进一出视频| a在线观看视频网站| 午夜精品国产一区二区电影| 精品久久蜜臀av无| 18禁国产床啪视频网站| 看黄色毛片网站| 男女免费视频国产| 亚洲精品在线美女| 国产成人免费观看mmmm| 人妻 亚洲 视频| 久久青草综合色| 久久中文字幕一级| 女同久久另类99精品国产91| 精品熟女少妇八av免费久了| 久久久国产欧美日韩av| 欧美大码av| 欧美日韩中文字幕国产精品一区二区三区 | 久久久久久久精品吃奶| 另类亚洲欧美激情| 国产aⅴ精品一区二区三区波| 国产一区二区三区综合在线观看| 欧美乱色亚洲激情| 桃红色精品国产亚洲av| 99久久人妻综合| 国产激情久久老熟女| 一二三四社区在线视频社区8| 亚洲成人手机| 天堂中文最新版在线下载| 黄色成人免费大全| 国产欧美日韩综合在线一区二区| 精品一区二区三卡| 精品国产乱子伦一区二区三区| 黄色视频,在线免费观看| av免费在线观看网站| 一级作爱视频免费观看| 亚洲国产毛片av蜜桃av| 国产在线精品亚洲第一网站| 国产精品av久久久久免费| 亚洲专区国产一区二区| bbb黄色大片| 精品视频人人做人人爽| av国产精品久久久久影院| 18禁美女被吸乳视频| 国产亚洲一区二区精品| 老司机午夜十八禁免费视频| 午夜福利乱码中文字幕| 中文字幕av电影在线播放| 中文字幕人妻丝袜制服| 激情视频va一区二区三区| 操美女的视频在线观看| 亚洲视频免费观看视频| netflix在线观看网站| 母亲3免费完整高清在线观看| 欧美 日韩 精品 国产| 亚洲第一欧美日韩一区二区三区| 国产精品二区激情视频| 中文字幕精品免费在线观看视频| 国产精品偷伦视频观看了| 亚洲伊人色综图| √禁漫天堂资源中文www| 国产一区二区激情短视频| 色老头精品视频在线观看| 欧美色视频一区免费| 国产一区有黄有色的免费视频| 精品第一国产精品| 免费观看人在逋| 精品国产超薄肉色丝袜足j| 99久久精品国产亚洲精品| 精品国产美女av久久久久小说| 午夜日韩欧美国产| 这个男人来自地球电影免费观看| av天堂在线播放| 欧美精品av麻豆av| 99国产综合亚洲精品| 亚洲熟女毛片儿| av片东京热男人的天堂| 欧美黄色片欧美黄色片| 欧美 亚洲 国产 日韩一| 成年人黄色毛片网站| 亚洲国产精品sss在线观看 | 又黄又粗又硬又大视频| 国产精品成人在线| 在线观看一区二区三区激情| 高潮久久久久久久久久久不卡| 51午夜福利影视在线观看| 激情视频va一区二区三区| 国产精品亚洲av一区麻豆| 午夜福利,免费看| 亚洲自偷自拍图片 自拍| 国产av又大| 搡老岳熟女国产| 人人妻人人添人人爽欧美一区卜| 日本a在线网址| 欧美日韩亚洲高清精品| 国产精品久久电影中文字幕 | 黄色a级毛片大全视频| 欧美激情高清一区二区三区| 超碰97精品在线观看| 色综合欧美亚洲国产小说| 国产午夜精品久久久久久| 激情在线观看视频在线高清 | 一a级毛片在线观看| 看片在线看免费视频| 亚洲一区二区三区欧美精品| 新久久久久国产一级毛片| 9色porny在线观看| 大陆偷拍与自拍| 天天躁日日躁夜夜躁夜夜| 成人手机av| tube8黄色片| 欧美最黄视频在线播放免费 | 别揉我奶头~嗯~啊~动态视频| 成年动漫av网址| 色播在线永久视频| 国产精品成人在线| 国产不卡一卡二| 丝袜美足系列| 国产精华一区二区三区| 亚洲第一av免费看| 美女福利国产在线| 桃红色精品国产亚洲av| 免费少妇av软件| 真人做人爱边吃奶动态| 亚洲人成电影观看| 丁香欧美五月| 久久国产亚洲av麻豆专区| 丝袜人妻中文字幕| 搡老岳熟女国产| 99国产精品99久久久久| 超色免费av| 99re在线观看精品视频| 国产成人精品久久二区二区免费| 高清毛片免费观看视频网站 | 亚洲av成人av| 欧美精品亚洲一区二区| 女人精品久久久久毛片| 久久久水蜜桃国产精品网| 国产乱人伦免费视频| 色婷婷av一区二区三区视频| 亚洲精品美女久久久久99蜜臀| 欧美精品亚洲一区二区| 在线av久久热| 精品人妻熟女毛片av久久网站| 777久久人妻少妇嫩草av网站| 色婷婷av一区二区三区视频| 一二三四社区在线视频社区8| 九色亚洲精品在线播放| 在线av久久热| 美女高潮到喷水免费观看| 黄网站色视频无遮挡免费观看| 一级片'在线观看视频| 午夜福利免费观看在线| 一边摸一边做爽爽视频免费| 成人三级做爰电影| 亚洲性夜色夜夜综合| 少妇粗大呻吟视频|