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

前后分離架構的探索之路

移動開發
那時候很多像我們公司一樣的中小 IT 企業(200人左右,組成成分主要是大大小小的項目團隊)都有要做自主產品的訴求,這是市場決定的:出門找生意越來越難了。于是很多野路子出家的產品研發團隊就這樣誕生了……

大約五年前,那時候我還是一個小小講師(蘋果 AATC 培訓認證),完全不懂編程為何物的菜鳥,一個偶然的機會讓我進入了公司的開發部門,任職什么呢?用戶體驗設計師,原因很操蛋——我以前干過廣告設計,做過餐飲服務行業,因而我有兩個優勢:能聆聽和揣摩客戶的需求,然后能做一些圖。

那時候很多像我們公司一樣的中小 IT 企業(200人左右,組成成分主要是大大小小的項目團隊)都有要做自主產品的訴求,這是市場決定的:出門找生意越來越難了。于是很多野路子出家的產品研發團隊就這樣誕生了……

說是產品研發團隊,其實都只是一群習慣了聽命于人去按照 RFP 實現功能的碼農罷了,和其他項目組相比唯一的差別大概就是“尚有夢想的咸魚”而已。所以研發過程中的種種幼稚和操蛋,你用腳趾頭都能猜想得到。

一開始我就是把各位老大的設想整理成人人看得懂的需求,然后把它們串起來畫成草圖(mockup)再交給各種工程師去實現好了,這個角色類似于如今很時髦的“產品經理”。然而很快我發現大家老是加班,為什么呢?調 CSS 樣式!

做慣了平面設計的我并不懂得把畫出來的東西變成瀏覽器里的東西會有多麻煩。(今天,我在面試一些切圖頁面仔時,聽他們大談特談像素級還原尚覺得好笑,但想想五年前的自己還是很有些羞愧的……然而更令我無語的是:到了如今初出茅廬的小前端們還把像素級還原的切頁面當成是至高無上的本事,這件事情本身是不是很令人“沮喪”呢?)當寫頁面的同事一再告訴我我畫的東西不實際之后,我憋不住了——我就不信我畫的東西實現不出來!

抱著一口“怨氣”,我義無反顧的踏上了 HTML+CSS 這條路,其中過程不用多講,唯一的金玉良言只有一條:別看國內的教程,別信 w3school 之類的拼湊資源站。總之這事兒的結果是半年以后整個項目組幾乎所有的頁面都是我來寫了。(今天,已然成為前端架構師的我,所有頁面的自定義樣式還是得我親自寫,我不怪任何人因為我知道在很多工程師內心里還是瞧不上寫 HTML+CSS 的技術的,你們不愿意學我不勉強,我來。我還要感謝你們,為了能把飯喂到諸位的嘴里,我花費大量的時間學習 CSS 框架的開發,從而精通了整個生態鏈,從 pre-processing 一直到 post-processing)。

這個世界就是這樣:一旦你專精了一項技能,你會很容易看出相關的技能在目前的水準如何。古人說:水漲船高。誠不欺我也。

所以成天耳濡目染 HTML+CSS 的我,經受著各種國外大神的視頻+教程耳提面命的我,很快就明白了一件事:我做的這個叫前端開發,HTML+CSS 只是起了一個頭,后面還有一座叫 JavaScript 的大山等著我。而我們做的前端開發還很嫩,活該你成天加班改樣式,修 bug,因為你一開始就沒走對路數。

幸好還不晚,不過這篇的主題是前后分離,所以我得按下快進按鈕直奔主題而去。

JavaScript 對我來講太難太難了,但是 jQuery 尚可,因為它有非常棒的 API 設計和兼容性處理,很適合我這樣的菜鳥入門。那時候有一個叫 Jeffery Way 的家伙錄制了一套 30 天學會 jQuery 的教程讓我受益匪淺,我認為他講得好,主要是兩個原因:

他不主要講各種 API 如何用,他從一開始就給我貫徹了一個重要的思想:學會看文檔;

他主要講如何分析一個功能的實現,如何組織以 jQuery 為核心的代碼邏輯;

在這里先插一段旁述。各位能在工作中使用 Rails 的同行們,你們是無比幸運的!因為 Rails 已經把 View-Template 這一環節梳理的足夠簡單,哪怕完全不懂 Rails 的頁面仔,你稍微提點提點,他也能很快學會如何把靜態頁面套進 Rails 的模版里去。

而我則是很不幸的,在那時我碰上了非常討厭的 JSP!你們千萬別笑,隨便去問那些寫頁面出身的前端們對 JSP 是什么感受,絕對不會有好臉色的。對,我承認自己很菜。寫靜態頁面我行,但轉成 JSP 模版這件事在那時真的能把我難死!更要命的是,如果你把寫好的頁面交給后端工程師去套模版,最終的結果就是一塌糊涂!沒錯,他們根本不會細心周到的照顧你精心設計的每一個標簽,他們會做出各種各樣奇葩的事情來破壞原本完美的頁面結構,逼迫你不停的修改樣式和腳本來適應這些“補丁”。

更要命的是調試!原本寫 HTML+CSS 一個輕量級編輯器就搞定了,但等他們轉成 JSP 之后你再想去調試就沒那么簡單了。你需要:

運行環境,比如 Java+Tomcat,不懂吧?沒事,學!

生態鏈,比如 Maven 或 Gradel,不懂吧?沒事,學!

IDE,比如 eclipse 或 IDEA Intellij,不懂吧?沒事,學!順便一提,知道沒接觸過 Java 的人想跑起一個應用來有多難嗎?我就是為此才愛上 Rails 的!

……

就這樣,為了調試 HTML+CSS,你最終變成除了不會寫 Java 代碼外其他全都會的 Java 開發工程師。

你們這些從后端出身的家伙們能體會到前端頁面仔們邁出這一步需要多大的勇氣和毅力嗎?

你們能想象他們之所以不得不學做這些,就是因為你們無法認真對待 HTML+CSS+JavaScript 嗎?

為什么要在后端的環境下做前端的事情?其實就為了三個字:擦屁股!

你可以說我們這一群人都很菜,我也承認,可是你要知道:環境不是時時處處都可以給你各種選擇的,有時候你唯一能做的選擇就是改變自己。那么作為一個只懂 HTML+CSS+皮毛 JavaScript 的我,能做出什么?不知從何時開始,“如果可以不再依賴任何環境就可以做好我們的份內之事就好了”這樣幼稚的念頭開始縈繞在我的腦袋里……

回到 Jeffery 的視頻教程,在其中的一節他演示了 Ajax 獲取遠程數據然后動態修改 DOM 的例子,當時的例子里用的是 Twitter 的 API,然后每隔一段時間拉取幾條新數據讓頁面即時刷新這樣子……

不要笑,知道我當時有多震驚嗎?我覺得我們就他媽的是一群傻逼好嗎?

第二天我慌不擇路的把這段視頻拿給后端架構師看,問他實現這樣的東西,可行?他憋了半天:我們都是直接去數據渲染到 JSP 的,API 沒做過……

操!沒做過難道不能做?我趕緊拋出了誘餌:如果搞的出來,以后你們再也不用套模版了!

這貨立馬答應了……

此后就是翻天覆地的折騰,我搜遍了所有能找到的資料,把它們翻成中文或者直接當面講給后端聽,有些東西我們都無法理解就先記下來,晚上回去我上 SO 問,上 Youtube 搜會議等資料看。

然后他們告訴我,如果換 Spring 的話可能會比較簡單,因為他們能百度到用 Spring 開發 API 的例子。于是我們就開始改造了。

改造的第一步是不用寫 JSP(或者少量的寫),但是靜態資源其實還是放在 Tomcat 容器里的,因為我們經過嘗試發現跨域問題解決不了(是的,當時就是菜,連反向代理都不懂),不過沒關系,反正我已經學會了本地跑 Tomcat 了,至少我們可以不用寫 JSP 了嘛。現在回想一下當初搞前后分離的原始動機竟然就是為了不再去寫 JSP,多么滑稽啊!然而反過來想想,這也映襯了一個事實:前端工程師們的生態環境是有多糟糕!

再然后就是把 jQuery 修煉到滿級開始無腦刷副本的無聊過程,當然在這個過程中也體驗了一些新東西,比如前端的模版引擎(Jade/Handlebars/Art等),模塊系統(SeaJS/RequireJS)等等,JavaScript 的水平和理解有了長足的進步,終于開始有一個工程師的樣子了。

再之后就是大家都知道的劇本,node.js 橫空出世,一下子 HTTP Server,API Service,Shell Scripting……等等這些統統都可以用 JavaScript 來搞了,npm bower grunt gulp……等等這些應運而生,忽然間前端開始有了自己的生態系統!盡管它還很弱小還很混亂,但是它給了我們這些野路子出身摸爬滾打渾身泥水的家伙們一道希望之光,它讓我們看到:

我們可以不依賴后端的運行環境:node.js

我們可以有自己的生態圈:npm

我們可以隨心所欲使用各種方便的開發工具:所以我后來成了 vim 黨

……

我們可以有很多可能,我們可以把我們擅長的事情做得更棒而不需要后端哥哥們操心,我們可以省去很多后端要 cover 的工作讓他們專心寫好自己的代碼,我們設想中的分離是有搞頭的,不僅僅是為了分離而分離,而是為了更好的專精、多能、協作、管理而分離!

何以如此狹隘的看待前后分離?時至今日我也不懂為什么有那么多人抱持著種種懷疑與偏見。

你們不用擔心數據層邏輯會有冗余,因為把 Model 的邏輯分攤到前端身上可以省去后端的部分代碼和處理工作,而前端也可以更容易地按照業務來組合自己需要的 Model
你們不用擔心視圖層的緩存,因為分離后前端只存在靜態資源,我們可以利用 CDN,利用 負載均衡,利用很多很多技術分攤過去必須讓后端來承擔的工作
你們不用擔心頁面渲染速度,首頁怕慢我們可以交給服務端來渲染,或者在中間加一個很簡單的 node server 來做首頁靜態化渲染,后面的事情交給前端就是,只快不慢
你們不用擔心要為多個客戶端做不同的資源調度,只要 API 規劃得到,一套 Service 可以支持多個客戶端的業務體系,而前端行有余力甚至可以寫出多個版本來做 A/B 測試
你們不用擔心 ……

優點多了去了。

不是說這些優點目前都很成熟,也不是說實現它們沒有代價,但是你不去做就不可能成熟,代價也不是不可以有但關鍵是要看長遠的收益。

很現實的例子就是我們有一套系統本來是為自己做的,后來讓客戶知道了覺得很感興趣希望為自己定制一份。我們分析了一下,發現現有的 API 已經可以滿足用戶的需求,只需要針對幾個具體的業務邏輯再擴充幾個接口讓數據負載更合理便可,于是我們只用了三天就給客戶出了一個完全可用且相當穩定的 demo。客戶覺得滿意,開始按照他們的 VI 重新設計一套 UI,然后剩下的事就是找幾個頁面仔把頁面寫出來,現成的 Angular 邏輯往上一套小改幾處即可。

你會覺得不值得?

當然了,我在這里不是鼓吹前后分離信仰,不是強求所有的事情都需要分離來做。一個產品的軌跡是需要產品研發團隊自己把控的,如果人云亦云流行什么用什么那也就和無腦兒沒啥區別了。有些場景也的確不需要分離,比如說門戶網站,CMS,Mini Site 這類的需求就可以沿用成熟的開發體系。不過我之前談到過,探索和實踐分離體系還有一個重要的好處,就是能夠讓你現有的前端開發團隊摸索和整理出一套單兵作戰的環境體系,即便是不用分離架構,我單純用 node.js 寫一套門戶網站,CMS,Mini Site 這樣的東西也不會比 Rails 慢啊!這樣一來,我還是可以把后端的資源用在更重要的底層服務或業務邏輯去,把那些和頁面 UI 交互相關,但又和數據層有著小小關聯的業務交給前端獨立完成,又有什么不好呢?
前后分離=SPA?SPA=臃腫框架?

這一點我覺得有必要分析清楚,標題里的兩個問號是我見到過最多的誤解。

首先,前后分離是架構上的事情,第一次做肯定很痛苦,但做一遍之后好處還是很多的。舉實例說明:

我們做過一個會議的應用,這個應用一開始設計是沒有 web 端的前臺的,只有一個管理后臺,前臺都是移動端。基于這個原因,我們還是分離的(因為你得提供 API 給移動端,不分離還能怎么搞呢?),后臺用成熟的 Angular 很快就做好了。

沒想到后來有一個額外的要求,用戶要在創建會議的時候生成一套在線的會議手冊,這個會議手冊就是一個簡單的多頁面 CMS 系統,當用戶創建新會議的時候在后臺填寫手冊相關的內容,我們就要為它生成一系列的頁面來顯示(類似于 Mini Site),它有兩個特定要求:

不需要登錄,公開訪問。然而最初的設計是沒有賬號就不能參加會議,需要報名,所以我們后臺和移動 App 都是直接先要求登錄或注冊的,相應的 API 請求也是如此,有鑒權控制的。

要能多端訪問,還要能嵌套在原生應用的 webview 里,因為加功能來不及了,只有一天時間。

傳統的架構你的寫頁面然后套模版去調試,雖然只有不到10頁,但也是很費時間的。但我們已經分離了,現在為了這么一個額外的需求也不值得再倒退回去,那么怎么做的呢?

單獨建一個會議手冊的項目;

模版用 Sass+Handlebars 很快搞定;

里面的接口請求為每一個會議服務商綁定一個 token(后來還在后臺允許管理員重新生成和綁定 token),渲染頁面時寫死在 <meta> 標簽里(就好像 CSRF 的處理),以此繞過鑒權

寫一個簡單的 node service,就干一件事:渲染handlebars模版

創建會議的時候,Java API 傳會議 ID 給 node service,把渲染好后的頁面單獨保存在靜態資源服務器下(用 ID 創建獨立目錄),然后返回調用地址

后臺收到會議地址,嵌入一個 iframe 做手冊預覽

一天搞定,完事。值得一提的是,整個手冊用了許多 HTML5 的新特性,比如 History API,SessionStorage,OfflineCache,GeoLocation,DesktopNotification,沒有用 Polyfill,因為這些都是可選特性,不支持就不作用,關鍵是:從頭到尾就是沒用 jQuery——不是我跟 jQuery 過不去,的確用不著,還嫌大。更不要提 SPA 框架了,完全沒有。

所以你看,分離架構可以讓我們很快完成這樣的小任務,并且可以單獨維護管理,也可以直接共享現有的 API 資源,它不一定只是為了 SPA 才分離,而且也沒有什么技術難度。能用很短的時間完成還能保證質量,是因為我們有成熟的構建和CI,如果換成是當初 JSP 那一套,光配置個本地環境就夠夠的了,其他我都不敢想象。

分離是架構選擇,決定了你如何管理、分配與協調現有的資源,至于你分離后要做 SPA 還是其他模式的應用那完全是你的自由,并不是捆綁一加一的強制性決策。去構建一個分離體系當然會有挫折有代價,沒有人否認這個,然而一)這是可選的;二)你能否看到和利用它的好處。

至于 SPA 一定是臃腫的嗎?保持這種思想的我只能說你目光所見過淺。相比十年前的 web 開發,我能說現在 Rails 很臃腫嗎?別說十年前了,就是今天一樣也有人說 Rails too heavy!你覺得呢?那又怎樣呢?還不是該用就用?水平高的自然知道拆分和減肥,連 Rails 自己都知道瘦身一個 Rails API 出來,你以為所謂“臃腫”是 SPA 框架的專利嗎?SPA 之所以臃腫是有兩個主要的現階段環境因素決定的:

非常多的新特性層出不窮,為我們開發更豐富強大的應用程序提供了武器和彈藥。但是瀏覽器(及其他運行環境)和設備碎片化的問題導致這些新特性無法提供始終一致的表現或性能,于是各種框架就要在底層做兼容性的補充與改良,順便還要為尚未形成標準的新特性重新封裝 API 接口。比如說 Ember 干嘛要造一個 Object 接口出來?不就是因為 Observable 接口沒有嗎?有什么大不了的?ES2016就有了(非常可能),或者你可以不用 Ember 自己的,用第三方的 Observable 組件來代替也行。
jQuery 做的事情和這有多大區別?沒錯,jQuery 是相對輕了,可是它負責的面兒也少啊,哪位用 jQuery 的不都得附帶十個八個插件的?合在一起就輕了?

相對的,前端工程這塊業界整體的水平差距很大,牛的特牛,菜的特菜;但是菜的也希望用牛的工具,可又沒那個底蘊解決牛的能解決的問題,于是牛的就把一個一個特性統統封裝好聯系在一起,讓你盡可能快速簡單的就能用到。
如果大部分的工程師都成長起來了,也就沒有必要非得搞大而全的方案了,React 及其生態體系不就是一個很好的例子嗎?不給你搞大而全,只給你搞小而專,你以為你把那一堆連起來用就不叫 SPA 了?幼稚!

再說一遍,SPA 是一種產品的技術形態,而不是特定某(幾)種框架下的產物,滿足這種技術形態的工具鏈可以臃腫也可以簡潔,這是因為環境和人決定的。

Single Page Application,not Some Particular Application

前后分離還有一方面的作用。前端工程師都有一個普遍的特點:你讓他們寫個頁面信手拈來,但是你讓他們負責一個完整的業務多半就得抓瞎。為什么?因為他們太偏門。最近一兩年我開始大量的面試和儲備新人,十有八九都是這樣的:HTTP?不懂!Ajax?懂!(你覺得合理嗎?)jQuery 請求 API?會!Promise 用過?……沒。換個說法,deferred 對象?哦哦,見到過!(你覺得合理嗎?)

諸如此類的問題屢見不鮮,讓我對前端這個行業的未來充滿憂慮。當初我也是從一竅不通的菜鳥開始,若那時沒有“一定要擺脫 JSP”的幼稚理想,我怎么可能通過摸索前后分離讓自己擁有今天這樣相對全面的見識和理解?我走過的路讓我明白,探索前后分離并不是像很多旁觀者說的“為了分離而分離”,反而是“為了更好的理解 web 開發這回事而分離”。

因為當你開始摸索這條路,你就不得不面對許多根本性的問題,拿跨域資源共享來說吧,以前的架構前端工程師是極少需要面對這種問題的,但你只要一分離就必然會碰到,然后你就要去學諸如 JSONP,CORS,HTTP 協議,瀏覽器安全機制,PreFlight Request,反向代理等等技術細節。看似加重了學習成本(要我說,這些原本應該是學校的責任!),但作為同事,你希望你身邊做的是個只會“追求像素級還原”的頁面仔呢?還是對上述知識點有著扎實的理解和實踐經驗的工程師呢?

說到這,就昨天有人在 SF 上問了個問題,大致是問:JavaScript 怎樣才算學好了?總覺得需要自己能寫一個庫或框架出來才算學好了,大家怎么看?

我剛好和人吵完了架,靜下心想了想之后作出了如下回答:

少年苦練 10 年拳術欲下山揚名立萬,路遇一使刀漢子,數招后不敵慘敗而歸……回山后找師傅問話

“師傅,為何我苦練十年還會輸?”

“因為你不知道打架不止可以用拳頭。”

“可你也沒告訴我啊!”

“你只說要學拳法,又沒說學打架!”

“那我不學拳法了,我要學打架!”

“那就不只是要學拳法了,打架想要贏就得十八般武藝都學,你未必要門門精通,但你最起碼得有這些見識。除此之外,還得學挨打,學療傷,學逃跑,學追蹤,學暗器,學使毒……想贏?哪有那么簡單的!”

“那我還能成拳法宗師嗎?”

“呵呵,如果你打架再也不會輸,誰敢說你不是宗師?”

這個寓言想表達的意思是不言而寓的,我很贊同這里一位朋友說的:我們不應該有前端后端之分,我們可以有專精之處,但是對于 web 開發這回事該懂的都應該要懂,否則你怎么可能打得贏?同理,如果說后端工程師需要靠寫頁面來了解前端的話,那么前端也應該有類似的方式來了解后端做的一些事情。在這里探索前后分離就是一個很好的教學與實踐相結合的手段。沒有哪個頁面仔會甘于永遠切圖寫頁面,他們也很羨慕后端哥哥們大神般的風騷,只是他們所處的環境造成了他們只知道數十年如一日的就懂切頁面了,如果能多給他們一些提攜與幫助,誰敢說他們以后不會成為江湖高手?

很多人拿工作忙,缺人手,創業公司求效率等借口來回避在技術道路上的探索和進取,說真的我個人非常非常可以理解,我當初所做的事情其實和創業什么的也沒多大區別,我們人手也很緊缺——今天我們只有三個人維護著四款前后分離架構的中大規模產品,這些產品有 Saas 版本的,還有大大小小十幾個在客戶那里獨立部署的,你沒看錯就三個人!一個 Java 工程師,一個懂 Java 的前端工程師,再加上我這個什么都懂一點但什么都不專精的萬金油。

我們做的還不夠好,但我們已盡力做到自己能做的最好,與我們這五年來碰到的風風雨雨相比較,探索前后分離這真的不算個大事兒好嗎?

作為前端工程師(并且是懂得和尊重后端開發的),我很欣慰能活躍在這個時代,就像有人說的:這是前端最好的時代,也是前端最壞的時代。然而歷史無數次證明:真金不怕火煉,英雄應運而生。那些后端語言環境和框架體系難道沒有經歷過同樣的革新與變遷?就因為我們過去是只會寫 jQuery 的頁面仔,所以我們就應該永遠這樣停滯不前?

這就是我探索前后分離的過程和心得感想,主要是在離職前為過去五年做一個總結。寫得比較凌亂也沒什么技術含量,根本的意思還是要鼓勵眾多的前端同行們:學校沒有我們的專業課,社會對我們的工作沒有準確的認知和評價,這都不要緊!重要的是我們自己不能看輕自己的能力,不能放棄自己的價值。在學習和工作尚有余力的時候勇于探索吧,別管別人說什么,本事學到手才是最重要的,要記住:你是一個工程師,你不是一個頁面仔!
 

責任編輯:chenqingxiang 來源: nightire
相關推薦

2019-07-19 09:05:39

前后分離接口

2017-02-15 10:18:32

架構前后端分離

2014-04-18 14:43:07

前后端分離NodeJS

2017-06-26 09:55:31

前端后端開發

2019-06-12 19:00:14

前后端分離AppJava

2023-02-08 16:29:58

前后端開發

2017-11-15 07:01:33

互聯網分層架構前后端

2014-02-17 17:40:13

系統架構Web架構

2016-09-21 10:11:19

2017-11-06 08:41:53

互聯網分層架構前后端

2020-09-29 07:42:34

互聯網分層架構前后端分離

2025-02-10 08:39:17

2019-07-09 05:44:35

前后端分離架構接口規范

2025-01-21 08:00:00

自適應框架框架開發

2021-09-18 09:45:33

前端接口架構

2021-01-09 23:08:45

架構前端后端

2022-05-27 10:40:04

前后端權限控制設計

2018-08-13 13:56:24

2020-09-25 11:50:12

前后端分離架構Web

2021-10-20 18:21:18

項目技術開發
點贊
收藏

51CTO技術棧公眾號

国产第一页在线| 99在线无码精品入口| 欧洲亚洲视频| 欧美视频一区二区三区在线观看| 亚洲综合五月天| 黄色美女一级片| 青青草97国产精品免费观看| 欧美另类暴力丝袜| 公肉吊粗大爽色翁浪妇视频| 久久久久久爱| 一本大道久久精品懂色aⅴ| 国产又爽又黄ai换脸| 视频一区二区三区国产| 国产在线精品免费av| 热99精品只有里视频精品| 欧美在线视频第一页| 精品午夜久久| 日韩国产欧美精品在线| 国产精品探花在线播放| 国精产品一区二区三区有限公司 | 男男gaygays亚洲| 国产日韩欧美精品综合| 国产日韩在线一区二区三区| 91麻豆国产在线| 老妇喷水一区二区三区| 久久久久久香蕉网| 欧美国产精品一二三| 色97色成人| 国产小视频国产精品| 国产精品一区二区人妻喷水| 亚洲视频精选| 3d成人动漫网站| 国产精品视频中文字幕| 九色成人搞黄网站| 欧美性xxxx在线播放| 免费看黄在线看| 啦啦啦中文在线观看日本| 亚洲欧洲99久久| 先锋在线资源一区二区三区| 精品无人乱码| 久久日韩精品一区二区五区| 好吊妞www.84com只有这里才有精品 | yiren22综合网成人| 91在线精品一区二区三区| 99国产在线| 精品人妻一区二区三区日产乱码 | 伊人免费在线| 亚洲国产精品成人综合| 日韩.欧美.亚洲| 黄色在线网站| 国产欧美日韩卡一| 日韩欧美99| av资源网站在线观看| 中文字幕精品三区| 亚洲人成人77777线观看| 在线视频婷婷| 国产精品国产自产拍高清av王其 | 日韩美女网站| 国产精品福利av| 99精品视频网站| 成人在线免费看片| 亚洲一区日韩精品中文字幕| av一区二区三区免费观看| 人交獸av完整版在线观看| 亚洲午夜av在线| 欧美日韩精品在线一区二区| 日韩伦理在线| 欧美专区日韩专区| 日韩成人av免费| 日韩欧美久久| 亚洲丁香婷深爱综合| 性色av蜜臀av色欲av| 欧美美女在线观看| 中文字幕在线看视频国产欧美在线看完整 | 中文字幕一区二区不卡| 18视频在线观看娇喘| 日本三级韩国三级欧美三级| 亚洲va天堂va国产va久| 妺妺窝人体色www在线小说| 日韩福利一区| 制服丝袜日韩国产| 国产福利在线观看视频| 国产成人三级| 久久亚洲欧美日韩精品专区| 1级黄色大片儿| 日本成人在线电影网| 亚洲一区二区久久久久久久| 手机看片1024日韩| 国产精品美女一区二区| 欧美视频免费看欧美视频| 日本一区二区三区视频在线| 5月丁香婷婷综合| 国产视频久久久久久| 教室别恋欧美无删减版| 欧美精品生活片| 波多野结衣电车痴汉| 国产一区二区三区久久悠悠色av| 久久99精品久久久久久水蜜桃| av中文字幕在线| 午夜日韩在线电影| 中文国产在线观看| 欧美日本成人| 欧美激情在线有限公司| 中文字幕+乱码+中文乱码www | 高清国产一区| 91大神xh98hx在线播放| 亚洲成av人片www| 手机在线国产视频| 久久成人高清| 久久久久久久电影一区| 影音先锋国产资源| www国产精品av| 日韩成人手机在线| 亚洲日日夜夜| 一区二区国产精品视频| 色婷婷在线观看视频| 国产精品一区免费视频| 亚洲国产婷婷香蕉久久久久久99| 国产福利电影在线播放| 日韩精品一区二区三区视频在线观看 | 国产欧美久久久| 国产亚洲欧美一区在线观看| 亚洲熟妇无码一区二区三区| 国产高清精品二区| 综合久久五月天| 日韩电影在线观看一区二区| 成人免费三级在线| avav在线播放| 亚洲国产欧美国产第一区| 色系列之999| 欧美国产一级片| www欧美成人18+| 一本大道熟女人妻中文字幕在线| 老牛国内精品亚洲成av人片| 久久久久亚洲精品成人网小说| 99久久精品国产一区色| 亚洲欧洲无码一区二区三区| 色噜噜狠狠永久免费| 国产在线观看91一区二区三区| 欧美在线观看视频| 欧美女子与性| 色欧美88888久久久久久影院| a视频免费观看| 国产视频亚洲| 欧美日韩亚洲一区二区三区四区| 亚洲天堂电影| 亚洲欧美日韩在线高清直播| 手机在线看片1024| 国产亚洲精久久久久久| www.欧美日本| 日韩亚洲一区在线| 国产在线视频一区| 中中文字幕av在线| 亚洲精品一区二区三区精华液| 久久久久久欧美精品se一二三四| 国产高清精品久久久久| 国产精品69久久久| 久久97久久97精品免视看秋霞| 亚洲午夜免费视频| 55夜色66夜色国产精品视频| 国产特级aaaaaa大片| 一区二区三区不卡在线观看| 97中文字幕在线观看| 亚洲日韩视频| 玛丽玛丽电影原版免费观看1977| 男人最爱成人网| 一区二区三欧美| 国产一区二区三区中文字幕| 亚洲精品免费一二三区| 成年人的黄色片| 久热国产精品| 自拍视频一区二区三区| 亚洲午夜免费| 热久久这里只有精品| 超碰免费在线| 91精品国产高清一区二区三区蜜臀| 麻豆明星ai换脸视频| 成人午夜视频网站| 国产精品免费成人| 日韩电影二区| 国产精品xxx在线观看www| jizz内谢中国亚洲jizz| 日韩最新免费不卡| 免费av一级片| 欧美视频一区二区三区| 麻豆一区二区三区精品视频| 91丝袜高跟美女视频| 日本激情视频在线播放| 黄色一区二区三区四区| 色乱码一区二区三在线看| 日韩激情欧美| 日韩av色综合| 青草在线视频在线观看| 亚洲色图激情小说| 精品久久久久成人码免费动漫| 狠狠色噜噜狠狠狠狠97| 91精品一区二区三区蜜桃| 99re这里只有精品6| 爱豆国产剧免费观看大全剧苏畅| 伊人成人在线视频| 中文字幕日韩一区二区三区不卡| 开心激情综合| 2014国产精品| 国产美女久久| 68精品国产免费久久久久久婷婷| 自拍视频在线免费观看| 日韩高清a**址| 国产av无码专区亚洲av麻豆| 色999日韩国产欧美一区二区| 九九视频免费在线观看| 日本一区二区动态图| 国产一精品一aⅴ一免费| 美女视频黄免费的久久 | 一区二区三区国产在线| 在线观看成人av| 九一精品国产| 久久精品成人一区二区三区蜜臀| 深夜福利一区| 96国产粉嫩美女| 国产精品美女午夜爽爽| 日本成人激情视频| heyzo一区| 欧美激情国产精品| 成人看av片| 久久久999国产| av在线电影院| 在线电影中文日韩| 久草在线青青草| 亚洲欧美变态国产另类| 无码精品人妻一区二区三区影院| 精品国产在天天线2019| www.色亚洲| 欧美一区二区三区在线| 久久这里只有精品9| 91成人网在线| 国产99久久久久久免费看| 色悠悠久久综合| 97人妻一区二区精品视频| 欧美性生交xxxxx久久久| 日本一级一片免费视频| 亚洲成人av福利| 日韩污视频在线观看| 亚洲成人综合在线| 国产乡下妇女做爰| 亚洲一区成人在线| 1级黄色大片儿| 欧美日韩免费区域视频在线观看| 一级片免费网址| 精品国产老师黑色丝袜高跟鞋| 一级免费在线观看| 欧美性xxxx18| 国产精品自拍第一页| 欧美三级乱人伦电影| 亚洲资源在线播放| 欧美一区国产二区| 亚洲爱情岛论坛永久| 亚洲国产精品电影在线观看| 午夜性色福利视频| 亚洲欧美综合v| av在线天堂播放| 久久亚洲精品成人| 99久久精品免费看国产小宝寻花 | 日日骚久久av| 超碰caoporn久久| 欧美激情极品视频| 理论片午夜视频在线观看| 人人做人人澡人人爽欧美| 成人看片网页| 亚洲xxxxx电影| 久久这里只有精品一区二区| 欧美日韩一区综合| 亚洲成人国产| www.av毛片| 丝袜国产日韩另类美女| 亚洲久久中文字幕| 国产91丝袜在线观看| 在线免费观看麻豆| 成人欧美一区二区三区白人| 久久久久久天堂| 欧美最猛黑人xxxxx猛交| 国产精品无码免费播放| 亚洲精品久久久久久久久久久久久| 黄色网址在线播放| 粗暴蹂躏中文一区二区三区| 日本免费一区二区六区| 国产日韩av在线播放| 国产精品毛片视频| 亚洲国产精品一区二区第一页 | 综合伊思人在钱三区| 一区不卡字幕| 国产亚洲综合精品| 伊人五月天婷婷| 久久色在线视频| 免费看一级一片| 欧美四级电影在线观看| 男人天堂av网| 日韩在线观看免费| 国产高清不卡| 动漫美女被爆操久久久| 久久久影院免费| 国产日产欧美视频| 国产成人高清在线| 成人做爰视频网站| 色素色在线综合| 少妇精品高潮欲妇又嫩中文字幕| 中文字幕精品在线视频| 精精国产xxxx视频在线野外| 91牛牛免费视频| 第一sis亚洲原创| 人妻熟女一二三区夜夜爱| 国产一区二区日韩精品| 永久免费毛片在线观看| 精品久久久久久国产91| 午夜精品久久久久久久99老熟妇| 一二美女精品欧洲| 午夜裸体女人视频网站在线观看| 97超碰人人看人人| 91精品国产91久久久久久黑人| 欧美日韩怡红院| xf在线a精品一区二区视频网站| 国产亚洲精品久久久久久无几年桃| 欧美日韩亚洲综合在线 欧美亚洲特黄一级| 亚洲欧洲精品视频| 午夜精品福利电影| 成人香蕉社区| 黄色一级片国产| 国产精品一二三区在线| 午夜激情福利网| 欧美日韩你懂的| 成人影院免费观看| 国产91九色视频| 亚洲精品小区久久久久久| 青青青青草视频| 成人av动漫在线| 国产一级性生活| 精品久久国产字幕高潮| 少女频道在线观看高清| 91嫩草在线| 狠狠色丁香久久综合频道| 亚洲AV无码久久精品国产一区| 亚洲色图.com| 国内精品久久久久久久久久久| 久久综合伊人77777蜜臀| 成人精品在线| 丰满人妻一区二区三区53号| 国产精品99久久久久久宅男| 私库av在线播放| 欧美成人精品高清在线播放| 精精国产xxxx视频在线中文版 | 日本精品久久久久久久| 天海翼精品一区二区三区| 中文字幕日本最新乱码视频| 91美女片黄在线观看91美女| 国产一级免费视频| 尤物九九久久国产精品的分类| 欧美一级网址| 国产女主播av| 不卡的看片网站| 五月天激情四射| 中文字幕不卡av| 高清久久精品| 男女激情免费视频| 26uuu精品一区二区在线观看| 手机av免费观看| 久久精品国产99国产精品澳门| 日本高清精品| 欧美性大战久久久久xxx| 久久精品一区八戒影视| 中文字幕一级片| 欧美刺激性大交免费视频| 丁香五月缴情综合网| 国产精品免费成人| 亚洲欧美偷拍卡通变态| 神马久久久久久久久久| 国产精品白嫩初高中害羞小美女 | 欧美成人一二三| 欧美亚洲色图校园春色| 91日韩视频在线观看| 亚洲男人的天堂在线观看| 人妻无码中文字幕| 国产精品久久久久久久久免费看| 一区二区三区在线| 日韩av一二区| 69久久夜色精品国产69蝌蚪网| 免费电影视频在线看| 日本欧洲国产一区二区| 国产成人自拍高清视频在线免费播放| 99热在线观看免费精品| 丝袜美腿精品国产二区| 久久久久久毛片免费看 | 国产精品人妖ts系列视频| www.色视频| 国产精品美女久久| 影音先锋久久精品| 精品少妇一区二区三区密爱| 亚洲精品xxxx| 精品一区二区三区中文字幕视频| av动漫免费看| 亚洲一区二区三区四区在线| 77导航福利在线|