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

讓前端開發(fā)者失業(yè)的技術(shù),F(xiàn)lutter Web初體驗

新聞 前端
Flutter是一種新型的“客戶端”技術(shù)。它的最終目標(biāo)是替代包含幾乎所有平臺的開發(fā):iOS,Android,Web,桌面;做到了一次編寫,多處運行。

Flutter是一種新型的“客戶端”技術(shù)。它的最終目標(biāo)是替代包含幾乎所有平臺的開發(fā):iOS,Android,Web,桌面;做到了一次編寫,多處運行。掌握Flutter web可能是Web前端開發(fā)者翻盤的唯一機會。

[[266220]]

在前些日子舉辦的Google IO 2019 年度開發(fā)者大會上,F(xiàn)lutter web作為一個很亮眼的技術(shù)受到了開發(fā)者的追捧。這是繼Flutter支持Android、IOS等設(shè)備之后,又一個里程碑式的版本,后續(xù)還會支持windows、linux、Macos、chroms等其他嵌入式設(shè)備。Flutter本身是一個類似于RN、WEEX、hHybrid等多端統(tǒng)一跨平臺解決方案,真正做到了一次編寫,多處運行,它的發(fā)展超出了很多人的想象,值得前端開發(fā)者去關(guān)注,今天我們來體驗一下Flutter Web。

概覽

先了解一下Flutter, 它是一個由谷歌開發(fā)的開源移動應(yīng)用軟件開發(fā)工具包,用于為Android和iOS開發(fā)應(yīng)用,同時也將是Google Fuchsia下開發(fā)應(yīng)用的主要工具。自從FLutter 1.5.4版本之后,支持了Web端的開發(fā)。它采用Dart語言來進行開發(fā),與JavaScript相比,Dart在 JIT(即時編譯)模式下,速度與 JavaScript基本持平。但是當(dāng)Dart以 AOT模式運行時,Dart性能要高于JavaScript。

Flutter內(nèi)置了UI界面,與Hybrid App、React Native這些跨平臺技術(shù)不同,F(xiàn)lutter既沒有使用WebView,也沒有使用各個平臺的原生控件,而是本身實現(xiàn)一個統(tǒng)一接口的渲染引擎來繪制UI,Dart直接編譯成了二進制文件,這樣做可以保證不同平臺UI的一致性。它也可以復(fù)用Java、Kotlin、Swift或OC代碼,訪問Android和iOS上的原生系統(tǒng)功能,比如藍牙、相機、WiFi等等。我們公司的Now直播、企鵝輔導(dǎo)等項目、阿里的閑魚等商業(yè)化項目已經(jīng)大量在使用。

架構(gòu)

Flutter的頂層是用drat編寫的框架,包含Material(Android風(fēng)格UI)和Cupertino(iOS風(fēng)格)的UI界面,下面是通用的Widgets(組件),之后是一些動畫、繪制、渲染、手勢庫等。

框架下面是引擎,主要用C / C ++編寫,引擎包含三個核心庫,Skia是Flutter的2D渲染引擎,它是Google的一個2D圖形處理函數(shù)庫,包含字型、坐標(biāo)轉(zhuǎn)換,以及點陣圖,都有高效能且簡潔的表現(xiàn)。Skia是跨平臺的,并提供了非常友好的API。第二是Dart 運行時環(huán)境以及第三文本渲染布局引擎。

最底層的嵌入層,它所關(guān)心的是如何將圖片組合到屏幕上,渲染變成像素。這一層的功能是用來解決跨平臺的。

了解了FLutter 之后,我來說一下今天的重頭戲,F(xiàn)lutter for Web。要想知道Flutter為什么能在web上運行,得先來看看它的架構(gòu)。

通過對比,可以發(fā)現(xiàn),web框架層和mobile的幾乎一模一樣。因此只需要重新實現(xiàn)一下引擎和嵌入層,不用變動Flutter API就可以完全可以將UI代碼從Android / IOS Flutter App移植到Web。Dart能夠使用Dart2Js編譯器把Dart代碼編譯成Js代碼。大多數(shù)原生App元素能夠通過DOM實現(xiàn),DOM實現(xiàn)不了的元素可以通過Canvas來實現(xiàn)。

安裝

Flutter Web開發(fā)環(huán)境搭建,以我的windows環(huán)境為例進行講解,其他環(huán)境類似,安裝環(huán)境比較繁瑣,需要耐心,有Android開發(fā)經(jīng)驗最好。

1、在Windows平臺開發(fā)的話,官方的環(huán)境要求是Windows 7 SP1或更高版本(64位)。

2、Java環(huán)境,安裝Java 1.8 + 版本之上,并配置環(huán)境變量,因為android開發(fā)依賴Java環(huán)境。

對于Java程序開發(fā)而言,主要會使用JDK的兩個命令:javac.exe、java.exe。路徑:C:Javajdk1.8.0_181bin。但是這些命令由于不屬于windows自己的命令,所以要想使用,就需要進行路徑配置。單擊“計算機-屬性-高級系統(tǒng)設(shè)置”,單擊“環(huán)境變量”。在“系統(tǒng)變量”欄下單擊“新建”,創(chuàng)建新的系統(tǒng)環(huán)境變量(或用戶變量,等效)。

(1)新建->變量名"JAVA_HOME",變量值"C:Javajdk1.8.0_181"(即JDK的安裝路徑)

(2)編輯->變量名"Path",在原變量值的最后面加上“;%JAVA_HOME%bin;%JAVA_HOME%jrebin”

(3)新建->變量名“CLASSPATH”,變量值“.;%JAVA_HOME%lib;%JAVA_HOME%libdt.jar;%JAVA_HOME%libtools.jar”

3、Android Studio編輯器,安裝Android Studio, 3.0或更高版本。我們需要用它來導(dǎo)入Android license和管理Android SDK以及Android虛擬機。(默認(rèn)安裝即可)

安裝完成之后設(shè)置代理,左上角的File-》setting-》搜索proxy,設(shè)置公司代理,用來加速下載Android SDK。

之后點擊右上角方盒按鈕(SDK Manager),用來選擇安裝SDK版本,最好選Android 9版本,API28,會有一個很長時間的下載過程。SDK是開發(fā)必須的代碼庫。默認(rèn)情況下,F(xiàn)lutter使用的Android SDK版本是基于你的 adb (Android Debug Bridge,管理連接手機,已打包在SDK)工具版本。 如果您想讓Flutter使用不同版本的Android SDK,則必須將該 ANDROID_HOME 環(huán)境變量設(shè)置為SDK安裝目錄。

右上角有個小手機類型的按鈕(AVD Manager),用來設(shè)置Android模擬器,創(chuàng)建一個虛擬機。如果你有一臺安卓手機,也可以連接USB接口,替代虛擬機。這個過程是調(diào)試必須的。安裝完成之后,在 AVD (Android Virtual Device Manager) 中,點擊工具欄的 Run。模擬器啟動并顯示所選操作系統(tǒng)版本或設(shè)備的啟動畫面。代表了正確安裝。

4、安裝Flutter SDK

下載Flutter SDK有多種方法,看看哪種更適合自己:

Flutter官網(wǎng)下載最新Beta版本的進行安裝: https://flutter.dev/docs/deve...

也可Flutter github項目中去下載,地址為: https://github.com/flutter/fl...

版本越新越好,不要低于1.5.4。

將安裝包zip解壓到你想安裝Flutter SDK的路徑(如:C:srcflutter;注意,不要將flutter安裝到需要一些高權(quán)限的路徑如C:Program Files)。記住,之后往環(huán)境變量的path中添加;C:srcflutterbin,以便于你能在命令行中使用flutter。

使用鏡像

由于在國內(nèi)安裝Flutter相關(guān)的依賴可能會受到限制,F(xiàn)lutter官方為中國開發(fā)者搭建了臨時鏡像,大家可以將如下環(huán)境變量加入到用戶環(huán)境變量中:

PUB_HOSTED_URL:https://pub.flutter-io.cn 

FLUTTER_STORAGE_BASE_URL: https://storage.flutter-io.cn

5、安裝Dart與Pub。安裝webdev、stagehand

Pub是Dart的包管理工具,類似npm,捆綁安裝。

Dart安裝版地址: http://www.gekorm.com/dart-wi...

默認(rèn)安裝即可,安裝之后記住Dart的路徑,并且配置到環(huán)境變量path中,以便于可以在命令行中使用dart與pub,默認(rèn)的路徑是:C:Program FilesDartdart-sdkbin

先安裝stagehand,stagehand是創(chuàng)建項目必須的工具。查看一下 C:\Users\chunpengliu\AppData\Roaming\Pub\Cache\bin 目錄下是否包含stagehand和webdev,如果有,添加到環(huán)境變量的path里面,如果沒有,按下面方法安裝:

  1. pub global activate stagehand 

webdev是一個類似于Koa的web服務(wù)器,執(zhí)行以下命令安裝

  1. pub global activate webdev 
  2. # or 
  3. flutter packages pub global activate webdev 

6、配置編輯器安裝Flutter和Dart插件

Flutter插件是用來支持Flutter開發(fā)工作流 (運行、調(diào)試、熱重載等)。

Dart插件 提供代碼分析 (輸入代碼時進行驗證、代碼補全等)。Android Studio的設(shè)置在File-》setting-》plugins-》搜索Flutter和Dart,安裝之后重啟。

VS code的設(shè)置在extension-》搜索Flutter和Dart,安裝之后重啟。

7、運行 flutter doctor

打開一個新的命令提示符或PowerShell窗口并運行以下命令以查看是否需要安裝任何依賴項來完成安裝:

  1. flutter doctor 

這是一個漫長的過程,flutter會檢測你的環(huán)境,并安裝所有的依賴,直至:No issues found!,如果有缺失,會就會再那一項前面打x。你需要一一解決。

一切就緒!

創(chuàng)建應(yīng)用

1、啟動 VS Code

調(diào)用 View>Command Palette…(快捷鍵ctrl+shift+p)

輸入 ‘flutter’, 然后選擇 ‘Flutter: New web Project’ 

輸入 Project 名稱 (如flutterweb), 然后按回車鍵

指定放置項目的位置,然后按藍色的確定按鈕

等待項目創(chuàng)建繼續(xù),并顯示main.dart文件。到此,一個Demo創(chuàng)建完成。

我們看到了熟悉的HTML文件以及項目入口文件main.dart。

web目錄下的index.html是項目的入口文件。main.dart初始化文件,圖片相關(guān)資源放在此目錄。

lib目錄下的main.dart,是主程序代碼所在的地方。

每個pub包或者Flutter項目都包含一個pubspec.yaml。它包含與此項目相關(guān)的依賴項和元數(shù)據(jù)。

analysis_options.yaml是配置項目的lint規(guī)則。

/dart_tool 是項目打包運行編譯生成的文件,頁面主程序main.dart.js就在其中。

2、調(diào)試Demo,打開命令行,進入到項目根目錄,執(zhí)行:

  1. webdev flutterweb 

編譯、打包完成之后,自動啟動(或者按F5)默認(rèn)瀏覽器,看一下轉(zhuǎn)換后的HTML頁面結(jié)構(gòu):

lib/main.dart是主程序,源碼非常簡單,整個頁面用widgets堆疊而成,區(qū)別于傳統(tǒng)的html和css。

  1. import 'package:flutter_web/material.dart'
  2.  
  3. void main() => runApp(MyApp()); 
  4.  
  5. class MyApp extends StatelessWidget { 
  6.   @override 
  7.   Widget build(BuildContext context) { 
  8.     return MaterialApp( 
  9.       title: 'Flutter Demo'
  10.       theme: ThemeData( 
  11.         primarySwatch: Colors.blue, 
  12.       ), 
  13.       home: MyHomePage(title: 'Flutter Demo Home Page'), 
  14.     ); 
  15.   } 
  16.  
  17. class MyHomePage extends StatelessWidget { 
  18.   MyHomePage({Key key, this.title}) : super(key: key); 
  19.  
  20.   final String title; 
  21.  
  22.   @override 
  23.   Widget build(BuildContext context) { 
  24.     return Scaffold( 
  25.       appBar: AppBar( 
  26.         title: Text(title), 
  27.       ), 
  28.       body: Center( 
  29.         child: Column( 
  30.           mainAxisAlignment: MainAxisAlignment.center, 
  31.           children: <Widget>[ 
  32.             Text( 
  33.               'Hello, World!'
  34.             ), 
  35.           ], 
  36.         ), 
  37.       ),  
  38.     ); 
  39.   } 

區(qū)別與flutter App應(yīng)用,我們導(dǎo)入的是flutter_web/material.dart庫而非flutter/material.dart,這是因為目前App的接口并非和Web的完全通用,不過隨著谷歌開發(fā)的繼續(xù),它們最終會被合并到一塊。

打開pubspec.yaml(類似于package.json),可以看到只有兩個依賴包flutter_web和flutter_web_ui,這兩個都已在github上開源。dev的依賴頁非常少,兩個編譯相關(guān)的包,和一個靜態(tài)文件分析包。

  1. name: flutterweb 
  2. description: An app built using Flutter for web 
  3. environment: 
  4.   # You must be using Flutter >=1.5.0 or Dart >=2.3.0 
  5.   sdk: '>=2.3.0-dev.0.1 <3.0.0' 
  6. dependencies: 
  7.   flutter_web: any 
  8.   flutter_web_ui: any 
  9. dev_dependencies: 
  10.   build_runner: ^1.4.0 
  11.   build_web_compilers: ^2.0.0 
  12.   pedantic: ^1.0.0 
  13. dependency_overrides: 
  14.   flutter_web: 
  15.     git: 
  16.       url: https://github.com/flutter/flutter_web 
  17.       path: packages/flutter_web 
  18.   flutter_web_ui: 
  19.     git: 
  20.       url: https://github.com/flutter/flutter_web 
  21.       path: packages/flutter_web_ui 

實戰(zhàn)

接下來,我們創(chuàng)建一個具有圖文功能的下載,根據(jù)實例來學(xué)習(xí)flutter,我們將實現(xiàn)下圖的頁面。它是一個上下兩欄的布局,下欄又分為左右兩欄。

第一步:更改主應(yīng)用內(nèi)容,打開lib/main.dart文件,替換class MyApp,首先是根組件MyApp,它是一個類組件繼承自無狀態(tài)組件,是項目的主題配置,在home屬性中調(diào)用了Home組件:

  1. class MyApp extends StatelessWidget { 
  2.   // 應(yīng)用的根組件 
  3.   @override 
  4.   Widget build(BuildContext context) { 
  5.     return MaterialApp( 
  6.       title: '騰訊新聞客戶端下載頁'//meta 里的titile 
  7.       debugShowCheckedModeBanner: false// 關(guān)閉調(diào)試bar 
  8.       theme: ThemeData( 
  9.         primarySwatch: Colors.blue, // 頁面主題 Material風(fēng)格 
  10.       ), 
  11.       home: Home(), // 啟動首頁 
  12.     ); 
  13.   } 

第二步,在Home類中,是我們要渲染的頁面頂導(dǎo),運用了AppBar組件,它包括了一個居中的頁面標(biāo)題和居右的搜索按鈕。文本可以像css一樣設(shè)置外觀樣式。

  1. class Home extends StatelessWidget { 
  2.   @override 
  3.   Widget build(BuildContext context) { 
  4.     return Scaffold( 
  5.       backgroundColor: Colors.white, 
  6.       appBar: AppBar( 
  7.         backgroundColor: Colors.white, 
  8.         elevation: 0.0
  9.         centerTitle: true
  10.         title: Text( // 中心文本 
  11.           "下載頁"
  12.           style: 
  13.               TextStyle(color: Colors.black, fontSize: 16.0, fontWeight: FontWeight.w500), 
  14.         ), 
  15. // 搜索圖標(biāo)及特性 
  16.         actions: <Widget>[  
  17.           Padding( 
  18.             padding: const EdgeInsets.symmetric(horizontal: 20.0), 
  19.             child: Icon( 
  20.               Icons.search, 
  21.               color: Colors.black, 
  22.             ), 
  23.           ) 
  24.         ], 
  25.       ), 
  26. //調(diào)用body渲染類,此處可以添加多個方法調(diào)用 
  27.       body: Stack( 
  28.         children: [ 
  29.             Body()  
  30.         ], 
  31.       ), 
  32.     ); 
  33.   } 

第三步,創(chuàng)建頁面主體內(nèi)容,一張圖加多個文本,使用了文本組件和圖片組件,頁面結(jié)構(gòu)采用了flex布局,由于兩個Expanded的Flex值均為1,因此將在兩個組件之間平均分配空間。SizedBox組件相當(dāng)于一個空盒子,用來設(shè)置margin的距離

  1. class Body extends StatelessWidget { 
  2.   const Body({Key key}) : super(key: key); 
  3.  
  4.   @override 
  5.   Widget build(BuildContext context) { 
  6.     return Row( 
  7.       crossAxisAlignment: CrossAxisAlignment.stretch, 
  8.       mainAxisAlignment: MainAxisAlignment.spaceBetween, 
  9.       children: <Widget>[ 
  10.         Expanded( // 左側(cè) 
  11.           flex: 1
  12.           child: Image.asset(// 圖片組件 
  13.             "background-image.jpg"// 這是一張在web/asserts/下的背景圖 
  14.             fit: BoxFit.contain, 
  15.           ), 
  16.         ), 
  17.         const SizedBox(width: 90.0), 
  18.         Expanded( // 右側(cè) 
  19.           flex:1
  20.           child: Column( 
  21.             mainAxisAlignment: MainAxisAlignment.center, 
  22.             crossAxisAlignment: CrossAxisAlignment.start, 
  23.             children: <Widget>[ 
  24.               Text( // 文本組件 
  25.                 "騰訊新聞"
  26.                 style: TextStyle( 
  27.                     color: Colors.black, fontWeight: FontWeight.w600, fontSize: 50.0, fontFamily: 'Merriweather'), 
  28.               ), 
  29.               const SizedBox(height: 14.0),// SizedBox用來增加間距 
  30.               Text( 
  31.                 "騰訊新聞是騰訊公司為用戶打造的一款全天候、全方位、及時報道的新聞產(chǎn)品,為用戶提供高效優(yōu)質(zhì)的資訊、視頻和直播服務(wù)。資訊超新超全,內(nèi)容獨家優(yōu)質(zhì),話題評論互動。"
  32.                 style: TextStyle( 
  33.                     color: Colors.black, fontWeight: FontWeight.w400, fontSize: 24.0, fontFamily: "Microsoft Yahei"), 
  34.                 textAlign: TextAlign.justify, 
  35.               ), 
  36.               const SizedBox(height: 20.0),  
  37.               FlatButton( 
  38.                 onPressed: () {}, // 下載按鈕的響應(yīng)事件 
  39.                 color: Color(0xFFCFE8E4), 
  40.                 shape: RoundedRectangleBorder( 
  41.                   borderRadius: BorderRadius.circular(16.0), 
  42.                 ), 
  43.                 child: Padding( 
  44.                   padding: const EdgeInsets.all(12.0), 
  45.                   child: Text("點擊下載", style: TextStyle(fontFamily: "Open Sans")), 
  46.                 ), 
  47.               ), 
  48.             ], 
  49.           ), 
  50.         ), 
  51.         const SizedBox(width: 100.0), 
  52.       ], 
  53.     ); 
  54.   } 

到此,頁面創(chuàng)建結(jié)束,保存,運行webdev serve,就可以看到效果了。

總結(jié)

FLutter web是Flutter 的一個分支,在開發(fā)完App之后,UI層面的FLutter代碼在不修改的情況下可以直接編譯為Web版,基本可以做到代碼100%復(fù)用,體驗還不錯。目前Flutter web作為預(yù)覽版無論從性能上、易用上還是布局上都超出了預(yù)期,觸摸體驗挺好,雖然體驗比APP差一些,但是比傳統(tǒng)的web要好很多。試想一下 Flutter 開發(fā)iOS 和Android的App 還免費贈送一份Web版,并且比傳統(tǒng)的web開發(fā)出來的體驗還好。Write once ,Run anywhere。何樂而不為?

我覺得隨著谷歌的持續(xù)優(yōu)化,等到正式版發(fā)布之后,開發(fā)體驗越來越好,F(xiàn)lutter開發(fā)者會吃掉H5很大一部分份額。Flutter 可能會給目前客戶端的開發(fā)模式帶來一些變革以及分工的變化, Flutter目前的開發(fā)體驗不是很好, 但是潛力很大,值得前端人員去學(xué)習(xí)。

但是目前還是有一部分問題,F(xiàn)lutter web是為客戶端開發(fā)(尤其是安卓)人員開發(fā)準(zhǔn)備的,對于前端理解來說學(xué)習(xí)成本有點高。目前FLutter web和 flutter 還是兩個項目,編譯環(huán)境也是分開的,需要在代碼里面修改Flutter相關(guān)庫的引用為Flutter_web,組件還不能達到完全通用,這個谷歌承諾正在解決中,谷歌的最終目標(biāo)是Web、移動App、桌面端win mac linux、以及嵌入式版的Flutter代碼庫之間保持100%的代碼可移植性。

個人感覺,開發(fā)體驗還不太好,還有很多坑要去踩,版本變更很快。還有社區(qū)資源稀少的問題,需要一定長期的積累。兼容性問題,代碼轉(zhuǎn)換后大量使用了web components,除了chrome之外,兼容性還是有些問題。

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

2011-04-21 13:02:29

2010-12-06 08:58:48

Web開發(fā)

2018-01-08 10:39:17

前端技術(shù)框架

2014-02-27 10:24:45

Web技術(shù)編程語言

2015-07-21 10:42:17

API開發(fā)體驗Yo

2023-12-04 07:06:11

2010-05-13 21:03:42

Office 2010

2012-03-22 09:57:56

Web

2011-09-20 09:27:50

Web

2022-01-23 11:12:29

前端開發(fā)編碼開發(fā)

2010-12-21 10:00:23

Web開發(fā)

2019-03-12 10:38:18

前端開發(fā)Nginx

2015-04-07 12:19:30

Web開發(fā)開發(fā)資源

2017-01-16 13:15:19

前端開發(fā)者清單

2011-12-23 11:22:25

2011-05-31 10:49:43

開發(fā)工具PHPHTML

2023-09-26 12:40:38

獨立開發(fā)者夢想

2021-04-08 10:40:24

前端工具代碼

2012-08-14 17:14:50

瀏覽器IE6

2012-06-13 01:23:30

開發(fā)者程序員
點贊
收藏

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

国产丝袜不卡| 中文字幕欧美在线| 日韩中文字幕免费在线| 大地资源中文在线观看免费版| 免费国产亚洲视频| 欧美高清视频在线观看| 丰满少妇一区二区| 成人在线视频区| 亚洲成人久久影院| 天堂精品视频| 亚洲黄色片视频| 久久久久久黄| 欧美福利视频在线观看| 免费看黄色的视频| 中文字幕亚洲在线观看| 欧美亚洲尤物久久| 国产精彩视频一区二区| 992tv免费直播在线观看| 成人av在线观| 91久久久久久| 福利网址在线观看| 亚洲欧美亚洲| 色阁综合伊人av| 国产视频久久久久久| 在线欧美激情| 色综合久久综合网欧美综合网| 新呦u视频一区二区| 蜜桃av噜噜一区二区三区麻豆| 麻豆成人久久精品二区三区红 | 欧美日韩成人激情| a级黄色一级片| 尤物在线网址| 一区在线播放视频| 西游记1978| 国产九九在线| 久久久久久久综合日本| 久久国产主播精品| 亚洲免费成人网| 精品一区精品二区高清| 国产精品成久久久久三级| 亚洲黄色一区二区| 亚洲性感美女99在线| 精品少妇一区二区30p| 天天爽天天爽天天爽| 欧美一二区在线观看| 亚洲精品永久免费| 无码人妻精品一区二区三区温州| 视频在线亚洲| 日韩精品中文字幕在线不卡尤物| 青青草原播放器| **欧美日韩在线| 欧美日韩国产高清一区二区三区| av污在线观看| 欧美三级电影网址| 欧美日本在线播放| 爱豆国产剧免费观看大全剧苏畅| 国产精品久久乐| 欧美三级在线看| 五月花丁香婷婷| 日韩大陆av| 欧美一区午夜精品| 一级片免费在线观看视频| 亚洲香蕉久久| 日韩一卡二卡三卡四卡| 成人免费黄色av| 91在线一区| 亚洲国产精品一区二区久| 日韩无码精品一区二区| 奇米影视777在线欧美电影观看| 日韩av一区二区在线观看| 亚洲黄色在线网站| 国产欧美一区二区三区精品观看| 国产亚洲精品久久久久久| 极品久久久久久久| 亚洲成人精选| 国内精品国产三级国产在线专| 日韩视频免费观看高清| 久久综合狠狠| 成人免费福利在线| 午夜精品久久久久久久爽| 成年人国产精品| 欧美日韩精品免费观看| 精品黄色免费中文电影在线播放 | 亚洲激情一区二区| 欧美jizz18性欧美| 一区二区三区四区在线播放| 国产男女免费视频| 影视一区二区三区| 欧美一区二区三区不卡| 欧美无人区码suv| 精品视频免费| 欧美精品videosex牲欧美| 久久久久久久黄色片| 青青草精品视频| 99中文字幕| 成人资源www网在线最新版| 亚洲精品综合在线| 久草青青在线观看| 高清久久一区| 亚洲女人被黑人巨大进入| 久久噜噜色综合一区二区| 亚洲国产网站| 国产美女久久精品香蕉69| 乱色精品无码一区二区国产盗| 国产色一区二区| 国产玉足脚交久久欧美| 91伊人久久| 亚洲激情第一页| 永久av免费网站| 亚洲中午字幕| 亚洲一区国产精品| 国产原创av在线| 亚洲国产中文字幕在线视频综合| 黄色国产小视频| 国产厕拍一区| 久久久精品2019中文字幕神马| 亚洲黄色激情视频| 国产91丝袜在线18| 亚洲韩国在线| 日韩av福利| 亚洲精品一区二区三区99| 国内毛片毛片毛片毛片毛片| 亚洲一区二区网站| av在线不卡一区| 麻豆av在线导航| 欧美色综合网站| 亚洲国产无码精品| 亚洲福利专区| 91青青草免费在线看| 亚洲xxxxxx| 在线国产电影不卡| 大地资源二中文在线影视观看| 伊人久久大香线蕉精品组织观看| 国产精品丝袜一区二区三区| 免费一级在线观看| 欧美性生交大片免费| 中文字幕第3页| 亚洲调教视频在线观看| 91精品入口蜜桃| 最爽无遮挡行房视频在线| 欧美人动与zoxxxx乱| 亚洲AV无码成人精品区明星换面| 国产精品普通话对白| 国语精品免费视频| 成av人片在线观看www| 亚洲高清一区二| 日本少妇激情视频| a级精品国产片在线观看| 欧美黄色免费网址| 中文在线综合| 国产+人+亚洲| 色哟哟国产精品色哟哟| 五月婷婷久久丁香| 91av在线免费| 久久午夜精品一区二区| 欧美最大成人综合网| 日韩高清成人| 爱福利视频一区| 国产精品视频第一页| 亚洲免费在线播放| 色欲欲www成人网站| 黄色亚洲在线| 国产伦精品一区二区三区四区视频| 丁香影院在线| 亚洲精品永久免费| 国产91av在线播放| 国产精品福利一区二区| 韩国一区二区在线播放| 欧美午夜久久| 久久久久久国产精品mv| 欧美不卡高清一区二区三区| 久久黄色av网站| www日本高清视频| 亚洲va韩国va欧美va精品| theav精尽人亡av| 青青草国产成人99久久| 国产a级片免费看| 亚洲精品不卡在线观看| 777777777亚洲妇女| 国内精品在线视频| 制服丝袜一区二区三区| 日本中文字幕网| 久久久久国产精品麻豆| 中文字幕视频三区| 亚洲精品影视| 亚洲人成人77777线观看| 欧美午夜在线播放| 欧美中文字幕在线视频| 免费在线看a| 亚洲福利视频二区| 久久精品99北条麻妃| 亚洲摸摸操操av| 色欲av无码一区二区三区| 久久99久久久久久久久久久| 777av视频| 日韩国产一区二区三区| 成人区精品一区二区| 69堂免费精品视频在线播放| 精品自拍视频在线观看| 黑人与亚洲人色ⅹvideos| 精品少妇一区二区三区视频免付费 | 91精品一区二区| 欧美人与性动交α欧美精品济南到 | 国产经典一区| 欧美高清视频在线| 中文字幕日本在线| 日韩国产欧美精品一区二区三区| 一区二区视频网| 精品久久久久久久久久久久| 五月天av网站| 国产欧美综合在线观看第十页 | 中文无码精品一区二区三区| 亚洲一区二区三区小说| 国产免费一区二区三区四区| 久久久亚洲精品一区二区三区| 91性高潮久久久久久久| 日产欧产美韩系列久久99| 青青青免费在线| 综合激情在线| 亚洲乱码国产乱码精品天美传媒| 免费观看成人www动漫视频| 91pron在线| 亚洲爽爆av| 国产精品中文久久久久久久| 色老太综合网| 45www国产精品网站| 福利在线导航136| 欧美理论片在线观看| 巨大荫蒂视频欧美另类大| 在线视频日本亚洲性| 蜜桃成人在线视频| 亚洲精品日韩丝袜精品| 色婷婷综合视频| 精品国产91洋老外米糕| 精品黑人一区二区三区国语馆| 欧美片在线播放| 最新中文字幕在线观看视频| 色综合一个色综合| 国产欧美一区二区三区在线看蜜臂| 亚洲国产cao| 国产在线观看你懂的| 一区二区三区av电影 | 久草视频视频在线播放| 亚洲精品久久视频| 日本wwwxxxx| 亚洲国产精品久久91精品| 欧美一区二区黄片| 亚洲国产高清自拍| 女人18毛片一区二区三区| 欧美精品一区二区三区四区| 亚洲精品福利网站| 欧美成人艳星乳罩| 囯产精品久久久久久| 精品国产一区二区三区忘忧草| 亚洲国产精品久久久久久6q| 精品日韩一区二区三区| 蜜臀久久久久久999| 亚洲精品电影网| 青青草手机在线| 一区二区三区 在线观看视| 91大神xh98hx在线播放| 国产电影一区二区三区| 精品一区二区亚洲| 可以免费观看的毛片| 国产一区二区三区免费| 日韩精品一区二区三区中文不卡 | 免费av毛片在线看| 久久天天躁狠狠躁夜夜av| 自由的xxxx在线视频| 欧美精品videos另类日本| av在线视屏| 国产成人免费av电影| 日本亚洲欧洲无免费码在线| 999国产在线| 欧美激情15p| 日本中文不卡| 综合久久亚洲| 一二三四视频社区在线| 另类国产ts人妖高潮视频| 亚洲综合婷婷久久| 粉嫩av一区二区三区粉嫩| 法国空姐电影在线观看| 亚洲人成亚洲人成在线观看图片 | 欧美在线一区二区| 国产三级视频在线播放| 日韩hd视频在线观看| 在线观看免费黄色| 久久欧美在线电影| 久久亚洲国产精品尤物| 国产精品国产精品国产专区不卡| 九九热精品视频在线观看| 亚洲欧美日韩不卡| 国产精品日韩精品欧美精品| 三上悠亚在线一区二区| 成人免费毛片a| 蜜桃av免费在线观看| 性久久久久久久| 国产精品久久免费| 国产视频自拍一区| 性xxxxfjsxxxxx欧美| 国产成人精品999| 视频二区欧美| 在线不卡日本| 美女国产精品| 久久精品aⅴ无码中文字字幕重口| 国产日韩欧美精品电影三级在线| 欧美日韩在线视频免费播放| 91福利在线看| 手机在线精品视频| www.欧美精品| 五月天激情播播| 久久精品日产第一区二区| 一级 黄 色 片一| 久久亚洲影视婷婷| 久青草视频在线观看| 在线播放中文字幕一区| 黄色片在线播放| 久久久在线观看| 日韩免费一级| 一区二区三区在线视频111| 亚洲自啪免费| 精品1卡二卡三卡四卡老狼| 综合婷婷亚洲小说| 中文字幕+乱码+中文| 亚洲欧美在线看| 欧亚在线中文字幕免费| 99久久自偷自偷国产精品不卡| 日韩精品欧美| 日本美女高潮视频| 久久亚洲免费视频| 日韩少妇裸体做爰视频| 欧美mv和日韩mv国产网站| 成人福利在线观看视频| 国产噜噜噜噜噜久久久久久久久| 亚洲瘦老头同性70tv| 日本网站免费在线观看| 丁香六月综合激情| 亚洲综合网在线| 日韩一区二区高清| 制服丝袜在线播放| 亚洲最大av网站| 欧美一区亚洲| 亚洲热在线视频| 亚洲手机成人高清视频| 一级特黄aaa| xvideos成人免费中文版| 亚洲国产天堂| 一区二区三区欧美成人| 久久se精品一区二区| 看免费黄色录像| 日韩免费性生活视频播放| 午夜羞羞小视频在线观看| 成人av电影免费| 亚洲第一黄网| 中文字幕丰满孑伦无码专区| 欧美午夜片欧美片在线观看| 蝌蚪视频在线播放| 国产精品久久久久久久久久三级| 凹凸成人精品亚洲精品密奴| 国产原创精品在线| 亚洲人成网站色在线观看| www.麻豆av| 97视频在线观看网址| 亚洲免费成人av在线| 成年人免费大片| 国产精品久久久久久亚洲伦| 国产一区二区在线视频聊天| 久久99精品视频一区97| 加勒比视频一区| 日日摸天天爽天天爽视频| 国产精品美女一区二区三区| a级片免费观看| 97国产精品免费视频| 精品国产一区二区三区av片| 91 视频免费观看| 亚洲国产精品久久一线不卡| 人成免费电影一二三区在线观看| 国产精品久久久久久久一区探花 | 这里只有精品在线观看| 一区在线不卡| 六月婷婷在线视频| 国产欧美精品一区二区三区四区 | 亚洲第一中文字幕| 免费福利视频一区二区三区| 亚洲一区二区三区色| 国产成人亚洲综合色影视| 久久亚洲天堂网| 日韩视频免费在线| 青青一区二区| 午夜啪啪小视频| 精品成人av一区| 日本免费中文字幕在线| 国产精品10p综合二区| 蜜桃一区二区三区四区| 国产无遮挡又黄又爽| 中文字幕在线成人| 精品资源在线| 欧美专区第二页| 欧洲视频一区二区| 美足av综合网|