欧美亚洲韩国_av电影院在线看_久久久久97_台湾佬中文娱乐网欧美电影

站長(zhǎng)資訊網(wǎng)
最全最豐富的資訊網(wǎng)站

淺析Angular中的多級(jí)依賴注入設(shè)計(jì)

本篇文章帶大家進(jìn)行Angular源碼學(xué)習(xí),介紹一下多級(jí)依賴注入設(shè)計(jì),希望對(duì)大家有所幫助!

淺析Angular中的多級(jí)依賴注入設(shè)計(jì)

作為“為大型前端項(xiàng)目”而設(shè)計(jì)的前端框架,Angular 其實(shí)有許多值得參考和學(xué)習(xí)的設(shè)計(jì),本系列主要用于研究這些設(shè)計(jì)和功能的實(shí)現(xiàn)原理。本文主要圍繞 Angular 中的最大特點(diǎn)——依賴注入,介紹 Angular 中多級(jí)依賴注入的設(shè)計(jì)。【相關(guān)教程推薦:《angular教程》】

上一篇我們介紹了 Angular 中的Injectot注入器、Provider提供者,以及注入器機(jī)制。那么,在 Angular 應(yīng)用中,各個(gè)組件和模塊間又是怎樣共享依賴的,同樣的服務(wù)是否可以多次實(shí)例化呢?

組件和模塊的依賴注入過程,離不開 Angular 多級(jí)依賴注入的設(shè)計(jì),我們來看看。

多級(jí)依賴注入

前面我們說過,Angular 中的注入器是可繼承、且分層的。

在 Angular 中,有兩個(gè)注入器層次結(jié)構(gòu):

  • ModuleInjector模塊注入器:使用@NgModule()@Injectable()注解在此層次結(jié)構(gòu)中配置ModuleInjector
  • ElementInjector元素注入器:在每個(gè) DOM 元素上隱式創(chuàng)建

模塊注入器和元素注入器都是樹狀結(jié)構(gòu)的,但它們的分層結(jié)構(gòu)并不完全一致。

模塊注入器

模塊注入器的分層結(jié)構(gòu),除了與應(yīng)用中模塊設(shè)計(jì)有關(guān)系,還有平臺(tái)模塊(PlatformModule)注入器與應(yīng)用程序模塊(AppModule)注入器的分層結(jié)構(gòu)。

平臺(tái)模塊(PlatformModule)注入器

在 Angular 術(shù)語中,平臺(tái)是供 Angular 應(yīng)用程序在其中運(yùn)行的上下文。Angular 應(yīng)用程序最常見的平臺(tái)是 Web 瀏覽器,但它也可以是移動(dòng)設(shè)備的操作系統(tǒng)或 Web 服務(wù)器。

Angular 應(yīng)用在啟動(dòng)時(shí),會(huì)創(chuàng)建一個(gè)平臺(tái)層:

  • 平臺(tái)是 Angular 在網(wǎng)頁上的入口點(diǎn),每個(gè)頁面只有一個(gè)平臺(tái)
  • 頁面上運(yùn)行的每個(gè) Angular 應(yīng)用程序,所共有的服務(wù)都在平臺(tái)內(nèi)綁定

一個(gè) Angular 平臺(tái),主要包括創(chuàng)建模塊實(shí)例、銷毀等功能:

@Injectable() export class PlatformRef {   // 傳入注入器,作為平臺(tái)注入器   constructor(private _injector: Injector) {}    // 為給定的平臺(tái)創(chuàng)建一個(gè) @NgModule 的實(shí)例,以進(jìn)行離線編譯   bootstrapModuleFactory<M>(moduleFactory: NgModuleFactory<M>, options?: BootstrapOptions):       Promise<NgModuleRef<M>> {}    // 使用給定的運(yùn)行時(shí)編譯器,為給定的平臺(tái)創(chuàng)建一個(gè) @NgModule 的實(shí)例   bootstrapModule<M>(       moduleType: Type<M>,       compilerOptions: (CompilerOptions&BootstrapOptions)|       Array<CompilerOptions&BootstrapOptions> = []): Promise<NgModuleRef<M>> {}    // 注冊(cè)銷毀平臺(tái)時(shí)要調(diào)用的偵聽器   onDestroy(callback: () => void): void {}    // 獲取平臺(tái)注入器   // 該平臺(tái)注入器是頁面上每個(gè) Angular 應(yīng)用程序的父注入器,并提供單例提供程序   get injector(): Injector {}    // 銷毀頁面上的當(dāng)前 Angular 平臺(tái)和所有 Angular 應(yīng)用程序,包括銷毀在平臺(tái)上注冊(cè)的所有模塊和偵聽器   destroy() {} }

實(shí)際上,平臺(tái)在啟動(dòng)的時(shí)候(bootstrapModuleFactory方法中),在ngZone.run中創(chuàng)建ngZoneInjector,以便在 Angular 區(qū)域中創(chuàng)建所有實(shí)例化的服務(wù),而ApplicationRef(頁面上運(yùn)行的 Angular 應(yīng)用程序)將在 Angular 區(qū)域之外創(chuàng)建。

在瀏覽器中啟動(dòng)時(shí),會(huì)創(chuàng)建瀏覽器平臺(tái):

export const platformBrowser: (extraProviders?: StaticProvider[]) => PlatformRef =     createPlatformFactory(platformCore, 'browser', INTERNAL_BROWSER_PLATFORM_PROVIDERS);  // 其中,platformCore 平臺(tái)必須包含在任何其他平臺(tái)中 export const platformCore = createPlatformFactory(null, 'core', _CORE_PLATFORM_PROVIDERS);

使用平臺(tái)工廠(例如上面的createPlatformFactory)創(chuàng)建平臺(tái)時(shí),將隱式初始化頁面的平臺(tái):

export function createPlatformFactory(     parentPlatformFactory: ((extraProviders?: StaticProvider[]) => PlatformRef)|null, name: string,     providers: StaticProvider[] = []): (extraProviders?: StaticProvider[]) => PlatformRef {   const desc = `Platform: ${name}`;   const marker = new InjectionToken(desc); // DI 令牌   return (extraProviders: StaticProvider[] = []) => {     let platform = getPlatform();     // 若平臺(tái)已創(chuàng)建,則不做處理     if (!platform || platform.injector.get(ALLOW_MULTIPLE_PLATFORMS, false)) {       if (parentPlatformFactory) {         // 若有父級(jí)平臺(tái),則直接使用父級(jí)平臺(tái),并更新相應(yīng)的提供者         parentPlatformFactory(             providers.concat(extraProviders).concat({provide: marker, useValue: true}));       } else {         const injectedProviders: StaticProvider[] =             providers.concat(extraProviders).concat({provide: marker, useValue: true}, {               provide: INJECTOR_SCOPE,               useValue: 'platform'             });         // 若無父級(jí)平臺(tái),則新建注入器,并創(chuàng)建平臺(tái)         createPlatform(Injector.create({providers: injectedProviders, name: desc}));       }     }     return assertPlatform(marker);   }; }

通過以上過程,我們知道 Angular 應(yīng)用在創(chuàng)建平臺(tái)的時(shí)候,創(chuàng)建平臺(tái)的模塊注入器ModuleInjector。我們從上一節(jié)Injector定義中也能看到,NullInjector是所有注入器的頂部:

export abstract class Injector {   static NULL: Injector = new NullInjector(); }

因此,在平臺(tái)模塊注入器之上,還有NullInjector()。而在平臺(tái)模塊注入器之下,則還有應(yīng)用程序模塊注入器。

應(yīng)用程序根模塊(AppModule)注入器

每個(gè)應(yīng)用程序有至少一個(gè) Angular 模塊,根模塊就是用來啟動(dòng)此應(yīng)用的模塊:

@NgModule({ providers: APPLICATION_MODULE_PROVIDERS }) export class ApplicationModule {   // ApplicationRef 需要引導(dǎo)程序提供組件   constructor(appRef: ApplicationRef) {} }

AppModule根應(yīng)用模塊由BrowserModule重新導(dǎo)出,當(dāng)我們使用 CLI 的new命令創(chuàng)建新應(yīng)用時(shí),它會(huì)自動(dòng)包含在根AppModule中。應(yīng)用程序根模塊中,提供者關(guān)聯(lián)著內(nèi)置的 DI 令牌,用于為引導(dǎo)程序配置根注入器。

Angular 還將ComponentFactoryResolver添加到根模塊注入器中。此解析器存儲(chǔ)了entryComponents系列工廠,因此它負(fù)責(zé)動(dòng)態(tài)創(chuàng)建組件。

模塊注入器層級(jí)

到這里,我們可以簡(jiǎn)單地梳理出模塊注入器的層級(jí)關(guān)系:

  • 模塊注入器樹的最上層則是應(yīng)用程序根模塊(AppModule)注入器,稱作 root。

  • 在 root 之上還有兩個(gè)注入器,一個(gè)是平臺(tái)模塊(PlatformModule)注入器,一個(gè)是NullInjector()

因此,模塊注入器的分層結(jié)構(gòu)如下:

淺析Angular中的多級(jí)依賴注入設(shè)計(jì)

在我們實(shí)際的應(yīng)用中,它很可能是這樣的:

淺析Angular中的多級(jí)依賴注入設(shè)計(jì)

Angular DI 具有分層注入體系,這意味著下級(jí)注入器也可以創(chuàng)建它們自己的服務(wù)實(shí)例。

元素注入器

前面說過,在 Angular 中有兩個(gè)注入器層次結(jié)構(gòu),分別是模塊注入器和元素注入器。

元素注入器的引入

當(dāng) Angular 中懶加載的模塊開始廣泛使用時(shí),出現(xiàn)了一個(gè) issue:依賴注入系統(tǒng)導(dǎo)致懶加載模塊的實(shí)例化加倍。

在這一次修復(fù)中,引入了新的設(shè)計(jì):注入器使用兩棵并行的樹,一棵用于元素,另一棵用于模塊

Angular 會(huì)為所有entryComponents創(chuàng)建宿主工廠,它們是所有其他組件的根視圖。

這意味著每次我們創(chuàng)建動(dòng)態(tài) Angular 組件時(shí),都會(huì)使用根數(shù)據(jù)(RootData)創(chuàng)建根視圖(RootView):

class ComponentFactory_ extends ComponentFactory<any>{   create(       injector: Injector, projectableNodes?: any[][], rootSelectorOrNode?: string|any,       ngModule?: NgModuleRef<any>): ComponentRef<any> {     if (!ngModule) {       throw new Error('ngModule should be provided');     }     const viewDef = resolveDefinition(this.viewDefFactory);     const componentNodeIndex = viewDef.nodes[0].element!.componentProvider!.nodeIndex;     // 使用根數(shù)據(jù)創(chuàng)建根視圖     const view = Services.createRootView(         injector, projectableNodes || [], rootSelectorOrNode, viewDef, ngModule, EMPTY_CONTEXT);     // view.nodes 的訪問器     const component = asProviderData(view, componentNodeIndex).instance;     if (rootSelectorOrNode) {       view.renderer.setAttribute(asElementData(view, 0).renderElement, 'ng-version', VERSION.full);     }     // 創(chuàng)建組件     return new ComponentRef_(view, new ViewRef_(view), component);   } }

該根數(shù)據(jù)(RootData)包含對(duì)elInjectorngModule注入器的引用:

function createRootData(     elInjector: Injector, ngModule: NgModuleRef<any>, rendererFactory: RendererFactory2,     projectableNodes: any[][], rootSelectorOrNode: any): RootData {   const sanitizer = ngModule.injector.get(Sanitizer);   const errorHandler = ngModule.injector.get(ErrorHandler);   const renderer = rendererFactory.createRenderer(null, null);   return {     ngModule,     injector: elInjector,     projectableNodes,     selectorOrNode: rootSelectorOrNode,     sanitizer,     rendererFactory,     renderer,     errorHandler,   }; }

引入元素注入器樹,原因是這樣的設(shè)計(jì)比較簡(jiǎn)單。通過更改注入器層次結(jié)構(gòu),避免交錯(cuò)插入模塊和組件注入器,從而導(dǎo)致延遲加載模塊的雙倍實(shí)例化。因?yàn)槊總€(gè)注入器都只有一個(gè)父對(duì)象,并且每次解析都必須精確地尋找一個(gè)注入器來檢索依賴項(xiàng)。

元素注入器(Element Injector)

在 Angular 中,視圖是模板的表示形式,它包含不同類型的節(jié)點(diǎn),其中便有元素節(jié)點(diǎn),元素注入器位于此節(jié)點(diǎn)上:

export interface ElementDef {   ...   // 在該視圖中可見的 DI 的公共提供者   publicProviders: {[tokenKey: string]: NodeDef}|null;   // 與 visiblePublicProviders 相同,但還包括位于此元素上的私有提供者   allProviders: {[tokenKey: string]: NodeDef}|null; }

默認(rèn)情況下ElementInjector為空,除非在@Directive()@Component()providers屬性中進(jìn)行配置。

當(dāng) Angular 為嵌套的 HTML 元素創(chuàng)建元素注入器時(shí),要么從父元素注入器繼承它,要么直接將父元素注入器分配給子節(jié)點(diǎn)定義。

如果子 HTML 元素上的元素注入器具有提供者,則應(yīng)該繼承該注入器。否則,無需為子組件創(chuàng)建單獨(dú)的注入器,并且如果需要,可以直接從父級(jí)的注入器中解決依賴項(xiàng)。

元素注入器與模塊注入器的設(shè)計(jì)

那么,元素注入器與模塊注入器是從哪個(gè)地方開始成為平行樹的呢?

我們已經(jīng)知道,應(yīng)用程序根模塊(AppModule)會(huì)在使用 CLI 的new命令創(chuàng)建新應(yīng)用時(shí),自動(dòng)包含在根AppModule中。

當(dāng)應(yīng)用程序(ApplicationRef)啟動(dòng)(bootstrap)時(shí),會(huì)創(chuàng)建entryComponent

const compRef = componentFactory.create(Injector.NULL, [], selectorOrNode, ngModule);

該過程會(huì)使用根數(shù)據(jù)(RootData)創(chuàng)建根視圖(RootView),同時(shí)會(huì)創(chuàng)建根元素注入器,在這里elInjectorInjector.NULL

在這里,Angular 的注入器樹被分成元素注入器樹和模塊注入器樹,這兩個(gè)平行的樹了。

Angular 會(huì)有規(guī)律的創(chuàng)建下級(jí)注入器,每當(dāng) Angular 創(chuàng)建一個(gè)在@Component()中指定了providers的組件實(shí)例時(shí),它也會(huì)為該實(shí)例創(chuàng)建一個(gè)新的子注入器。類似的,當(dāng)在運(yùn)行期間加載一個(gè)新的NgModule時(shí),Angular 也可以為它創(chuàng)建一個(gè)擁有自己的提供者的注入器。

子模塊和組件注入器彼此獨(dú)立,并且會(huì)為所提供的服務(wù)分別創(chuàng)建自己的實(shí)例。當(dāng) Angular 銷毀NgModule或組件實(shí)例時(shí),也會(huì)銷毀這些注入器以及注入器中的那些服務(wù)實(shí)例。

Angular 解析依賴過程

上面我們介紹了 Angular 中的兩種注入器樹:模塊注入器樹和元素注入器樹。那么,Angular 在提供依賴時(shí),又會(huì)以怎樣的方式去進(jìn)行解析呢。

在 Angular 種,當(dāng)為組件/指令解析 token 獲取依賴時(shí),Angular 分為兩個(gè)階段來解析它:

  • 針對(duì)ElementInjector層次結(jié)構(gòu)(其父級(jí))
  • 針對(duì)ModuleInjector層次結(jié)構(gòu)(其父級(jí))

其過程如下(參考多級(jí)注入器-解析規(guī)則):

  • 當(dāng)組件聲明依賴項(xiàng)時(shí),Angular 會(huì)嘗試使用它自己的ElementInjector來滿足該依賴。

  • 如果組件的注入器缺少提供者,它將把請(qǐng)求傳給其父組件的ElementInjector

  • 這些請(qǐng)求將繼續(xù)轉(zhuǎn)發(fā),直到 Angular 找到可以處理該請(qǐng)求的注入器或用完祖先ElementInjector

  • 如果 Angular 在任何ElementInjector中都找不到提供者,它將返回到發(fā)起請(qǐng)求的元素,并在ModuleInjector層次結(jié)構(gòu)中進(jìn)行查找。

  • 如果 Angular 仍然找不到提供者,它將引發(fā)錯(cuò)誤。

為此,Angular 引入一種特殊的合并注入器。

合并注入器(Merge Injector)

合并注入器本身沒有任何值,它只是視圖和元素定義的組合。

class Injector_ implements Injector {   constructor(private view: ViewData, private elDef: NodeDef|null) {}   get(token: any, notFoundValue: any = Injector.THROW_IF_NOT_FOUND): any {     const allowPrivateServices =         this.elDef ? (this.elDef.flags & NodeFlags.ComponentView) !== 0 : false;     return Services.resolveDep(         this.view, this.elDef, allowPrivateServices,         {flags: DepFlags.None, token, tokenKey: tokenKey(token)}, notFoundValue);   } }

當(dāng) Angular 解析依賴項(xiàng)時(shí),合并注入器則是元素注入器樹和模塊注入器樹之間的橋梁。當(dāng) Angular 嘗試解析組件或指令中的某些依賴關(guān)系時(shí),會(huì)使用合并注入器來遍歷元素注入器樹,然后,如果找不到依賴關(guān)系,則切換到模塊注入器樹以解決依賴關(guān)系。

class ViewContainerRef_ implements ViewContainerData {   ...   // 父級(jí)試圖元素注入器的查詢   get parentInjector(): Injector {     let view = this._view;     let elDef = this._elDef.parent;     while (!elDef && view) {       elDef = viewParentEl(view);       view = view.parent!;     }      return view ? new Injector_(view, elDef) : new Injector_(this._view, null);   } }

解析過程

注入器是可繼承的,這意味著如果指定的注入器無法解析某個(gè)依賴,它就會(huì)請(qǐng)求父注入器來解析它。具體的解析算法在resolveDep()方法中實(shí)現(xiàn):

export function resolveDep(     view: ViewData, elDef: NodeDef, allowPrivateServices: boolean, depDef: DepDef,     notFoundValue: any = Injector.THROW_IF_NOT_FOUND): any {   //   //          mod1   //         /   //       el1   mod2   //           /   //         el2   //   // 請(qǐng)求 el2.injector.get(token)時(shí),按以下順序檢查并返回找到的第一個(gè)值:   // - el2.injector.get(token, default)   // - el1.injector.get(token, NOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR) -> do not check the module   // - mod2.injector.get(token, default) }

如果是<child></child>這樣模板的根AppComponent組件,那么在 Angular 中將具有三個(gè)視圖:

<!-- HostView_AppComponent -->     <my-app></my-app> <!-- View_AppComponent -->     <child></child> <!-- View_ChildComponent -->     some content

依賴解析過程,解析算法會(huì)基于視圖層次結(jié)構(gòu),如圖所示進(jìn)行:

淺析Angular中的多級(jí)依賴注入設(shè)計(jì)

如果在子組件中解析某些令牌,Angular 將:

  • 首先查看子元素注入器,進(jìn)行檢查elRef.element.allProviders|publicProviders

  • 然后遍歷所有父視圖元素(1),并檢查元素注入器中的提供者。

  • 如果下一個(gè)父視圖元素等于null(2),則返回到startView(3),檢查startView.rootData.elnjector(4)。

  • 只有在找不到令牌的情況下,才檢查startView.rootData module.injector( 5 )。

由此可見,Angular 在遍歷組件以解析某些依賴性時(shí),將搜索特定視圖的父元素而不是特定元素的父元素。視圖的父元素可以通過以下方法獲得:

// 對(duì)于組件視圖,這是宿主元素 // 對(duì)于嵌入式視圖,這是包含視圖容器的父節(jié)點(diǎn)的索引 export function viewParentEl(view: ViewData): NodeDef|null {   const parentView = view.parent;   if (parentView) {     return view.parentNodeDef !.parent;   } else {     return null;   } }

總結(jié)

本文主要介紹了 Angular 中注入器的層級(jí)結(jié)構(gòu),在 Angular 中有兩棵平行的注入器樹:模塊注入器樹和元素注入器樹。

元素注入器樹的引入,主要是為了解決依賴注入解析懶加載模塊時(shí),導(dǎo)致模塊的雙倍實(shí)例化問題。在元素注入器樹引入后,Angular 解析依賴的過程也有調(diào)整,優(yōu)先尋找元素注入器以及父視圖元素注入器等注入器的依賴,只有元素注入器中無法找到令牌時(shí),才會(huì)查詢模塊注入器中的依賴。

贊(0)
分享到: 更多 (0)
網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)
主站蜘蛛池模板: 黄色一级小视频 | 欧美日韩精品一区二区在线播放 | 五月涩| 亚洲久草av | 九九色综合 | 手机看片福利在线 | 少妇又紧又色又爽又刺激 | 中文在线国产 | 欧洲一级片 | 西厢记在线观看 | 日韩一级一级 | 一二三四日本高清社区5 | 久久大尺度 | 国产美女精品一区二区 | 青青草精品在线视频 | 77777av| 国产精品国产三级国产专区53 | 亚洲视频a | 国产女主播视频一区二区三区 | 香蕉在线网 | 欧美精品一区二区久久婷婷 | 国产网红主播三级精品视频 | 国产精品系列在线观看 | 日韩二级片| 99国产精品久久久久久久日本竹 | 樱桃香蕉视频 | 欧美 日韩 国产 在线 | 亚洲精品国产精品国自产观看 | 国产片在线播放 | 超碰视屏| 日韩中文字幕av | 在线毛片网站 | 91成人在线播放 | 日韩精品伦理 | 免费黄色av片| 成人黄色录像 | 99视频免费看 | 久久99精品久久久久久琪琪 | 亚洲三级免费观看 | 爱啪啪网站 | 97少妇| 日日骚网 | 樱空桃在线观看 | 大黄网站在线观看 | 黄色免费毛片 | 一区二区三区高清 | 亚洲图区综合网 | 欧美1页 | 黑丝av在线 | 四虎影视成人永久免费观看亚洲欧美 | 中文字幕精品在线观看 | 在线免费观看不卡av | 亚洲精品乱码久久久久久久 | 182tv午夜| 国产v在线观看 | 精品久久国产视频 | wwwwww国产| 久久手机视频 | 日韩在线观看视频一区 | 91男女视频| 欧美成人黄色片 | 美日韩av在线| 999国产| 老色批网站 | 天堂网在线看 | 成人午夜激情视频 | 国产女人18毛片18精品 | 精品一区二区三区自拍图片区 | 天天久 | 在线观看黄网 | 亚洲国产高清视频在线观看 | 亚洲视频一二三区 | 国产精品美女久久久久图片 | 亚洲成人激情视频 | 一本视频在线 | 仙踪林少妇高潮在线观看 | 九色91popny蝌蚪 | 日日干日日干 | 岛国成人在线 | 精品免费一区二区 | 亚洲综合性网 | 日本精品视频在线播放 | 欧美精品福利视频 | 黄色大片在线播放 | 中文字幕免费高清视频 | 国产亚洲自拍av | 亚洲最大的av网站 | 狠狠夜夜| 成人性生生活性生交3 | 成人免费观看在线视频 | 久久精品视频在线观看 | 国产精品爽爽爽 | 亚洲精品天堂在线 | 久久网一区二区 | 三年在线观看视频 | 玩偶姐姐在线看 | 国产日本亚洲 | 热re99久久精品国产99热 | 中文字幕3页 | 人人天天夜夜 | 豆豆成人网 | 国产乱xxxxx79国语对白 | 中文字幕av免费观看 | 波多野结衣视频网址 | 日韩av在线一区 | 天天干天 | 亚洲欧美日韩在线看 | 桃色av网站 | 成人精品鲁一区一区二区 | 久久久久亚洲天堂 | 四虎永久在线精品免费一区二区 | 国产igao为爱做激情在线观看 | 91一区二区三区在线观看 | 在线视频区 | 天天摸天天干天天操 | 日韩欧美国产中文字幕 | 日日操日日干 | 日本成人免费视频 | 亚洲专区欧美专区 | 中文字幕综合在线 | 在线免费一级片 | 国产亚洲欧洲 | 91免费在线视频观看 | 亚洲欧美日韩精品色xxx | 中文字幕理论片 | 亚洲最大成人在线视频 | www.视频一区| 免费黄色网址视频 | 37p粉嫩大胆色噜噜噜 | 国产三级三级在线观看 | 中日韩在线观看 | 欧美黄色大片网站 | 国产精品欧美激情 | 动漫精品一区一码二码三码四码 | 国产又黄又猛 | 亚洲人成影视 | 亚洲射图 | 99艹| 久草视频福利在线 | 国久久| 五月婷婷激情 | 色亚洲天堂 | 欧美一区视频在线 | 成人免费网站在线观看 | 婷婷丁香亚洲 | av资源首页 | 婷婷开心激情网 | 国产调教 | 国产a级免费视频 | 亚洲一区二区三区在线播放 | 国产特黄大片aaaa毛片 | 992av| 波多野结衣在线一区二区 | 国产香蕉av | 女人性做爰100部免费 | 成人免费a视频 | 亚洲视频免费在线播放 | 张津瑜警花国产精品一区 | 日韩激情网| 色视频免费看 | 91成人在线视频 | 亚洲精品视频一区二区三区 | 日本欧美一级片 | 欧美精品一区二区久久婷婷 | 久久视频在线看 | 性久久久久久久久 | 国产精品青青草 | 福利精品| 天天射夜夜骑 | 综合激情五月婷婷 | 日穴视频| 欧美成人二区 | 欧美在线激情 | 在线色综合| 国产欧美大片 | 91性高潮久久久久久久久 | 夜夜爽av福利精品导航 | 成人短视频在线播放 | 激情涩涩 | 美脚丝袜一区二区三区在线观看 | 日韩激情啪啪 | 国产视频999 | 欧美91视频| 欧美精品一区二区三区视频 | 亚洲高清在线播放 | 国产精品1024 | 久久伊人成人网 | 星空大象在线观看免费高清 | 91美女在线播放 | 欧美精品韩国精品 | 337p亚洲精品色噜噜噜 | av综合久久 | 操操操干干干 | 五月天综合社区 | 久久中文字幕在线 | 亚洲欧美另类在线观看 | 午夜精品成人 | 亚洲乱搞 | 亚洲乱码日产精品bd | 久久a久久 | 亚洲一区二区三区免费观看 | 欧美日本一区二区 | 免费观看av的网站 | 哪里可以免费看毛片 | 尹人综合在线 | 国产无限资源 | 先锋资源久久 | 亚洲福利视频在线 | 性欧美8khd高清极品 | 国产黄色网址在线观看 | 香蕉精品视频在线观看 | 久久久久不卡 | 91九色在线播放 | 91免费高清视频 | 91视频免费网站 | 成人爽a毛片一区二区免费 激情伊人 | 黄色成人av在线 | 韩国激情呻吟揉捏胸视频 | a毛片基地 | 欧洲av片 | 日韩精品激情 | 在线亚洲免费 | 一一级黄色片 | 亚洲欧美国产一区二区三区 | 欧美日韩视频一区二区 | 找国产毛片看 | 一区二区三区免费在线 | 狠狠热视频 | 伊人7 | 国产高清在线精品 | 成人资源在线观看 | 亚洲精品911 | 国产三级网 | 欧美日韩视频网站 | 国产精品视频亚洲 | 欧美一区二区三区在线看 | 国产精品久久久久一区二区三区 | 国产精品久久久久久久久久免费看 | 久久精品2019中文字幕 | 潘金莲一级淫片aaaaaa播放 | 国产伦精品一区二区三区网站 | 欧美三级网 | 国产美女作爱视频 | 一区二区福利 | 久久精品久久久久久 | 一区二区精品视频 | 国产乱人乱偷精品视频a人人澡 | 中文字幕一级 | 天天草天天射 | 国产一二区视频 | jlzzjlzz亚洲女人 | 涩涩网站在线观看 | 激情文学中文字幕 | 91久久超碰 | 日韩在线免费观看视频 | 国产另类专区 | 国产16处破外女视频在线 | 黄色网页在线播放 | 九色在线 | 婷婷久久久久 | 碧蓝之海动漫在线观看免费高清 | 国产女人高潮时对白 | 91免费在线| 中文字幕亚洲第一 | 91麻豆精品一区二区三区 | 97香蕉久久夜色精品国产 | 亚洲伊人成人网 | 已婚少妇露脸日出白浆 | 丁香婷婷六月 | 欧美激情国产日韩精品一区18 | 视频区小说区图片区 | 中文字幕福利视频 | 性少妇三级 | 在线观看国产区 | 夜夜骑av| 国产精品高潮呻吟 | 丁香色网| 一级日韩片 | 天天看天天射 | 亚洲综人 | 97夜夜澡人人爽人人喊91洗澡 | 精品久久久久久亚洲综合网站 | 国精产品乱码一区一区三区四区 | 亚洲精品无人区 | 女同性做爰全过程 | 天天干天天摸天天操 | 欧美天堂视频 | 免费av观看 | 欧美日韩中 | 人与动物av | 午夜激情成人 | 欧美粗又大 | 久久538| 成年人性视频 | 久久久久国产精品人 | 伦理自拍 | 久久不卡视频 | 91喷水| 91片看 | 青娱乐国产在线视频 | 密臀久久| 日韩毛片一区 | 91精品国产高潮对白 | 亚洲最色网站 | avtt在线观看| 2019国产在线| 亚洲码国产精品高潮在线 | www.波多野结衣.com | 午夜影院一区二区三区 | 欧美韩国日本 | 中文久久乱码一区二区 | 狠狠干2018 | 成人写真福利网 | 五月视频 | 午夜在线不卡 | 色老头av | 国产精品国产三级国产专区52 | 真实的国产乱xxxx在线91 | www.白白色| 理论在线视频 | 黄色一级片在线 | 五月婷婷综合久久 | 99在线观看免费 | 中文字幕在线观看的网站 | 日韩激情一区二区三区 | 亚洲黄网站在线观看 | 91黄版| 91视频污在线观看 | 国产婷婷色一区二区三区在线 | 88xx成人永久免费观看 | 国产无遮挡又黄又爽又色 | 黄色污污视频 | 伊人最新网址 | 色婷婷国产精品久久包臀 | 日韩激情啪啪 | 久久99精品久久久久久无毒不卡8 | 99r在线视频 | 国产永久免费视频 | 国产精品成人免费一区久久羞羞 | www.波多野结衣.com | 最新国产在线拍揄自揄视频 | 天天操人人爽 | 欧美日韩一区三区 | 午夜性激情 | 国产探花在线精品一区二区 | www日本色| 亚洲在线资源 | 欧美精品免费一区二区三区 | 中文字幕3| 香蕉久久久久久av成人 | 久久一区二| 成人a视频在线观看 | 91精品国产高清一区二区三区蜜臀 | 午夜婷婷在线观看 | 国产精品久久777777换脸 | 天天舔天天干天天操 | 国产精品一区二区在线播放 | 激情综合五月网 | 五月天中文字幕mv在线 | 日本亚洲最大的色成网站www | 久久精品精品 | 好大av | 天天碰天天干 | 国产精品久久久久久久久久三级 | 精品在线不卡 | 国产免费一级片 | 日本在线免费观看视频 | 天堂网在线观看 | 中文字幕在线观看亚洲 | avt天堂网 | 九九激情网 | h视频亚洲 | 伊人99| 中文字幕第28页 | 国产三级韩国三级日本带黄 | 最新中文av | 国产一区二区三区视频在线播放 | 给我看免费高清在线观看 | 久久国产乱子 | 欧美天天爽| jzzijzzij亚洲成熟少妇在线播放 一区二区视频在线播放 | 99热免费| 国产精品福利一区 | 欧美v日韩| 999国产视频| xxxwww在线观看 | 黄色一级黄色片 | 最近的中文字幕在线看视频 | av国产网站 | 午夜免费视频观看 | 国产性生活 | 91美女视频 | h网站在线播放 | 狼人久久 | 伊人99| 久久av资源 | 国产精品久久久久网站 | 色精品 | 农村寡妇一区二区三区 | 国产精品久久久久久中文字 | 网址在线观看你懂的 | 狠狠躁夜夜躁人人爽天天高潮 | 一级伦理农村妇女愉情 | 在线观看亚洲专区 | 开心激情深爱 | 美腿丝袜av | 啪啪福利 | 国产日皮视频 | 一区二区国产在线观看 | av片免费看 | 九九热8 | 色婷婷av久久久久久久 | 超碰人人人 | 91国产精品一区 | 在线视频 91 | 国产一级一片免费播放放a 在线观看成人 | 日韩一区二区在线看 | 精品一区二区三区三区 | 亚洲精品久久久久久久久久久 | 男人插女人下面视频 | 天天综合天天 | 黑料视频在线观看 | 谁有毛片网站 | 狠狠操网址 | 宅男噜噜噜666在线观看 | 亚洲国产精品成人综合在线 | av自拍网| 性生活免费大片 | 精品午夜一区 | 国模精品一区 | 亚洲青草| 91看片淫黄大片 | 日本不卡在线视频 | 伊大人香蕉综合8在线视 | 2018中文字幕在线观看 | 亚洲免费观看av | 欧美精品久久久久性色 | 成人午夜网 | 国产a视频 | 精品视频91 | 91久久精品国产91性色69 | 91久久久久久久久久久久久 | 国产15页 | 日韩欧美网址 | 中文av一区二区 | 一区二区在线看 | 欧美精品1区| 国产专区一 | 激情网站在线观看 | 三级av在线播放 | 神马午夜av | 最新在线黄色网址 | 欧美激情片在线观看 | 天美视频在线观看 | av在线免播放器 | 99re久久| 欧美性猛交bbbbb精品 | 亚洲成人av网址 | 欧美30p| 亚洲视频中文 | 成人午夜免费在线观看 | 亚州综合视频 | 一区二区三区波多野结衣 | 福利视频午夜 | 看全黄大色黄大片美女人 | 18日本xxxxxxxxx95| 亚洲精品久久久久久中文传媒 | 黄色片在线免费观看视频 | 色999视频 | 婷婷四房综合激情五月 | 国产一区视频在线播放 | 亚洲精品欧美精品 | 女人性做爰100部免费 | 婷婷久久久久久 | 欧美色淫 | 午夜色综合| www.爱爱.com| 免费午夜av | 欧美福利影院 | 亚洲综合插 | 一本久久综合亚洲鲁鲁五月天 | 久久久久久69 | 四虎国产精品永久在线国在线 | 亚洲a视频在线 | 特级一级片 | 欧美一区二区激情视频 | 91精品婷婷国产综合久久蝌蚪 | 一级片a级片 | 美女一区二区三区四区 | 欧美亚洲一区二区三区 | 亚洲综合小说 | 1区2区视频 | 91私密视频 | 四虎影院新网址 | 亚洲国产免费av | 成人激情在线观看 | av成人 | 天天操一操 | 亚洲视频在线一区 | 亚洲理论在线 | 在线视频精品播放 | 欧美xxxx×黑人性爽 | 欧美理伦片在线播放 | 日本高清视频www | 成人黄色一级片 | 亚洲欧美日本国产 | 欧美日韩一区二区三区四区 | 亚洲激情自拍偷拍 | 亚洲综合网av | 日韩伊人网 | 欧美成人三区 | 国产福利不卡 | 国产精品久久久久久久久久蜜臀 | 国产精品18久久久久久久久 | 九九热av| 午夜激情视频在线观看 | 国内自拍在线 | 久射久| 国产激情一区二区三区 | 国产人伦精品一区二区三区 | h网站在线播放 | 久草免费av | 国产18p| 成人黄色激情视频 | 精品欧美色视频网站在线观看 | 99精品在线免费观看 | 黄色一级片网站 | 久久精品一区二区三 | 性一交一乱一区二区洋洋av | av一二三四 | 深爱激情综合 | 欧美激情亚洲 | 操碰在线观看 | 毛片a片免费观看 | 日本三级视频在线播放 | 免费日韩av| 亚洲精品视频观看 | 91精品国产综合久久香蕉的特点 | 在线播放网址 | 天天看天天操 | wwwjavhd| 亚洲黄色中文字幕 | 在线看片资源 | 香蕉视频黄色在线观看 | 午夜精品三级久久久有码 | 亚洲视频精品 | 亚洲一区二区三区日韩 | 毛片123 | 久久婷婷丁香 | 欧美做受xxxxxⅹ性视频 | 国产激情无套内精对白视频 | 蜜臀久久精品久久久久 | 91午夜视频在线观看 | 天天操狠狠操 | 亚洲欧美在线视频免费 | 丁香久久久| 91porny九色| 操操操操操网 | 五月婷婷六月丁香综合 | 中国黄色免费 | 久久久久久久久久久久久久久久久久久久 | 可以在线看的av | 密色av| 美日韩视频 | 久久久久久网址 | 91porny在线| 欧美另类性 | 黄色录象片 | 亚洲国产精品va在线看黑人 | 在线播放波多野结衣 | 天天干天天爱天天射 | 在线中文字幕第一页 | 91精品国产综合久久久密臀九色 | 亚洲 日本 欧美 中文幕 | 天天色天天干天天 | 黄色一级片免费观看 | 日韩插插 | 特一级黄色片 | 一区二区欧美视频 | 中国在线观看免费视频 | 久久精久久| 免费日韩精品 | 欧美一区二区久久 | 久久国产激情 | 欧美日韩精品一二三区 | 亚洲激情在线播放 | 九九久久免费视频 | 欧美com| 日韩一区二区不卡 | 成人av日韩 | 国产激情一区二区三区 | 国产尤物av | 在线观看亚洲视频 | 在线观看www视频 | 欧美无砖砖区免费 | 亚洲一区二区在线视频 | 九九热精品在线观看 | 国产露脸国语对白在线 | 伊人av综合网 | 久爱综合| 国产精品久久精品 | 国产综合一区二区 | 激情综合文学 | 综合国产精品 | 欧美 日韩 国产 一区 | 久久伊人免费视频 | 高清性爱视频 | 影音先锋激情在线 | 日韩中文av | 天堂在线观看中文字幕 | 国产精品一级 | 国产xx视频 | 国产精品久久久久久久久久久久久久不卡 | 午夜影院黄 | 欧美做受69| 亚洲性图av | 自拍偷拍第1页 | 超碰在线超碰 | 大号bbwassbigav女 | 人人看人人插 | 久久久久国产免费 | 国产伦精品一区二区三区四区免费 | 3p视频在线 | 九色在线观看 | 国产一区二区美女视频 | 国产女人视频 | 中文字幕一区视频 | 国产精品欧美一区二区三区 | 亚洲精品在线播放视频 | 国产精品久久一区 | 久久国产视频一区 | 老司机亚洲精品 | 久久小草 | 国产一二三精品 | 国产精品17p| 久久综合视频网 | 日本黄色短片 | 操操干| 亚洲女同一区二区 | 国产69久久精品成人看 | 久久免费视频播放 | 国产九区 | 欧美日韩在线不卡 | 久久免费在线观看 | 男女无遮挡做爰猛烈视频 | 最新国产拍偷乱偷精品 | 亚洲精品久久久久久久久久久久久 | 国产一区二区黄色 | www精品| 久久久黄色 | 国产一区在线观看视频 | 在线观看视频中文字幕 | 国产又黄又猛又粗又爽 | 成人免费视频大全 | 亚洲久久在线 | 久久久一本精品 | 色多多污 | 亚洲国产精品suv | 国产黄频在线观看 | 操皮视频 | 在线观看9.1| 国产乱码精品一区二区三区精东 | 日韩在观看线 | 超碰97成人 | com毛片 | 男人的天堂视频网站 | 一本之道久久 | 国产福利免费视频 | 国产精品蜜臀 | 成人高清网站 | 久久女| 日韩一二三区视频 | 一级视频在线免费观看 | 成人一区二区在线 | 国产成人亚洲精品 | 国产精品高潮呻吟久久av黑人 | 青青国产在线视频 | 精品国产鲁一鲁一区二区张丽 | 亚洲国产成人久久 | 日韩高清久久 | 国产福利小视频在线观看 | av一区二区三 | 我爱av好色 | 97超碰免费 | 日本激情视频网站 | 在线观看mv的中文字幕网站 | 色四月婷婷 | 91久久精品夜夜躁日日躁欧美 | 亚洲h视频在线观看 | 夜夜操夜夜操 | 午夜成人免费影院 | 一级激情视频 | 2021av视频| 一区二区在线免费观看视频 | 99re热这里只有精品视频 | 国产第一毛片 | 国产小毛片 | 黄色片欧美 | 三级色网 | 色99色| 另类性姿势bbwbbw | 亚洲网站在线 | 偷拍欧美亚洲 | 日韩精品中文字幕一区二区三区 | 四虎国产精品免费 | 一区两区小视频 | 你懂的欧美| 玖玖国产 | 欧美你懂得 | 丰满岳乱妇一区二区三区 | 爽天天天天天天天 | 日本99视频| 泽村玲子在线 | 欧美成人午夜 | 国产自产高清不卡 | 成人日韩视频 | 亚洲专区欧美专区 | 日韩1级片 | 久久国产一区 | 无毛av | 亚洲天堂一区二区 | 国产做爰免费视频观看 | 怡红院成人影院 | 久久爱一区 | 夜夜嗨av一区二区三区四季av | 黄色小视频在线免费看 | 成人精品福利视频 | 国产成人tv | 久久国产一级片 | 日韩在线看片 | 新91视频在线观看 | 亚洲成人av一区 | 日本精品在线视频 | 中文字幕精品视频 | 欧美草草| 欧美精品大片 | 欧美一级日韩一级 | 蜜臀av免费在线观看 | 亚洲草草网 | 偷拍网亚洲 | 成人性视频sm. | 亚洲免费观看高清在线观看 | 色播欧美 | 国产性一乱一性一伧一色 | 高跟91白丝| 天天草夜夜操 | 丹丹的呻吟声1一7 | 美女黄色av| 波多野吉衣一二三区乱码 | 激情网站在线观看 | 台湾性生生活1 | 国产又黄视频 | 中文字幕亚洲欧美日韩在线不卡 | 你懂的国产 | 最近2019中文字幕一页 | 一区三区视频 | 亚洲永久精品视频 | 污污网站在线免费观看 | 国产网红女主播精品视频 | 99热麻豆| www.精品久久 | 天天插天天干天天操 | 欧美专区在线视频 | 成人18免费观看的动漫 | 激情综合五月婷婷 | 91激情网 | 91视频com| 新超碰在线 | 污视频在线观看网站 | 五月激情网站 | 中文字幕日本视频 | 亚洲精品福利在线 | 在线亚洲不卡 | 午夜黄视频 | 欧美一级特黄aa大片 | 欧美日韩一区在线观看 | 香蕉视频色 | 日本久久中文字幕 | 深爱五月激情五月 | 亚洲爱情岛论坛永久 | 91浏览器在线观看 | 91视频在线视频 | 婷婷丁香色 | 男人懂的网站 | 亚洲高清免费视频 | 久久免费视屏 | 91精品国产91久久久久久黑人 | 国产黄色大片网站 | 午夜视频福利在线 | 玖玖在线资源 | 黄色一级片 | 亚洲香蕉成人av网站在线观看 | 国产毛片毛片毛片毛片 | 夜夜爱夜夜操 | 99av视频| 青青草激情视频 | www.黄色国产 | 亚洲v国产v欧美v久久久久久 | 国产在线一级片 | 99国产在线观看 | 最近中文字幕在线中文高清版 | 一本色道久久综合狠狠躁 | jav中文字幕 | 国产乱仑 | 亚洲精品中文字幕乱码三区 | 在线免费精品视频 | 久久91久久久久麻豆精品 | 好逼天天操 | 久久国产精品99久久人人澡 | 永久免费在线 | 99热欧美| 中文字幕一区二区三区有限公司 | 日韩精品久久久 | 国产九色视频 | 一本一道久久a久久精品综合 | 日日夜夜国产 | 国产一区视频在线 | 午夜国产福利 | 91亚洲精品视频 | 美女伊人网 | 欧美日韩字幕 | 中文字幕综合在线分类 | 98国产精品视频 | 成人网在线免费观看 | 亚洲国产精品国自产拍av | 日本视频不卡 | www.九色| 亚洲免费a | 国产黄色在线看 | 黄色一级大片 | 古装做爰无遮挡三级视频 | 国产又黄又猛又粗又爽 | 国产美女作爱视频 | 欧美美女喷水 | 69影院少妇在线观看 | 伊人热久久 | 色女孩综合 | 成人美女视频在线观看18 | 欧洲综合视频 | 国产黄色片av | 黄色aaa大片 | 日韩在线观看不卡 | 免费看日韩毛片 | 午夜精品久久久久久久蜜桃 | 欧美视频一区二区三区四区 | 91免费观看国产 | 亚洲天堂手机版 | 亚洲精品一区二区三区中文字幕 | 日本黄色视屏 | 欧美成人一区二区三区 | 亚洲欧美视频在线观看 | 日韩免费看片 | 天堂va蜜桃 | 国产中文 | 美女av网站| 激情视频一区二区三区 | 欧美日韩字幕 | 99精品视频在线观看 | 自拍偷拍第五页 | 日本a在线播放 | 亚洲精品不卡 | 久久久久久久久久国产精品 | 精品香蕉99久久久久网站 | av免费在线网站 | 51国产偷自视频区 | avove探花| 黄色理论片 | 国产一级二级视频 | 久久中文字幕免费 | 国产精品视频久久久 | 国产精品自拍在线观看 | 黄色三级情侣片 | 爱爱一级 | 4438x亚洲最大 | 久久青娱乐 | 就是色 | 一区二区免费 | 亚洲艹 | 69天堂 | 小柔的淫辱日记(1~7) | 久久免费成人 | 高清一级片 | 五月天国产在线 | 久久久久久久久97 | 中国毛片在线观看 | 成人免费高清在线播放 | 四虎免费在线观看 | 亚洲国产精品国自产拍av | 91精品网站| 波多野结衣电车痴汉 | 亚洲最大免费视频 | 伊人网综合网 | 国产一区欧美二区 | 天天干夜夜| 日韩美女一区 | 91免费福利视频 | 精精国产xxxx在线观看主放器 | 亚洲综合图片网 | 日本久久高清 | 在线亚洲区| 成人在线视频播放 | 天天拍夜夜操 | 一色屋精品久久久久久久久久 | 国产精品bbwbbwbbw在线 | 男人日女人在线观看 | 国产精品羞羞答答在线观看 | 啪啪导航 | 国产精品黑丝 | 天天射网站 | 麻豆视频一区二区 | 国产欧美日韩在线播放 | 国产福利av| 久草手机在线观看 | 国产精品成人网 | 午夜精品一区二区三区免费视频 | 免费亚洲视频 | 成人交性视频免费看 | 91麻豆精品国产自产在线观看一区 | 日韩福利在线观看 | 亚洲综合精品视频 | 中文字幕精品视频在线观看 | 国产免费看av | 久久人人爽人人人人片 | 日韩中文字幕精品视频 | 欧美国产日韩一区二区 | 日韩欧美国产亚洲 | 国产视频资源 | 中文字幕在线视频免费播放 | 五月婷婷激情五月 | 国产主播精品 | 欧美人与性动交α欧美精品 | 欧美a免费 | 九九夜| 黑料视频在线观看 | 黄色成人在线视频 | 午夜激情视频在线观看 | 日本少妇性高潮 | 亚洲va欧美va天堂v国产综合 | 久久久久久久亚洲精品 | 国产高清自拍视频 | 小说区图片区亚洲 | 亚洲午夜精品一区二区三区他趣 | 日韩欧美一区二区三区视频 | 香蕉视频最新网址 | 欧美日韩成人在线观看 | 在线一级片 | 91免费观看国产 | 成人免费毛片足控 | 日韩精品免费一区二区在线观看 | 国产精品一区久久 | 欧美va天堂| 999久久久精品 | 中文字幕88页 | 日韩有色 | 亚洲一品道| 黄色一级大片在线免费看产 | 亚洲拍拍视频 | 国产在线看 | av中文字幕网 | 色亚洲欧美 | 色婷婷中文 | 精品少妇av | 亚洲高清视频在线 | 在线观看黄色小视频 | 亚洲精品中文字幕视频 | 免费看av在线 | 深夜福利一区二区三区 | 国产麻豆一区二区三区 | 黄色免费视频观看 | 一区在线观看 | 99在线视频精品 | 成人黄色在线 | 欧美人与禽猛交乱配视频 | 久久青草欧美一区二区三区 | 五月天在线观看 | 国产精品图片 | 欧美日韩国产成人在线 | 最新地址在线观看 | 尹人香蕉 | 国产精品一区二区三区在线播放 | 99综合视频| 中国一级女人毛片 | 嫩草视频在线 | 香蕉久久视频 | 五月天激情综合网 | 韩国激情av | 亚洲欧美高清在线 | 91精品国产自产91精品 | 在线观看日本网站 | 中文字幕精品在线观看 | 久久a视频 | 中日韩在线观看视频 | 一级片视频免费 | 午夜天堂影院 | 亚洲精品成人久久 | 亚洲乱码国产乱码精品 | 91免费福利视频 | www日本在线| av手机版|