精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

一区二区三区日本视频| 人妻中文字幕一区| 欧美成人激情| 日韩精品一区二区三区蜜臀| 成人在线观看你懂的| 国产午夜在线观看| 国产激情视频一区二区三区欧美| 午夜精品久久久久久久男人的天堂 | 97人人做人人人难人人做| 国产精品美女毛片真酒店| 精品国产91| 欧美成人a∨高清免费观看| 91黄色小网站| 新版中文在线官网| a级影片在线观看| 首页综合国产亚洲丝袜| 欧美成人免费大片| 国精品无码人妻一区二区三区| 日韩美香港a一级毛片| 无码av免费一区二区三区试看| 先锋影音欧美| 五月天久久久久久| 国产一区二区免费在线| 日韩免费在线看| 国产亚洲精品久久777777| 日韩dvd碟片| 日韩精品免费在线观看| 无码国产精品一区二区高潮| 亚洲精品一区三区三区在线观看| 午夜欧美大尺度福利影院在线看| 9l视频自拍9l视频自拍| 国产精品一区在线看| gogogo免费视频观看亚洲一| 91久久精品美女| www.五月婷婷.com| 午夜综合激情| 91成人在线观看国产| 日韩影院一区二区| 久久高清精品| 在线免费观看羞羞视频一区二区| 菠萝菠萝蜜网站| 福利欧美精品在线| 日韩欧美一区二区在线视频| 亚洲午夜精品一区| av久久网站| 在线精品视频免费播放| 无码播放一区二区三区| 欧美a级在线观看| 亚洲大片在线观看| 日本人体一区二区| 91九色美女在线视频| 亚洲一区二区三区四区在线免费观看| 91制片厂免费观看| 黄网站在线播放| 国产精品久久久久影院色老大| 天天爽天天狠久久久| 精品乱码一区二区三四区视频| 日韩精选在线| 成人av片在线观看| 1卡2卡3卡精品视频| 国产黄色av网站| 国产不卡在线视频| 国产精品v欧美精品v日韩| 性猛交富婆╳xxx乱大交天津| 国产麻豆9l精品三级站| 91网免费观看| 黄色www视频| 91亚洲资源网| 欧洲av一区| 午夜视频在线看| 亚洲视频一二三区| 日韩免费在线观看av| a级片免费在线观看| 欧美日韩国产一区中文午夜| 精品欧美一区免费观看α√| 亚洲www免费| 欧美日韩亚洲另类| 性一交一黄一片| 欧美黑人巨大videos精品| 亚洲欧美日韩另类| 永久av免费网站| 午夜亚洲福利| 欧美怡红院视频一区二区三区| 青青国产在线视频| 国产在线精品不卡| 久久综合九色99| av大片在线播放| 亚洲一区二区三区在线看| 国产97在线 | 亚洲| 91福利精品在线观看| 欧美日韩精品免费观看视频| 一区二区三区四区影院| 欧洲亚洲一区二区三区| 亚洲色图35p| 538精品在线视频| 亚洲综合欧美| 91在线视频免费| 天堂成人在线视频| 国产精品伦理一区二区| 国产精品无码免费专区午夜| 黑人巨大精品欧美一区二区桃花岛| 欧美日本一区二区| 亚洲 欧美 日韩在线| 久久久久久久国产视频| 欧美3p视频| 2019中文字幕在线免费观看| 伊人影院中文字幕| 成av人片一区二区| 一区一区视频| 伊人色综合一区二区三区影院视频 | 亚洲在线欧美| 五月天国产在线| 欧美一区日韩一区| 日韩视频在线观看免费视频| 伊人久久亚洲热| 国产欧美一区二区三区久久| 午夜影院免费视频| 一区二区三区在线观看国产| 天美星空大象mv在线观看视频| 国产精品1luya在线播放| 亚洲男人天堂久| 懂色av.com| 国产精品888| 黄色一级片网址| 99久久精品一区二区成人| 日韩成人在线视频观看| 欧美日韩国产精品综合| 激情另类小说区图片区视频区| 欧美13一14另类| 国产在线天堂www网在线观看| 欧美一区在线视频| 成年人免费视频播放| 日韩高清电影一区| 欧美日韩精品不卡| 九色porny丨首页入口在线| 欧美成人女星排行榜| 久久中文免费视频| 国产一区二区三区蝌蚪| 一区二区视频在线观看| 狂野欧美性猛交xxxx| 尤物精品国产第一福利三区| 久久精品无码av| 99久久久国产精品免费蜜臀| 欧美乱大交xxxxx潮喷l头像| 在这里有精品| 欧美精品videos另类日本| 国产成人久久精品77777综合| 国产精品久久久久一区| www.夜夜爽| 色婷婷亚洲mv天堂mv在影片| 91美女福利视频| 亚洲成人精品电影在线观看| 亚洲日本网址| 在线看日韩欧美| 一级黄色片网站| 综合在线观看色| www.五月天色| 欧美88av| 精品久久久久久一区| 妞干网免费在线视频| 亚洲欧美中文日韩在线v日本| 在线精品免费视| 国产欧美日韩久久| 蜜桃免费在线视频| 久久精品影视| 国产成人精品免费视频大全最热| 18aaaa精品欧美大片h| 亚洲激情小视频| 亚洲欧美偷拍视频| 中文字幕电影一区| 午夜诱惑痒痒网| 亚洲久久在线| 精品视频一区在线| 成人精品三级| 免费91麻豆精品国产自产在线观看| 精品国产免费无码久久久| 亚洲成va人在线观看| 91网站免费视频| 另类小说欧美激情| www.夜夜爱| 你懂的一区二区三区| 成人午夜一级二级三级| 97人澡人人添人人爽欧美| 精品亚洲国产成av人片传媒 | 亚洲美女黄色| 日本精品一区二区三区视频| 国产日韩一区二区三免费高清| 久久男人的天堂| 成年人在线视频| 日韩精品一区国产麻豆| 综合激情网五月| 中文字幕在线不卡视频| 国产a级黄色片| 奇米888四色在线精品| 中文字幕精品在线播放 | 亚洲视频在线二区| 99精品中文字幕在线不卡| 日本高清不卡在线| av免费在线网站| 国产亚洲欧美日韩精品| 欧美 日韩 国产在线观看| 成人精品毛片| 国产精品丝袜白浆摸在线| 欧美女同一区| 中文字幕综合一区| 三级视频在线| 日韩一区二区三区视频在线| 免费黄色小视频在线观看| 夜夜嗨av一区二区三区中文字幕 | 日本欧美国产| 精品不卡一区二区三区| 国产精品久久免费视频| 国产成人精品在线观看| 成人性生交大片免费看在线播放| 在线成人激情视频| 天天操天天操天天干| 欧美一区在线视频| 在线观看日批视频| 欧美色图在线视频| 国产精品2020| 亚洲色图视频免费播放| 日本黄色激情视频| 久久奇米777| 中文字幕精品视频在线| 国产馆精品极品| av免费一区二区| 青青草国产精品97视觉盛宴 | 奇米在线7777在线精品| 男女高潮又爽又黄又无遮挡| 亚洲视频综合| 8x8ⅹ国产精品一区二区二区| 久久综合成人| 五月天国产一区| 欧美日韩精品在线一区| 日本视频一区在线观看| 亚洲性视频大全| 久久av一区二区| 欧美绝顶高潮抽搐喷水合集| 国产精品精品软件视频| 97久久综合区小说区图片区| 97se亚洲综合在线| 6080成人| 国产欧美欧洲| 国偷自产av一区二区三区| 动漫一区二区在线| 超碰精品在线观看| 国产精品久久久一区二区三区| jazzjazz国产精品麻豆| 国产精品我不卡| 久久激情av| 国产区一区二区| 欧美交a欧美精品喷水| 亚洲日韩中文字幕| 全程偷拍露脸中年夫妇| 亚洲人精品午夜| 欧美日韩在线视频免费| 一区二区免费看| 国产 日韩 欧美 成人| 五月婷婷综合网| 成人公开免费视频| 欧洲精品视频在线观看| 亚洲一卡二卡在线| 91精品国产综合久久久蜜臀粉嫩| 国产免费的av| 精品国产三级电影在线观看| 刘玥91精选国产在线观看| 亚洲国产精久久久久久久| 熟妇高潮一区二区高潮| 亚洲欧洲高清在线| 77导航福利在线| 欧美成人国产va精品日本一级| a篇片在线观看网站| 欧美激情精品久久久久久蜜臀| a级片在线免费观看| 国产成人精品电影久久久| 激情中国色综合| www.成人av| 免费看av成人| 这里只有精品66| 在线日本成人| 午夜激情福利在线| 国产一区不卡精品| 人妻在线日韩免费视频| 国产精品午夜在线观看| 国产午夜免费视频| 色一区在线观看| 国产精品一区二区免费视频 | 欧洲伦理片一区 二区 三区| 日韩一区二区av| caoporn视频在线| 国产欧美va欧美va香蕉在线| 亚洲天堂中文字幕在线观看| 日本视频一区在线观看| 一区二区在线影院| 日韩免费高清在线| 国产成人免费高清| 在线视频第一页| 午夜伦欧美伦电影理论片| 国产女优在线播放| 亚洲精品国产电影| 黄网址在线观看| 国产精品久久久久久一区二区| 一区二区三区亚洲变态调教大结局 | 九九亚洲视频| 六月婷婷激情综合| 麻豆久久久久久| 极品人妻一区二区三区| 亚洲精品成人在线| 在线观看免费视频一区| 日韩精品在线视频美女| 五月花成人网| 国产成人在线视频网站| 第一页在线视频| 国产精品国产自产拍在线| aaa人片在线| 精品国产乱码久久久久久免费 | aa视频在线免费观看| 伊人伊成久久人综合网小说 | 第一福利永久视频精品| 精品免费久久久| www.久久撸.com| 欧美极品免费| 欧美精彩一区二区三区| 狠狠干成人综合网| 永久av免费在线观看| 国产精品第四页| 一区两区小视频| 亚洲图片在线综合| 中文字幕影音在线| 久久久久久国产精品mv| 尤物在线精品| 国产精品偷伦视频免费观看了| 亚洲色图19p| 国产乱淫片视频| www高清在线视频日韩欧美| 国语自产精品视频在线看抢先版结局| 青青成人在线| 久久婷婷久久| 91成年人网站| 精品女同一区二区三区在线播放| 免费a视频在线观看| 欧美激情2020午夜免费观看| 荡女精品导航| 免费不卡av在线| 99免费精品视频| 探花视频在线观看| 亚洲天堂av在线免费观看| 日韩网站中文字幕| 亚洲精品国产精品国自产观看| 日韩精品一二三区| 日本人亚洲人jjzzjjz| 在线观看免费成人| 在线激情网站| 亚洲综合日韩在线| 亚洲天堂激情| 人人妻人人澡人人爽人人精品| 91福利视频网站| 在线播放麻豆| 7777精品伊久久久大香线蕉语言| 一区三区视频| 免费在线观看成年人视频| 色中色一区二区| 日本不卡视频| 成人国产一区二区| 国产视频一区三区| 一区二区三区在线观看免费视频| 在线观看亚洲a| 成视频免费观看在线看| 岛国视频一区| 三级欧美韩日大片在线看| 青花影视在线观看免费高清| 欧美成人vr18sexvr| 欧美亚洲日本精品| 亚洲韩国在线| 成人午夜电影网站| 亚洲大片免费观看| 精品国产拍在线观看| 中文字幕一区二区三区四区视频| 亚洲第一搞黄网站| 九色在线播放| 2019国产精品视频| 老鸭窝毛片一区二区三区| 国产极品美女在线| 亚洲第一精品夜夜躁人人躁| 四虎成人在线| www.激情网| 久久精品人人做人人综合| 亚洲天天综合网| 久久久久久久电影一区| 成人综合一区| 男人网站在线观看| 欧美日产国产精品| 在线成人av观看| 超碰97在线看| 久久久国产精品麻豆| 不卡视频免费在线观看| 国产精品美女久久| 伊人狠狠色j香婷婷综合| 91制片厂在线| 亚洲美女久久久|