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

使用webpack管理多頁應(yīng)用技巧總結(jié)

開發(fā) 前端
隨著前端功能不斷豐富,前端代碼也越來越復(fù)雜難以管理。為了簡化開發(fā)的復(fù)雜度,出現(xiàn)了眾多新的處理技術(shù):模塊化、組件化、css預(yù)處理器(less,scss)等,它們提高了我們開發(fā)效率,但眾多模塊文件的處理打包還是會非常繁瑣的。

隨著前端功能不斷豐富,前端代碼也越來越復(fù)雜難以管理。為了簡化開發(fā)的復(fù)雜度,出現(xiàn)了眾多新的處理技術(shù):模塊化、組件化、css預(yù)處理器(less,scss)等,它們提高了我們開發(fā)效率,但眾多模塊文件的處理打包還是會非常繁瑣的。

[[184667]]

Webpack是一個nodejs工具,它的工作方式是:把你的項(xiàng)目當(dāng)做一個整體,通過一個給定的主文件(如:index.js),Webpack將從這個文件開始找到你的項(xiàng)目的所有依賴文件,使用loaders處理它們,***打包為一個瀏覽器可識別的JavaScript文件。

  1. webpack {entry file/入口文件}  
  2. {destination for bundled file/存放bundle.js的地方} 

編寫它的默認(rèn)配置文件webpack.config.js,加入簡單配置就可以簡化上面的命令為webpack(非全局安裝需使用node_modules/.bin/webpack):

  1. module.exports = { 
  2.           entry:  __dirname + "/development/main.js",//已多次提及的唯一入口文件 
  3.           output: { 
  4.             path: __dirname + "/build",//打包后的文件存放的地方 
  5.             filename: "bundle.js"//打包后輸出文件的文件名 
  6.           } 

接上一步,繼續(xù)修改該node的配置文件package.json,加入如下配置就可以使用更簡單的命令npm start:

  1. "scripts": { 
  2.     "start""webpack"  
  3.     ...... 
  4. }, 

這就是webpack的簡單用法了,下面開始詳細(xì)介紹webpack的配置文件。

一、.webpack的配置文件其實(shí)就是一個node的module,用commonJS風(fēng)格編寫。默認(rèn)名為webpack.config.js,要自定義配置文件名可以在webpack命令中指定(顯然不能寫到配置文件中):

webpack --config ./webpackConfig/dev.config.js 

默認(rèn)會以當(dāng)前目錄為基本目錄(可以通過--content-base來更換基本目錄),webpack-dev-server生成的包并沒有放在你的真實(shí)目錄中,而是放在了內(nèi)存中。可以另外開一個cmd,使用監(jiān)控命令來輸出到磁盤:

webpack --watch

二、entry段

可以是字符串(單入口),可以是數(shù)組(多入口),但為了后續(xù)發(fā)展,建議【使用object】。entry.value是入口文件或者內(nèi)置模塊名,entry.key就是output.filename中的[name]變量的值。

  • entry值是字符串或者數(shù)組時時,output中沒有變量[name],entry值是對象時,output中才有變量[name]。
  • entry值是數(shù)組,表示把數(shù)組中的所有js文件內(nèi)容都打包到一個js文件內(nèi)作為入口js文件。
  • entry的值是對象,表示這是一個多頁面應(yīng)用,對象里每一個屬性代表一個入口js文件配置。屬性的值還可以是數(shù)組,表示數(shù)組中的文件都會被打包到同一個文件中,一般用來打包合并第三方插件代碼到同一個js文件,減少網(wǎng)絡(luò)請求次數(shù)。

三、output段

相當(dāng)于【一套規(guī)則】,所有的入口都必須使用這一套規(guī)則,不能針對某一個特定的入口來制定output規(guī)則。

  1. output中的常用參數(shù)包括:path/publicPath/filename/chunkFilename。
  2. path參數(shù)(只是給webpack用的)表示生成文件的根目錄,需要傳入一個【文件系統(tǒng)絕對路徑】。path參數(shù)和后面的filename參數(shù)共同組成入口文件的完整路徑。
  3. publicPath(是給webpack-dev-server用的)參數(shù)表示的是一個【URL路徑】(指向生成文件的根目錄),用于生成css/js/圖片/字體文件等資源的起始路徑,會自動加到資源文件的url前面。
  4. path參數(shù)其實(shí)是針對本地文件系統(tǒng)的,而publicPath則針對的是瀏覽器;因此,publicPath既可以是一個相對路徑(相對當(dāng)前代碼所在文件路徑),如示例中的'../../../../build/',也可以是一個絕對路徑如http://www.xxxxx.com/。一般來說,我還是更推薦相對路徑的寫法,這樣的話整體遷移起來非常方便。那什么時候用絕對路徑呢?其實(shí)也很簡單,當(dāng)你的html文件跟其它資源放在不同的域名下的時候,就應(yīng)該用絕對路徑了,這種情況非常多見于后端渲染模板的場景。
  5. filename參數(shù)是生成出來的入口文件的【命名規(guī)則】:[name]指代entry配置的key,[hash]與版本有關(guān),每次編譯都不一樣,但在同一次編譯過程中生成的文件它都是一樣的,[chunkhash]對每個文件生成hash,與文件內(nèi)容有關(guān),而與版本無關(guān)。
  6. chunkFilename參數(shù)也是用來定義生成文件的命名方式,針對除入口文件外的chunk命名。
  7. library參數(shù)中的變量[name]就是webpack.DllPlugin中name參數(shù)的變量[name]

四、用CommonsChunkPlugin【智能】判斷提取并打包、出現(xiàn)在入口js文件中的公共代碼

  1. var commonsChunkPlugin = new webpack.optimize.CommonsChunkPlugin({ 
  2.         name: 'commons'// 放共有代碼的chunck的唯一標(biāo)識符(可以在后面filename中用[name]引用) 
  3.         filename: '[name].bundle.js'// 放共有代碼的文件名的模板([name]=CommonsChunkPlugin.name),它的省略值就是[name].js 
  4.         minChunks: 4// 設(shè)定要有4個chunk(即4個入口)都有的代碼才會被納入公共代碼,默認(rèn)在所有入口文件中都出現(xiàn)的代碼才會提取。 
  5.         chunks:[],//表示需要在哪些chunk里尋找公共代碼進(jìn)行打包。則默認(rèn)提取范圍為所有的chunk。 
  6. });//最終生成文件的url是ouput.path + CommonsChunkPlugin.filename 

它的作用在于:在以入口文件為單位打包js的前提下,再進(jìn)一步去提取入口文件間的共有代碼:
1.如果name的值是不存在的chunk,則filename的值不能與現(xiàn)有的入口文件打包后的名字重復(fù):

  • 如果只給了name、filename,就是在<所有入口js>中提取<全部都有>的代碼單獨(dú)打包
  • 如果給minChunks:2,針對<全部都有>,表示限定了在<所有入口js>中找,只有同時在任意2個入口文件中都出現(xiàn)的代碼才會被提取單獨(dú)打包
  • 如果給chunks:['a','b'],針對<所有入口js>,表示只從a、b這兩個入口文件中提取<全部都有>的代碼單獨(dú)打包

2.如果name的值是現(xiàn)有chunk(entry.key),就會提取共有代碼放到同名的入口文件中(還可以通過filename改變對它打包后的文件名,通過minChunks規(guī)定在多少個入口文件中都出現(xiàn)了的代碼才算共有代碼,通過chunks需要提取共有代碼的入口文件范圍)。

五、兼容老式的jQuery插件的方式

解決使用老的jquery插件時報(bào)$/jQuery未定義錯誤。原因是我們在require jquery的時候,實(shí)際上并不會把jQuery對象設(shè)置為全局變量。jquery插件們找不到j(luò)Query對象了,因?yàn)樵谒鼈兏髯缘纳舷挛沫h(huán)境里,既沒有局部變量jQuery(因?yàn)闆]有適配AMD/CMD,所以代碼內(nèi)部就沒有寫相應(yīng)的require語句引入依賴),也沒有全局變量jQuery。(切記【三種方法不要混用】):
方法一、ProvidePlugin + expose-loader【用ProvidePlugin向插件中引入局部變量jQuery、用expose-loader引入全局變量jQuery】。

  1. var providePlugin = new webpack.ProvidePlugin({ 
  2.     $: 'jquery'
  3.     jQuery: 'jquery'
  4.     'window.jQuery''jquery'
  5.     'window.$''jquery'
  6. }); 

ProvidePlugin的機(jī)制是:【當(dāng)webpack加載到某個js模塊里,出現(xiàn)了未定義且名稱符合(字符串完全匹配)配置中key的變量時】,會自動require配置中value所指定的js模塊。使用ProvidePlugin還有個好處,就是,你自己寫的代碼里,再!也!不!用require jquery啦!。
expose-loader【將指定js模塊export的變量聲明為全局變量】。如果你所有的jQuery插件都是用webpack來加載的話,的確用ProvidePlugin就足夠了;但總有那么些需求是只能用<script>來加載的:

  1.     test: require.resolve('jquery'),  // 此loader配置項(xiàng)的目標(biāo)是NPM中的jquery的資源路徑 
  2.     loader: 'expose?$!expose?jQuery'// 先把jQuery對象聲明成為全局變量`jQuery`,再通過管道進(jìn)一步又聲明成為全局變量`$` 
  3. }, 

方法二、使用externals配置項(xiàng),用來【將某個全局變量“偽裝”成某個js模塊的exports】,當(dāng)某個js模塊顯式地調(diào)用var $ = require('jquery')的時候,就會把window.jQuery返回給它,但是要先在頁面中寫<script>標(biāo)簽手動加載 jquery.min.js(意味著如果某個庫沒有提供生產(chǎn)環(huán)境的文件XXX.min.js就不能用這個方法):

  1. externals: { 
  2.     'jquery''window.jQuery'

方法三、imports-loader,相當(dāng)于【手動版的ProvidePlugin】,不建議使用

  1.     test: require.resolve("some-module"), 
  2.     loader: "imports?$=jquery&jQuery=jquery"// 相當(dāng)于`var $ = require("jquery");var jQuery = require("jquery");` 

六、其它資源的打包處理方式

loader【擴(kuò)展了require()方法的能力】,使它可以以模塊的形式導(dǎo)入非js文件,處理***導(dǎo)出的都是javascrit。loader有兩種使用方式,一種是寫在require的參數(shù)里: require("!style!css!./style.css");還有一種是些到配置文件中,通過擴(kuò)展名自動綁定loader。

1.對css的處理方式

less-loader模塊對less文件進(jìn)行編譯,但并不會針對url()語法做特別的轉(zhuǎn)換。如果想把url()語句里涉及到的文件(比如圖片、字體文件等)也一并用webpack打包的話,就必須利用管道交給css-loader做進(jìn)一步的處理。在css-loader會把它轉(zhuǎn)成require()語句,從而觸發(fā)在webpack配置文件里定義好可以處理這類資源的其它loader(比如url-loader,file-loader)。一般我在url()語句里都會以相對路徑的方式(相對于此語句所在的less/css文件)來指定資源路徑。
方法一、可以使用style-loader直接把css代碼段跟js打包在一起,并自動用<style>標(biāo)簽插入到頁面。
方法二、也可以用ExtractTextPlugin生成并加載CSS文件(結(jié)果是每個入口js都只對應(yīng)一個css文件)的形式。extractTextPlugin會對每一個entry執(zhí)行操作:查找entry中所有通過require()語句導(dǎo)入的css代碼,把它們打包到特定路徑(由插件的唯一參數(shù)指定)的一個css文件中:

  1. var precss       = require('precss'); 
  2.     var autoprefixer = require('autoprefixer'); 
  3.     var ExtractTextPlugin = require('extract-text-webpack-plugin'); 
  4.     ...... 
  5.     module.exports = { 
  6.         ...... 
  7.         module: { 
  8.         loaders: [ 
  9.             { 
  10.             test:   /\.css$/, 
  11.             exclude: /node_modules|bootstrap/, 
  12.             //關(guān)閉autoprefixer以避免你的廢棄CSS代碼被css-loader刪除了 
  13.             //***步:loader里加入ExtractTextPlugin.extract(),這樣才會提取css到獨(dú)立的文件 
  14.             loader: ExtractTextPlugin.extract('css-loader?minimize&-autoprefixer!postcss-loader'), 
  15.             } 
  16.         ] 
  17.         }, 
  18.         //PostCSS 是ExtractTextPlugin的插件,主要功能只有兩個:***個就是前面提到的把 CSS 解析成 JavaScript 可以操作的抽象語法樹結(jié)構(gòu)(AST),第二個就是調(diào)用插件來處理 AST 并得到結(jié)果。 
  19.         postcss: function () { 
  20.         return [precss, autoprefixer({ 
  21.             remove: false
  22.             browsers: ['ie >= 8''> 1% in CN'], 
  23.         })]; 
  24.         }, 
  25.         ...... 
  26.         plugins: [ 
  27.         //第二步:指定打包c(diǎn)ss文件的文件名和路徑(相對于output.path) 
  28.         new ExtractTextPlugin('[name]/styles.css'), // [name]=entry.key,表示每一個入口js文件可以對應(yīng)打包一個css文件,不用這個[name]變量就會把所有入口文件中的require("XXX.css")語句引入的css文件內(nèi)容都打包到同一個文件中。 
  29.         ] 
  30.     } 

2.對圖片和字體文件的處理方式

圖片可以直接在js文件中通過require導(dǎo)入,也可以在css中通過url()引入,所以對應(yīng)有兩種打包方式:
方法一、require('!url-loader?limit=8192&name=static/images/[hash].[ext]!./imgs/login-bg.jpg')//只對單個圖片文件,用于在js文件中導(dǎo)入圖片
方法二、loader: 'url?limit=8192&name=./static/img/[hash].[ext]'//可以匹配文件后綴,從而批量處理,用于在css文件中的url()語句處理
表示圖片小于8k就轉(zhuǎn)成url(dataURL)直接替換原url()語句,否則打包到output.publicPath + /static/img/[hash].[ext](只是簡單的字符串拼接,沒有路徑解析操作),然后用這個路徑替換掉原url()中的路徑。
file-loader的主要功能是:把源文件遷移到指定的目錄(可以簡單理解為從源文件目錄遷移到build目錄),并返回新文件的路徑(只是簡單的字符串拼接,沒有路徑解析操作),與url-loader的使用方式相同(沒有l(wèi)imit參數(shù))

七、用DllPlugin&DllReferencePlugin把第三方庫預(yù)打包成dll

但與CommonsChunkPlugin不一樣的是,它不僅僅是把公用代碼提取出來,還進(jìn)一步把公用代碼和它的使用者(業(yè)務(wù)代碼)從編譯這一步就分離出來,以做到分別編譯公用代碼和業(yè)務(wù)代碼。因?yàn)闃I(yè)務(wù)代碼常改,而公用代碼不常改,開發(fā)過程中就可以做到只編譯一次公用代碼,在以后的修改重編譯過程中就會把公用代碼排除在外。
1.編寫配置文件ddl.config.js:

  1. const webpack = require('webpack'); 
  2.  
  3.         module.exports = { 
  4.             output: { 
  5.             path: 'build'
  6.             filename: '[name].js'
  7.             library: '[name]',//與webpack.DllPlugin.name保持一樣 
  8.             }, 
  9.             entry: { 
  10.             "lib": ['react','react-dom','react-router',]//需要打包成dll的公共模塊 
  11.             }, 
  12.             plugins: [ 
  13.             new webpack.DllPlugin({ 
  14.                 path: 'manifest.json'
  15.                 name: '[name]',//與output.library保持一樣 
  16.                 context: __dirname,//與DllReferencePlugin.context保持一樣,建議統(tǒng)一設(shè)置為項(xiàng)目根目錄 
  17.             }), 
  18.             ], 
  19.         }; 

2.編譯一次公共代碼:

webpack --progress --colors --config ./ddl.config.js

,結(jié)果會輸出兩個文件一個是打包好的 lib.js,一個就是 manifest.json
3.在打包業(yè)務(wù)代碼的配置文件webpack.config.js中引用:

  1. plugins: [ 
  2.           new webpack.DllReferencePlugin({ 
  3.             context: __dirname,//DllPlugin.context保持一樣,建議統(tǒng)一設(shè)置為項(xiàng)目根目錄 
  4.             manifest: require('./manifest.json'), 
  5.           }), 
  6.         ] 

4.以后業(yè)務(wù)代碼修改只需要運(yùn)行:

webpack --progress --colors --config ./webpack.config.js

,而不用再執(zhí)行編譯公共代碼的命令了。

八、自動生成html頁面

每一個html-webpack-plugin的對象實(shí)例都只針對/生成一個頁面(會自動向模板文件里插入依賴的js、css標(biāo)簽,***生成html文件),因此,我們做多頁應(yīng)用的話,就要配置多個html-webpack-plugin的對象實(shí)例:

  1. new HtmlWebpackPlugin({ 
  2.     filename: `${page}/page.html`,//生成html頁面的命名,最終位置:output.path + HtmlWebpackPlugin.filename 
  3.     template: path.resolve(dirVars.pagesDir, `./${page}/html.js`),//生成html需要引入的模板路徑 
  4.     chunks: [page, 'commons/commons'],//指定生成的html文件中需要引入的、打包好的入口js文件, 
  5.                       //如果使用了CommonsChunkPlugin,則這里必須填寫存放公共js代碼的chunk的name 
  6.     hash: true// 為靜態(tài)資源生成hash值 
  7.     minify: true
  8.     xhtml: true
  9.   }); 

另外,webpack默認(rèn)支持的ejs模板,還需要在webpack配置文件中配置好相應(yīng)的loader。

九、用resolve為require做請求重定向

可以提高打包效率節(jié)省時間。這里的請求是對模塊的依賴,也就是一個 require 語句,而不是一個 HTTP 請求:

  1. resolve: { 
  2.    alias: { 
  3.        myModule: "app/my.min.js"//require('myModule')就相當(dāng)于require('app/my.min.js') 
  4.    } 
  5.  } 

參考資料:https://segmentfault.com/a/1190000006843916

責(zé)任編輯:張燕妮 來源: 開源
相關(guān)推薦

2010-01-27 17:45:15

Android應(yīng)用技巧

2009-12-28 15:01:39

WPF樹應(yīng)用

2009-11-18 18:24:26

PHP模板

2009-11-17 11:24:00

PHP應(yīng)用技巧

2017-05-02 16:29:11

Webpack技巧建議

2017-03-24 10:56:21

Webpack技巧建議

2009-12-31 10:21:53

Silverlight

2010-02-25 09:50:30

WCF路由截獲消息

2015-08-24 08:59:13

Git技巧

2013-06-07 14:35:19

Mac OS X

2010-02-25 16:45:13

WCF應(yīng)用技巧

2014-07-23 10:08:34

Angular前端項(xiàng)目

2010-01-12 18:00:50

VB.NET界面

2019-10-28 14:37:10

MySQL 數(shù)據(jù)庫收藏

2010-02-02 14:06:50

C++ const變量

2009-12-04 15:43:03

PHP JSON擴(kuò)展

2025-05-23 10:38:43

2009-12-04 14:40:43

Visual Stud

2016-09-07 15:35:06

VueReact腳手架

2010-01-28 10:55:14

Android電源管理
點(diǎn)贊
收藏

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

人妻va精品va欧美va| 久久国产免费观看| 中文幕av一区二区三区佐山爱| 一区二区中文字幕在线| 5g国产欧美日韩视频| 日本午夜小视频| 欧洲毛片在线视频免费观看| 日韩一区二区三区精品视频| 97国产在线播放| 嫩草在线视频| 97久久精品人人爽人人爽蜜臀| 国产精品入口福利| 99热国产在线观看| 99久久亚洲精品蜜臀| 国产视频精品久久久| 午夜大片在线观看| 竹内纱里奈兽皇系列在线观看| 国产精品久久久久久久午夜片| 好看的日韩精品视频在线| 一级黄色大毛片| 一本一道久久综合狠狠老精东影业| 日韩在线小视频| a视频免费观看| 国产在线不卡一区二区三区| 欧美午夜寂寞影院| 91九色在线观看视频| 日韩电影免费观看| 成人欧美一区二区三区小说 | 999国产精品一区| 欧美日韩一区二区在线观看| 两根大肉大捧一进一出好爽视频| 亚洲制服国产| 中文字幕字幕中文在线中不卡视频| 日本a级片久久久| 视频福利在线| av电影在线观看一区| 97中文在线| 99久久精品国产色欲| 久久99精品久久久久久久久久久久| 国产99视频精品免视看7| 国产精品成人免费一区二区视频| 亚洲精品在线观看91| 中文字幕视频一区二区在线有码| 在线免费观看麻豆| 国产成人手机高清在线观看网站| 亚洲精品wwwww| 艳妇乳肉豪妇荡乳xxx| 亚洲精品一区二区三区在线| 欧美一区二区三区爱爱| 亚洲网中文字幕| 国产一区二区三区黄网站| 91精选在线观看| 日韩av自拍偷拍| 四虎精品一区二区免费| 欧美欧美欧美欧美首页| 国产无遮挡猛进猛出免费软件| 四虎影视4hu4虎成人| 91官网在线观看| 激情视频综合网| 成人在线视频免费| 欧美剧在线免费观看网站 | 78精品国产综合久久香蕉| 91极品视觉盛宴| 天天操天天爽天天射| 色猫猫成人app| 欧美日韩色一区| 在线视频日韩欧美| 中文字幕久久精品一区二区| 精品少妇一区二区三区在线播放 | 高潮久久久久久久久久久久久久| 精品国产电影一区二区| 午夜一区二区三区免费| 教室别恋欧美无删减版| 久久精品成人一区二区三区| wwwav国产| 亚洲精选一区| 国产精品久久久久久久久久久久久| 国产精品高清无码| 国产精品中文字幕日韩精品| 91在线观看免费高清| 人妻va精品va欧美va| 久久精品视频网| 在线无限看免费粉色视频| 羞羞网站在线免费观看| 色综合一区二区三区| 日本高清一区二区视频| 国产欧美三级电影| 国产亚洲综合久久| 黄页网站免费观看| 久久蜜桃精品| 96国产粉嫩美女| 天天综合网在线| 国产精品污www在线观看| 国产精品国产三级国产专区51| 久久久男人天堂| 欧美裸体bbwbbwbbw| 欧美极品jizzhd欧美仙踪林| 国产最新精品| 久久久在线免费观看| 青青国产在线视频| 国产成人精品亚洲777人妖 | 扒开伸进免费视频| 成人看的视频| 97精品国产97久久久久久| 少妇一级淫片日本| 成人av资源网站| 一区二区三区视频| 亚洲天堂手机| 欧美不卡一二三| 国产精品久久免费观看| 99国产精品99久久久久久粉嫩| 成人精品福利视频| 欧美3p视频在线观看| 一区二区三区在线高清| 天天综合网日韩| 亚洲盗摄视频| 久久久久久亚洲精品中文字幕| 亚洲一线在线观看| 久久久蜜桃精品| 黄色大片中文字幕| 秋霞午夜一区二区三区视频| 一夜七次郎国产精品亚洲| 自拍偷拍欧美亚洲| 国产成人午夜高潮毛片| 日韩人妻精品一区二区三区| 全球最大av网站久久| 日韩电影在线观看中文字幕 | 欧美裸体一区二区三区| 男女做爰猛烈刺激| 亚洲免费影院| 精品国产乱码久久久久久丨区2区| caopen在线视频| 欧美日韩精品电影| 日本污视频网站| 久热精品在线| 欧美日韩精品综合| 精品国产免费人成网站| 亚洲精品成人网| 日本亚洲色大成网站www久久| 国产精品一二三四区| 国产资源第一页| 国产欧美日韩电影| 欧美久久久精品| 99免费在线视频| 亚洲色图视频网| 久久aaaa片一区二区| 亚洲人成免费网站| 亚洲一区二区在线播放| 成人影院在线观看| 日韩欧美一区二区免费| 免费视频网站www| 国产91丝袜在线播放0| 国产精品69久久久| 老司机在线精品视频| 91精品国产沙发| 亚洲色图欧美视频| 一本色道亚洲精品aⅴ| 美国黑人一级大黄| 久久99精品久久久久久久久久久久 | **欧美日韩vr在线| 黄色软件在线| 欧美日韩中文一区| 国产黄在线免费观看| 国产精品亚洲成人| 5月婷婷6月丁香| 狠狠综合久久av一区二区蜜桃 | 美女一区二区三区视频| 91免费精品| 超碰97在线播放| 日本а中文在线天堂| 国产亚洲精品久久久久久777| 中文字幕有码视频| 一区二区三区在线视频免费| 麻豆精品国产传媒av| 丝袜美腿亚洲色图| 国产卡一卡二在线| 日韩啪啪网站| 国产在线视频不卡| 国产亚av手机在线观看| 亚洲欧美日韩天堂| 亚洲一区二区三区高清视频| 伊人性伊人情综合网| 国产精品无码永久免费不卡| 久久精品国产亚洲高清剧情介绍| 大地资源网在线观看免费官网| 国产suv精品一区| 国产精品天天狠天天看| 日韩成人伦理| 中文字幕日韩综合av| 日韩一区二区三区在线观看视频| 欧美伊人久久久久久久久影院| 欧美精品成人久久| 国产日韩欧美高清| 欧美日韩一区二区区| 亚洲中字黄色| 中国一级大黄大黄大色毛片| 亚洲人亚洲人色久| 亚洲最大福利视频网| 在线观看精品| 久久久欧美一区二区| 欧美成人高清在线| 国产视频欧美视频| 亚洲av无码乱码在线观看性色| 欧美性猛交xxxx乱大交极品| 欧美成人精品欧美一| 国产人成亚洲第一网站在线播放| 色哟哟网站在线观看| 麻豆精品视频在线观看视频| aa免费在线观看| 亚洲午夜91| 韩国黄色一级大片| 波多野结衣在线播放一区| 国内一区在线| 亚洲精品在线a| 成人字幕网zmw| 国产亚洲人成a在线v网站| 69**夜色精品国产69乱| 四虎亚洲精品| 日韩有码视频在线| 第一福利在线| 国产丝袜一区二区三区| 黄色av中文字幕| 日韩视频免费观看高清完整版 | 成人免费va视频| 五月天开心婷婷| 七七婷婷婷婷精品国产| 99蜜桃臀久久久欧美精品网站| 伊人久久综合| 18视频在线观看娇喘| 国产精品成人av| 亚洲一区二区自拍偷拍| 欧美亚洲国产激情| 日韩免费av电影| 精品一区电影| 少妇免费毛片久久久久久久久| 宅男在线一区| 欧美日韩一区二区三| 清纯唯美亚洲经典中文字幕| 好吊色欧美一区二区三区| 精品综合久久88少妇激情| 国产精品区一区二区三在线播放 | 亚洲网站视频福利| 欧美日韩伦理片| 亚洲欧美精品一区二区| 麻豆app在线观看| 亚洲全黄一级网站| 亚洲欧美激情国产综合久久久| 日韩视频不卡中文| 亚洲精品97久久中文字幕无码 | 成人国产精品一区二区| 午夜精品久久久久久毛片| 国产原创欧美精品| 国产在线不卡一区二区三区| 亚洲最大成人免费视频| 88久久精品| 国产亚洲一区在线播放| 香蕉久久夜色精品国产更新时间 | 男女性杂交内射妇女bbwxz| 成人av第一页| 一区二区黄色片| 国产精品久久久久久亚洲毛片 | 色综合久久中文综合久久97| 波多野结衣视频网址| 欧美三级视频在线| 国产黄色高清视频| 亚洲国产成人一区| 国产一级在线观看| 久久精品美女视频网站 | 夜夜精品视频一区二区 | 欧美日韩一卡二卡| 99热这里只有精品在线| 亚洲精品美女在线观看播放| 欧美一区二区视频| 日韩网站在线观看| caoprom在线| 国产精品久久97| 久久伊人精品| 精品一区二区三区日本| 日韩精品一区二区久久| 国产a级黄色大片| 久久国产主播| 日韩精品在线播放视频| 2欧美一区二区三区在线观看视频| www亚洲色图| 亚洲高清视频的网址| 最近中文字幕av| 亚洲电影免费观看高清完整版在线| 九色在线播放| 欧美国产第一页| 成人亚洲网站| 国产精品亚洲综合| 国产精品91一区二区三区| 免费av手机在线观看| 久久精品久久久精品美女| 六十路息与子猛烈交尾| 亚洲色图制服诱惑| 国产精品第5页| 日韩精品资源二区在线| 国产精品天堂| 国自在线精品视频| 外国成人毛片| 日本亚洲导航| 日韩一级大片| 最好看的中文字幕| 国产精品欧美精品| 久久午夜免费视频| 欧美va亚洲va国产综合| 调教视频免费在线观看| 3344国产精品免费看| 欧美日韩中出| 在线国产精品网| 另类av一区二区| 亚洲视频 中文字幕| 亚洲欧美一区二区三区国产精品| 91丨九色丨海角社区| 日韩精品福利网站| 国产色婷婷在线| 97人人澡人人爽| 亚洲电影影音先锋| 污污动漫在线观看| 国产亚洲精久久久久久| 日本三级一区二区| 亚洲国产欧美一区| 狂野欧美性猛交xxxxx视频| 成人性生交大片免费观看嘿嘿视频| 在线成人动漫av| 欧美日韩一道本| 成人激情综合网站| 国产第一页在线播放| 91精品国产91久久综合桃花| 婷婷免费在线视频| 成人国产精品一区二区| 99久久久久| 久久成年人网站| 自拍偷拍亚洲激情| 91亚洲视频在线观看| www.日韩不卡电影av| aa亚洲一区一区三区| 亚洲最新免费视频| 韩国成人在线视频| 天天看片中文字幕| 日韩欧美国产综合| wwww亚洲| 精品一区二区久久久久久久网站| 中日韩男男gay无套| 国产精品无码一区二区三区免费| 欧美日韩国产精品一区| 天堂资源中文在线| 日韩av电影在线免费播放| 欧美肉体xxxx裸体137大胆| www.xxx亚洲| 国产精品久久毛片av大全日韩| 中文字幕在线观看精品| 北条麻妃久久精品| 精品国产麻豆| 99久久免费观看| 99精品在线观看视频| 五月天激情四射| 在线丨暗呦小u女国产精品| va天堂va亚洲va影视| 国产成人生活片| 不卡影院免费观看| 欧美一级淫片免费视频黄| 最近2019年好看中文字幕视频| 国产精品欧美一区二区三区不卡| 黄色成人在线免费观看| 91丨九色丨黑人外教| 中文在线免费看视频| 久久亚洲春色中文字幕| 成人搞黄视频| www.99av.com| 亚洲卡通欧美制服中文| 亚州视频一区二区三区| 国产精品久久网| 91精品国产91久久久久久黑人| 蜜桃视频无码区在线观看| 狠狠色狠色综合曰曰| 亚洲乱亚洲乱妇| 懂色一区二区三区av片| 性感少妇一区| 一区二区三区影视| 亚洲精品电影网| 成人精品在线| 成年人视频观看| 中文字幕中文乱码欧美一区二区| 天堂网在线资源| 国产精品一区二区久久久| 伊人久久亚洲美女图片| 亚欧精品视频一区二区三区| 精品久久久久久亚洲综合网| 在线成人视屏| 久久这里只有精品18| 国产精品久久久久久亚洲毛片| 污污视频在线免费看| 成人在线视频网站| 久久精品导航| 国产一级视频在线播放| 中文国产成人精品| 好吊妞视频这里有精品 | 久久精品成人欧美大片|