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

前端插件化架構的探索和實踐

開發 前端
babel插件、webpack插件、vue-cli插件,為啥這么多的優秀框架都是使用插件系統?插件化架構是什么?帶來了什么好處?可以應用到什么場景呢?來看看吧。

 babel插件、webpack插件、vue-cli插件,為啥這么多的優秀框架都是使用插件系統?插件化架構是什么?帶來了什么好處?可以應用到什么場景呢?

1. 插件化架構定義

插件化架構又稱微核架構,指的是軟件的內核相對較小,主要功能和業務邏輯都通過插件實現。插件化架構一般有兩個核心的概念:內核和插件。

  •  內核(pluginCore)通常只包含系統運行的最小功能;
  •  插件(plugin)則是互相獨立的模塊,一般會提供單一的功能。

內核一般會將要完成的所有業務進行抽象,抽象出最小粒度的基礎接口,供插件方來調用。這樣,插件開發的效率將會極大的提高。比方說,瀏覽器就是一個典型的插件化架構,瀏覽器是內核,頁面是插件,這樣通過不同的URL地址加載不同的頁面,來提供非常豐富的功能。而且,我們開發網頁時候,瀏覽器會提供很多API和能力,這些接口通過 window來掛載, 比如,DOM、BOM、Event、Location等等。

設計一個完善的插件化架構的系統,包含三要素:

  • plugCore:插件內核,提供插件運行時,管理插件的加載、運行、卸載等生命周期(類比瀏覽器);
  •  pluginAPI:插件運行時需要的基礎接口(類比瀏覽器例子,相當于window);
  •  plugin:一系列特定功能的獨立模塊(類比瀏覽器例子,相當于不同的網頁)。

2. 插件化架構的實踐

我們將從plugCore、 pluginAPI和plugin三要素,來解析jQuery、Babel和Vue CLI這三大優秀的開源庫其插件化架構的實踐。

2.1 jQuery的插件化架構

jQuery 是一個 JavaScript 庫,極大地簡化了JavaScript 編程,用更少的代碼完成更多工作。早期瀏覽器的標準不統一,開發網頁需要兼容不同瀏覽器的用戶使用是一件十分痛苦的事情。jQuery在適配了不同瀏覽器的差異的基礎上提供了更加完善易用API,供前端開發人員完成網頁編程,使用jQuery編寫的網頁,在一套代碼下也可以在不同廠商的瀏覽器上正常運行。在 MV* 框架流行之前,jQuery是絕對的扛霸子。jQuery是可擴展的,其擁有完善的插件體系,網頁開發所需要的各種插件在其生態都可以找到。我們解析一下jQuery插件體系。

插件定義:

特別說明:$.fn = jQuery.protype(插件精髓)。jQuery的插件機制通過原型鏈來掛載。

插件機制執行過程

demo 示例

$app便可以在原型鏈上查找到myPlugin:

從三要素來總結:

  •  pluginCore:通過原型鏈賦值來擴展不同的插件,再獲得jQuery實例后可以被調用。
  •  pluginAPI:jQuery包的核心接口,(jQuery依靠其優異的Api取勝)
  •  plugin:無限制,可以是JavaScript的類型,一般是實現具體功能的模塊,比如,日期選擇器等。

2.2 Babel的插件化架構

Babel 是一個工具鏈,主要用于將 ECMAScript 2015+ 版本的代碼轉換為向后兼容的 JavaScript 語法,以便能夠運行在當前和舊版本的瀏覽器或其他環境中。在代碼轉換的過程中會涉及許多特性和語法的轉換,而且ECMAScript的提案總是不斷地更新。如何組織大量(不斷增加)的轉換規則呢?我們來看看 Babel的工作原理。

Babel轉換源碼,分為三個步驟:

  •     解析(parse):進行詞法分析(Lexical Analysis)和語法分析(Syntactic Analysis)以生成抽象語法樹(AST);
  •     轉換 (transform):遍歷AST中每個節點并進行相應的轉換操作,該過程通過使用不同的插件來實現各種特性和語法的轉換;
  •     生成 (generate):根據AST生成目標代碼。

Babel在AST轉換的過程(即上圖的第2步),便使用插件化架構,下面將會詳細講解這個轉換過程的插件化架構的使用。

插件定義:

插件是一個函數,返回值是一個包含visitor的對象。插件定義的部分概念說明:

  •  name:插件名
  •  pluginAPI: 插件運行時傳入的API
  •  visitor: 是一個對象,對象的key是AST的每節點的類型,對象的值是一個函數,AST轉換的過程便在這里發生的。
  •  nodePath:是一個AST的節點的實例對象,詳細可以參考:@babel/parser/src/parser/node.js [1],其中, type字段 : 該節點的類型,常見類型:VariableDeclaration(變量聲明)、VariableDeclarator(變量聲明表達式)、ArrowFunctionExpression(箭頭函數表達式)等等,詳細可以參考@babel/types [2]。

(筆者認為pluginAPI還應包括nodePath,因為,每個節點實例除了語法和詞法描述,還包含需求語法間的轉換方法)

插件示例

箭頭函數轉換成普通函數的插件:@babel/plugin-transform-arrow-functions [3]源碼:

插件的執行思路:

  •  第一步,執行該插件,獲取到包含visitor對象;
  •  第二步,ATS遍歷節點,檢測nodePath的type === 'ArrowFunctionExpression',尋找到vistor對象的中key為 ArrowFunctionExpression的函數;
  •  第三步,將nodePath傳入該函數進行調用(AST在這步被修改);

單個插件的執行思路很明確了,那么在ATS遍歷過程,怎么做到多個插件一起工作呢?

Babel在轉換源碼過程中,插件化架構的工作流程是這樣的:

  •  第一步:通過解析babel的配置文件(或者命令行--plugins參數),獲取Babel配置的所有插件的描述;
  •  第二步,將插件的require進內存,獲得插件函數,并執行插件函數,獲取到多個包含vistor字段對象;(詳細邏輯:@babel/core/src/config/full.js [4])
  •  第三步,將多個包含vistor字段對象整合成一個大的visitor源碼展示(詳細邏輯:@babel/core/src/transformation/index.js [5]):

合并后的visitor對象:

visitor的對象中的值變成了 Array<function(nodePath)>

  •  第四步,AST遍歷時,每個節點根據 NodeType,來獲取 visitor[NodeType],并依次執行。

從三要素來總結:

  •  pluginCore:插件加載并整合(即vistor合并),AST遍歷期間是調用查找vistor[NodeType]并依次調用;
  •  pluginAPI:nodePath,提供不同類型節點的接口來轉換AST節點;
  •  plugin:visitor[NodeType]=function(nodepath)。

2.3 vue-cli的插件化架構

Vue CLI 是一個基于 Vue.js 進行快速開發的完整系統。CLI插件是向你的 Vue 項目提供可選功能的 npm 包,例如 Babel/TypeScript 轉譯、ESLint 集成、單元測試和 end-to-end 測試等。Vue CLI 插件的名字以 @vue/cli-plugin- (內建插件) 或 vue-cli-plugin- (社區插件) 開頭,非常容易使用。下面,我們將會解析cli插件的定義、執行、安裝等過程。

插件定義

插件必須是vue-cli-plugin-命名的npm包,并且目錄結構也是要嚴格遵循文件命名來定義。

注意:@vue/cli-service [6],會通過 項目根目錄下package.json中dependencies和devDependencies中定義的 npm包中符合插件命名規范的 npm包作為項目的插件。

文件命名和內容說明:

  •  generator.js:會在插件被添加時執行,可以安裝npm包、修改項目源碼等功能;

  •  prompts.js:所有的對話邏輯都存儲在 prompts.js 文件中。對話內部是通過 inquirer [7] 實現,在調用其獲得安裝選項結果,并在 generator.js調用時作為參數存入;

  •  index.js:Service插件的入口,@vue/cli-service [8]啟動時被執行

詳情可以去看Vue Cli 插件開發指南 [9]

我們把Vue CLI的插件執行分成兩種情況:

  •  第一種:插件未安裝,插件被添加的時候調用(prompts.js + generator.js)
  •  第二種:插件已安裝,插件系統啟動時被執行(index.js)

第一種 安裝流程

相比Babel的手動安裝添加插件方式,Vue CLI的插件系統提供命令行的安裝方式就顯得很方便了。我們看看Vue Cli插件系統時怎么實現一行命令添加插件的功能。

安裝流程的執行思路如下:

  •  第一步:從命令行參數解析出插件名,使用npm(yarn)install vue-cli-plugin-xxx 安裝插件,源碼位置:@vue/cli/lib/add.js [10]
  •  第二步:require('vue-cli-plugin-xxx/prompts'),并獲取用戶安裝是選項結果pluginOptions,源碼位置:@vue/cli/lib/invoke.js [11]   

  •   第三步:使用pluginName和pluginOptions作為參數構成出Generator [12]對象的實例

  •  第四步:執行generator.generate方法。這步包括了三個關鍵步驟:

         1)require(vue-cli-plugin-xxx/generator),獲得插件的執行函數;

         2)構建GeneratorAPI(即pluginAPI);

         3)調用generator.js導出函數。

  •  詳細代碼:_@vue/cli/lib/Generator.js [113]_
  •  第五步:將插件的參數添加到vue.config.js文件中。

第二種 運行流程

插件運行流程是由@vue/cli-service [14]這個插件系統定義的,這里的調用插件有兩種:

  •  第一種 內置插件@vue/cli-service的命令和配置相關,將系插件統功能拆分出多個內置插件,在插件系統中默認調用);
  •  第二種 項目插件,package.json 中定義的npm包名符合插件命名規范)。

插件運行邏輯很簡單:

這兩個流程的 pluginAPI是不一樣的。

  •  安裝流程:@vue/cli/lib/GeneratorAPI [15]
  •  運行流程:@vue/cli-service/lib/PluginAPI [16]

從三要素來總結:

1)安裝流程

  •  pluginCore:@vue/cli [17]通過命令行參數獲得插件包名,然后安裝插件的npm包,并執行prompts.js 獲得用戶安裝選項結果,然后,使用選項結果和generator.js作為參數構造出generator,并在調用generator.generate中執行generator.js函數;
  •  pluginAPI:GeneratorAPI [18],提供了源碼修改、npm包管理、模版文件生成等功能;
  •  plugin:prompts.js和generator.js組成,解決某種能力植入項目時,要處理的依賴。

2)運行流程

  •  pluginCore:@vue/cli-service [19],通過package.json中獲得項目插件后,與系統內置插件合并,最后依次執行;
  •  pluginApI:PluginAPI [20],提供webpack配置修改和命令管理的能力;
  •  plugin:index.js文件,在不同命令下進行工作。

一個插件系統是可以不多個插件類型,并且插件系統通過命令安裝插件的實現,用戶在使用插件系統時添加插件也是十分方便的。

3. 插件化架構的應用

3.1 應用場景

通過上述的實例,總結處理插件架構的應用場景。

  •  第一種:富pluginAPI場景:代碼在多種場景中運行,需要抹平場景中差異。(jQuery);
  •  第二種:富plugin場景,插件系統,可預期需求會越來越多,適合通過更多的插件來簡化系統的代碼量(Babel)
  •  第三種:富pluginCore和pluginAPI場景,插件系統本身非常復雜,需要對開發人員要求極高,這時候,將復雜的工作放到內核和中pluginApi實現,剩下大部分的簡單的編碼工作留給插件方實現,插件方借助pluginApi也可以快速完成業務開發(Vue CLI)

3.2 發展方向

通過建立一個插件標準,將研發流程沉淀的能力進行插件化編程,整個公司通過使用一套的插件系統(中臺),這樣意味著,我們不用重復造業務輪子,團隊和企業可以持續積累自己的插件生態,讓軟件開可以像汽車等工業制造一樣,打造一條標準化裝配的流水線。 

 

責任編輯:龐桂玉 來源: segmentfault
相關推薦

2024-03-06 19:57:56

探索商家可視化

2023-09-07 20:04:06

前后端趨勢Node.js

2020-08-20 07:54:58

Node多線程解密

2022-05-16 14:12:43

微服務流量軟件

2017-05-18 11:43:41

Android模塊化軟件

2022-08-04 10:32:04

Redis命令

2023-11-13 11:27:58

攜程可視化

2022-01-24 12:38:58

Vite插件開發

2020-10-10 07:14:08

前端項目斷點

2015-08-05 09:53:34

運維自動化

2024-07-25 14:04:16

2023-08-18 10:49:14

開發攜程

2023-11-30 09:34:14

數據可視化探索

2024-12-05 12:01:09

2022-04-07 16:50:28

FlinkB站Kafka

2021-05-20 09:55:23

Apache Flin阿里云大數據

2025-03-20 10:50:08

RedisCaffeine緩存監控

2022-12-15 11:26:44

云原生

2022-10-20 10:02:16

前端測試開發

2025-07-10 03:00:00

點贊
收藏

51CTO技術棧公眾號

亚洲一区二区动漫| 全球av集中精品导航福利| 中文字幕亚洲不卡| 超碰97人人人人人蜜桃| 国产精品xxxx喷水欧美| 国产一区二区三区四区二区| 欧美男女性生活在线直播观看| 国产女主播av| 嫩草精品影院| 韩国av一区二区三区四区| 97视频在线观看播放| 刘亦菲国产毛片bd| 波多野结衣在线一区二区| 五月天丁香久久| 中文字幕剧情在线观看一区| 午夜在线视频观看| 国产一区二区三区四| 欧美亚洲国产另类| 国产大片免费看| 国产亚洲一卡2卡3卡4卡新区| 日韩午夜在线播放| 中文字幕在线导航| 女厕盗摄一区二区三区| 亚洲天堂中文字幕| 日本一区二区三区免费观看| 丰满人妻一区二区| 蜜桃精品在线观看| 57pao国产成人免费| 天天操天天操天天操天天操天天操| 青青视频一区二区| 精品国产乱码久久久久久久| 国内外成人免费在线视频| 美女露胸视频在线观看| 亚洲欧美区自拍先锋| 涩涩涩999| 日韩欧美在线番号| 不卡免费追剧大全电视剧网站| 成人深夜直播免费观看| 特级西西444www大胆免费看| 西西人体一区二区| 午夜精品久久久久久久久久久久| 国产精品久久久久久久精| 成人精品影院| 国产午夜一区二区| 加勒比一区二区| 久久电影在线| 亚洲第一网站免费视频| 绯色av蜜臀vs少妇| 精品三级国产| 欧美一区二区在线免费播放| 中文字幕免费高清在线| 先锋欧美三级| 色av综合在线| 日韩一级在线免费观看| videos性欧美另类高清| 婷婷久久综合九色综合伊人色| 丁香六月激情婷婷| 国语对白在线刺激| 亚洲福利一区二区三区| 日本大片免费看| 久久五月精品中文字幕| 亚洲一区在线观看免费 | 伦伦影院午夜日韩欧美限制| 成人午夜免费影院| 99热在线成人| 欧美xxxx14xxxxx性爽| 国产在线一卡二卡| 欧美网站在线| 97香蕉久久超级碰碰高清版| 国产精品国产三级国产专区52| 中文一区二区| 热久久视久久精品18亚洲精品| 中文字幕一区二区人妻电影| 日本在线不卡视频| 国产一区玩具在线观看| 精品国自产拍在线观看| 99精品偷自拍| 日韩精品国内| 日本电影在线观看网站| 亚洲女性喷水在线观看一区| 成人在线播放网址| 东京一区二区| 欧美日韩一本到| 欧美性猛交xxxx乱大交91| 99精品在免费线中文字幕网站一区| 精品免费视频.| 国产精品jizz| 99re6这里只有精品| 色综合久久悠悠| 成人毛片18女人毛片| 秋霞av亚洲一区二区三| av一区二区三区四区电影| 四虎永久在线观看| 亚洲国产经典视频| av在线播放天堂| av成人在线播放| 欧美成人高清电影在线| 日韩av在线看免费观看| 在线精品视频在线观看高清| 欧美性在线观看| 91国产精品一区| 99国产精品国产精品毛片| 日日夜夜精品网站| 丁香花在线观看完整版电影| 在线观看成人小视频| 2025中文字幕| 成人免费av| 国内精品久久久久久影视8| 中文字幕无码乱码人妻日韩精品| 高清在线观看日韩| 亚洲欧美日韩精品综合在线观看| 午夜激情在线| 欧美三区免费完整视频在线观看| 国产免费一区二区三区最新6| 精品国产一区二区三区香蕉沈先生| 久久999免费视频| 波多野结衣电车| www.欧美日韩国产在线| 超碰在线免费观看97| 日本欧美日韩| 亚洲国语精品自产拍在线观看| 国内毛片毛片毛片毛片毛片| 久久久久99| 国产精品一区二区三区精品| 美女国产在线| 欧美最猛黑人xxxxx猛交| 亚洲观看黄色网| 欧美视频导航| 91在线|亚洲| h视频在线免费| 色又黄又爽网站www久久| fc2成人免费视频| 欧美一区亚洲| 国产狼人综合免费视频| 黄色在线视频观看网站| 欧美性精品220| 精品国产av色一区二区深夜久久 | 亚洲男人7777| 国产一级中文字幕| 国产高清不卡一区二区| 日韩视频在线免费播放| 精品久久99| 这里只有精品丝袜| 无码人妻丰满熟妇奶水区码| 91捆绑美女网站| av免费看网址| 亚洲三区欧美一区国产二区| 久久国产精品久久久| 国产又粗又长又大视频| 国产精品成人午夜| xxx国产在线观看| 三上亚洲一区二区| 国产视频福利一区| 成人片在线看| 日韩三级高清在线| 国产真人真事毛片| 成人美女在线视频| 国产视频九色蝌蚪| 四虎5151久久欧美毛片| 青青a在线精品免费观看| 男人av在线| 色欧美日韩亚洲| 日本污视频网站| 久久丁香综合五月国产三级网站| 99亚洲精品视频| 免费一级欧美片在线观看网站| 欧美大码xxxx| 亚洲狼人综合网| 狠狠躁18三区二区一区| 无码人妻精品一区二区中文| 日韩成人免费看| 中文字幕一区二区三区有限公司 | 国产精品视频xxx| 在线观看麻豆| 欧美一区二区三区视频免费| 免费黄色国产视频| 国产很黄免费观看久久| 男人插女人视频在线观看| 一区二区美女| 国产欧美日韩视频| 日韩三级电影视频| 亚洲精品天天看| 91tv国产成人福利| 午夜私人影院久久久久| www.狠狠爱| 韩国三级中文字幕hd久久精品| 国产一级不卡视频| 国产成人短视频在线观看| 国产中文日韩欧美| gogo久久| 俺去啦;欧美日韩| 欧美77777| 欧美日韩在线电影| 久久精品国产亚洲av无码娇色| 久久影音资源网| 久久久久久久久久毛片| 免费在线亚洲| 91制片厂免费观看| 台湾佬综合网| 91九色国产在线| 日本免费久久| 欧美激情精品久久久久久| 国产三级在线免费观看| 日韩你懂的电影在线观看| 日韩黄色一级视频| 一区二区三区国产豹纹内裤在线| 李宗瑞91在线正在播放| 高清av一区二区| 日韩av手机版| 国产日韩一区| 男人天堂成人网| 欧美综合另类| 欧美日韩电影一区二区三区| 日本一区二区乱| 国产精品色悠悠| 国产日韩电影| 久久久久久久一区二区三区| 精品麻豆一区二区三区| 亚洲香蕉av在线一区二区三区| 亚洲国产精品suv| 欧美日韩精品系列| 超碰在线观看91| 狠狠做深爱婷婷久久综合一区| 欧美另类视频在线观看| 国产精品美女www爽爽爽| 在线免费看黄视频| 99精品欧美一区| www.555国产精品免费| 韩国一区二区视频| 岛国av免费在线| 免费在线成人网| 99视频在线免费| 新67194成人永久网站| 国产二区视频在线| 精品白丝av| 成年人视频网站免费| 欧美a级在线| 特级西西444| 欧美在线高清| 400部精品国偷自产在线观看| 国产精品成人一区二区不卡| 视频在线精品一区| 欧美日韩国产免费观看视频| 欧美性大战久久久久| 免费视频国产一区| 日本视频一区在线观看| 亚洲自拍电影| 欧洲精品久久| 国产精品中文字幕亚洲欧美| 日本午夜精品一区二区| 禁断一区二区三区在线| 日本高清一区| 久久麻豆精品| 日韩 欧美 自拍| 欧美日韩国产免费观看| 国产精品videossex国产高清| 欧美日韩国产欧| 欧美成人高潮一二区在线看| 国产模特精品视频久久久久| 精品一区二区中文字幕| 日日夜夜精品视频免费| 在线观看av日韩| 黄色精品一二区| 1314成人网| 成人在线综合网| 亚洲最大免费视频| 国产亚洲精品aa| 国内毛片毛片毛片毛片毛片| 亚洲美女一区二区三区| 精品一区在线视频| 欧美性高潮床叫视频| 久草热在线观看| 91麻豆精品91久久久久同性| 性欧美videos另类hd| 日韩精品日韩在线观看| 国产区视频在线| 久久久极品av| 91桃色在线观看| 国产精品av在线| 豆花视频一区| 狠狠色综合色区| 成人久久电影| 久久久久久人妻一区二区三区| 午夜亚洲视频| 日日干日日操日日射| 成人激情免费网站| 亚洲黄色免费视频| 一二三四社区欧美黄| 欧美日韩综合一区二区三区| 欧美日韩国产综合一区二区| 性欧美8khd高清极品| 亚洲片在线资源| 日本乱理伦在线| 国产成人综合亚洲| 99re6热只有精品免费观看| 日本精品一区二区三区高清 久久 日本精品一区二区三区不卡无字幕 | av老司机久久| 亚洲男人第一网站| 性国产高清在线观看| 国产精品吹潮在线观看| 亚洲天堂av资源在线观看| 日韩精品av一区二区三区| 国产精品第十页| mm131国产精品| 91美女蜜桃在线| 欧美成人三级在线观看| 在线观看国产一区二区| 午夜视频免费在线| 欧美成人高清视频| 久久免费资源| 欧美一区视久久| 国产综合网站| 成人不卡免费视频| 国产人妖乱国产精品人妖| 国产无码精品在线观看| 666欧美在线视频| 二区在线视频| 69av在线视频| 日韩中文在线| 最近看过的日韩成人| 日韩精彩视频在线观看| 性欧美丰满熟妇xxxx性久久久| 亚洲欧美日韩成人高清在线一区| 奴色虐av一区二区三区| 日韩精品欧美国产精品忘忧草 | 国产精品三级av| 亚洲天堂一区在线观看| 亚洲精品一区二区三区福利| 久久久久久国产精品免费无遮挡 | 四虎精品欧美一区二区免费| 青青青伊人色综合久久| 波多野吉衣中文字幕| 大荫蒂欧美视频另类xxxx| 国产自产一区二区| 色中色综合影院手机版在线观看| 91麻豆精品| 色香蕉在线观看| 久久精品国产在热久久| 色www亚洲国产阿娇yao| 欧美亚洲国产怡红院影院| 韩国三级在线观看久| 欧美亚洲视频一区二区| 五月国产精品| 免费日韩视频在线观看| 91在线码无精品| 亚洲天堂一区在线观看| 日韩精品免费视频| 日韩毛片免费观看| 日韩福利视频| 免费高清视频精品| 91香蕉视频网| 7777精品伊人久久久大香线蕉超级流畅| 香蕉视频网站在线观看| 国产精品自在线| 99久久九九| 亚洲欧美激情一区二区三区| 亚洲最新视频在线观看| 亚洲春色一区二区三区| 午夜精品福利视频| 日本中文字幕在线一区| 日韩免费毛片视频| 国产欧美日韩精品一区| 亚洲视频中文字幕在线观看| 精品国产区一区二区三区在线观看 | 亚洲在线视频一区| 欧美一区二区三区黄片| 秋霞成人午夜鲁丝一区二区三区| 国产va免费精品观看精品视频 | 国内精品久久久久影院色| 国产精品国产精品88| 欧美成人伊人久久综合网| 僵尸再翻生在线观看| 日韩免费中文专区| 国产一区在线看| 欧美一级视频免费观看| 国产一区二区成人| 精品亚洲a∨一区二区三区18| 91.com在线| 久久久91精品国产一区二区三区| 亚洲一级在线播放| 欧美激情亚洲精品| 亚洲人成网亚洲欧洲无码| 欧美精品久久久久久久久25p| 亚洲美女偷拍久久| 免费在线超碰| 91视频-88av| 午夜一级在线看亚洲| 91n在线视频| 亚洲电影在线观看| 国产一区二区色噜噜| 97免费视频观看| 国产女主播视频一区二区| 国产夫妻性生活视频| 日韩av快播网址| 欧美1区视频| 亚洲午夜久久久久久久国产| 日韩欧美视频一区| julia一区二区三区中文字幕| 日本五级黄色片| 欧美国产日本韩|