日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

為什么 Bun 可能對 Node 降維打擊?

來源: 責編: 時間:2024-02-01 12:48:09 287觀看
導讀大家好,這里是大家的林語冰。持續關注,堅持閱讀,每天一次,進步一點。近年來,前端社區涌現了一大坨運行時,包括但不限于:穩如老狗的 Node.js不破不立的 Deno大破大立的 Bun圖片去年,“Bun 之父”J.S. 官宣 Bun 1.0 新鮮出爐,今

大家好,這里是大家的林語冰。持續關注,堅持閱讀,每天一次,進步一點。goL28資訊網——每日最新資訊28at.com

近年來,前端社區涌現了一大坨運行時,包括但不限于:goL28資訊網——每日最新資訊28at.com

  • 穩如老狗的 Node.js
  • 不破不立的 Deno
  • 大破大立的 Bun

圖片圖片goL28資訊網——每日最新資訊28at.com

去年,“Bun 之父”J.S. 官宣 Bun 1.0 新鮮出爐,今年 Bun 團隊更是野心勃起,企圖用 Bun 打敗 Node。說是這樣說,氣勢不能輸,但私以為 Node 重度用戶的“路徑依賴”沒那么容易克服,大多數用戶(包括本人)大概率還是會在 Node 的舒適圈中“圈地自萌”。goL28資訊網——每日最新資訊28at.com

話雖如此,還是有一大坨道友先質疑、再質疑:goL28資訊網——每日最新資訊28at.com

  • 為什么大家都拿 Bun 和人氣爆棚的 Node 相提并論?
  • Bun 只是曇花一現之過眼云煙,還是可能終結 Node 的長期壟斷?

Bun 到底是什么鬼物?

Bun 直男翻譯為“包子”,或者“小圓甜蛋糕”,我有一個大膽的想法:Bun 的含義大概是想成為像 Node 一樣前端愛好者生活必需的“面包”,抑或是企圖在運行時市場瓜分一塊“蛋糕”。goL28資訊網——每日最新資訊28at.com

說巧不巧,初露頭角的 Bun 的頭像就是一大坨名副其實的包子,而成名多年的 Node 的吉祥物還在路上。goL28資訊網——每日最新資訊28at.com

圖片圖片goL28資訊網——每日最新資訊28at.com

根據 Bun 的官方公關,Bun 是一款可以和 JS/TS “夢幻聯動”的 all-in-one toolkit(一體化工具人)。換而言之,Bun 是妥妥的“斜杠青年” —— Bun 是運行時/包管理器/打包器/測試運行器。Bun 主打的就是一條龍服務 —— Node 有的我都有,Node 原生沒有的,不好意思我也有。goL28資訊網——每日最新資訊28at.com

Bun 的產品定位

Node 于 2009 橫空出世,這位“00后”如今可謂人氣爆棚,以至于某些道友指貓為狗 —— Node 是一門“編程語言”,這大約就是“人怕出名貓怕胖”。goL28資訊網——每日最新資訊28at.com

圖片圖片goL28資訊網——每日最新資訊28at.com

雖然但是,像 React 和 Angular 等前端技術一樣,隨著代碼屎山與日俱增,Node 的熵值也突破天際。goL28資訊網——每日最新資訊28at.com

舉個栗子,臭名昭著的“npm 依賴地獄”,愛因斯坦看完都要重新審視相對論了。goL28資訊網——每日最新資訊28at.com

圖片圖片goL28資訊網——每日最新資訊28at.com

再舉個栗子,Node 默認的包管理工具 npm 差強人意,所以 Node 社區不得不“反復造輪子”,導致像我一樣的“選擇困難癥晚期患者”初學 Node 時一臉懵逼:goL28資訊網——每日最新資訊28at.com

  • npm......
  • yarn?
  • pnpm~
  • 都市傳說:Node 團隊成員又雙叒叕另起爐灶,搞了一個全新的 npm 備胎,日后再說

“Node 之父” R.D. 后知后覺,等到它想優化 Node 的時候,Node 已經形成“劣幣驅逐良幣”的不可抗力,就像強人工智能吊打卷毛狒狒一樣暴走失控了。于是乎,“Node 之父”為了避免在 Node 中一邊開飛機一邊修飛機,果斷切換賽道,化身成為“Deno 之父”。goL28資訊網——每日最新資訊28at.com

作為“Node 之父”,R.D. 曾在公眾場合中毫無保留地公開處刑 Node 的“七大罪”,可謂罄竹難書、“父呲子笑”。反觀作為“Deno 之父”,R.D. 確實是模范爸爸。goL28資訊網——每日最新資訊28at.com

Deno 是 JS/TS 的安全運行時,原生支持 TS,無需手動配置。與 Node 不同,Node 的腳本默認具有廣泛的權限,Deno 則認為“腳本千萬條,安全第一條”,要求開發者顯式賦予敏感操作的權限,比如文件系統的讀寫。這自然增加了我們的學習成本和心智負擔,但 Deno 的魯棒性確實對 Node “降維打擊”。goL28資訊網——每日最新資訊28at.com

Bun 的初衷大抵也是如此,為了對 Node 基建“降維打擊”,Bun 被設計為比 Node 更絲滑、更精簡的現代化競品,而不僅僅是備胎。goL28資訊網——每日最新資訊28at.com

運行時測評

Node 主要使用 C艸 編寫,而 Bun 則使用 Zig (低階通用編程語言)編寫。本質上而言,Bun 是一個 JS/TS 的運行時。所謂運行時,顧名思義就是一個提供使用和運行程序的環境。goL28資訊網——每日最新資訊28at.com

運行時的關鍵組件之一是 JS 引擎,用于將 JS 代碼轉換為機器碼。Node 使用為 Chrome 瀏覽器提供支持的谷歌 V8 引擎,而 Bun 則使用 JSC(JavaScriptCore),此乃蘋果為 Safari 瀏覽器開發的開源 JS 引擎。goL28資訊網——每日最新資訊28at.com

V8 和 JSC 各有千秋,兩者使用了不同的架構和優化策略。JSC 優先考慮更快的啟動時間和更少的內存占用,短板在于更慢的執行時間。V8 優先考慮更快的執行和更多的運行時優化,短板在于更多的內存開銷。goL28資訊網——每日最新資訊28at.com

圖片圖片goL28資訊網——每日最新資訊28at.com

如你所見,Bun 的運行性能比 Node 快 4.81 倍。goL28資訊網——每日最新資訊28at.com

雖然 Node 是一個給力的 JS 運行時,但 Node 原生并不支持 TS。要在 Node 中跑 TS,需要訴諸第三方包。一種常見方案是,使用諸如 tsx/esbuild/babel 等依賴先將 TS 轉換為 JS,然后按需“優雅降級”為低版兼容性代碼。goL28資訊網——每日最新資訊28at.com

相比之下,Bun 內置了 TS 轉譯器,原生支持 .js/.ts/.jsx/.tsx 文件,無需安裝任何外部依賴。Bun 的內置轉譯器將各種亂七八糟的文件無縫轉換為平平無奇的 JS,無需額外步驟就能直接跑 TS。goL28資訊網——每日最新資訊28at.com

尤其在跑 TS 文件時,這種性能跑分會被放大,因為 Node 在運行前需要足夠的前戲 —— 一個多余的轉譯步驟。goL28資訊網——每日最新資訊28at.com

圖片圖片goL28資訊網——每日最新資訊28at.com

如你所見,Bun 跑 TS 時對 Node 生態“降維打擊”。goL28資訊網——每日最新資訊28at.com

Node 生態的另一個“阿喀琉斯之踵”在于模塊系統,模塊系統允許我們將代碼組織成可復用片段,目前人氣爆棚的兩個模塊系統是:goL28資訊網——每日最新資訊28at.com

  • CJS(CommonJS)
  • ESM(ES 模塊)

CJS 源自 Node,使用 require/module.exports 處理同步模塊,適合服務端操作。ES6 強勢引入 ESM 則采用 import/export 語法,提供靜態異步模塊,且可以針對 Vite 等現代構建工具優化,比如 tree-shaking(樹搖優化)。goL28資訊網——每日最新資訊28at.com

Node 原生支持 CJS,漸進實驗性支持 ESM。作為前端愛好者,一般初戀都是瀏覽器,后來和 Node 貼貼可能會很折磨,因為 CJS 和 ESM 再次讓我們選擇困難,最終導致決策癱瘓。goL28資訊網——每日最新資訊28at.com

在 Node 中使用 ESM 常見方案,包括但不限于:goL28資訊網——每日最新資訊28at.com

  • 在 package.json 中添加 "type": "module" 屬性
  • 使用 .mjs 擴展名取代 js 擴展名

Node 從 CJS 過渡到 ESM 走了很長的路,花了整整 5 年才在沒有實驗標志的情況下支持 ESM。不管是學習成本、開發體驗還是心智模型,模塊的兼容性始終是壓在 Node 心頭的一只胖橘。goL28資訊網——每日最新資訊28at.com

Bun 原生兼容 CJS/ESM,無需任何配置。Bun 的亮點功能是,它能夠在同一文件中同時支持 import/require(),類似于舊版 TS 的奇葩模塊語法,這在 Node 中是不可能事件:goL28資訊網——每日最新資訊28at.com

// Bun 中的混合模塊語法import vue from 'vue'const react = require('react')

雖然但是,私以為混合模塊可能是“設計失誤”,或者說“在飆歷史倒車”。從兼容性看,混合模塊在技術上是一個自然延伸的功能,但對于用戶而言,拋開學習成本和心智模型不談,混合模塊明顯增加了維護的熵值。我的個人心證是,建議大家不管在瀏覽器還是 Node 中,都盡量擁抱標準的 ESM。goL28資訊網——每日最新資訊28at.com

舉個栗子,Vite 是一個人氣爆棚的現代化工具,Vite 在開發環境擁抱標準的 ESM,在生產構建則按需轉譯模塊語法。盡管如此,還是存在一大坨 corner case(極端用例),這是 Vite 使用 rollup 構建時無法完美兼容的,尤大一度在 ViteConf 國際大會上瘋狂吐槽。老粉都知道,去年我共享的 Vite 前沿資訊有提及,Vite 已經直接棄用 CJS。猶豫就會敗北,私以為 ESM 只會比 CJS 越來越流行,這就是標準的魔力,就像專一的鏟屎官更能被貓貓青睞。goL28資訊網——每日最新資訊28at.com

總而言之,個人建議在使用 Bun 時,盡量避免使用混合模塊語法,因為一點也不符合人體工程學。goL28資訊網——每日最新資訊28at.com

Vite 等現代化工具的福利之一是熱重載,在代碼更改時可以自動刷新或重新加載 App,無需完全重啟,真正做到一邊開飛機、一邊修飛機,提高開發效率和開發體驗。goL28資訊網——每日最新資訊28at.com

Node 以前原生不支持熱重載,常見方案包括但不限于:goL28資訊網——每日最新資訊28at.com

  • 安裝 nodemon 等第三方包來硬重啟
  • Node 18+ 實驗性支持 --watch flag

雖然但是,nodemon 可能會中斷,比如斷開 HTTP 和 WebSocket 連接,而 --watch 還處于實驗階段。goL28資訊網——每日最新資訊28at.com

Bun 使用 --hot flag 原生支持熱重載,與需要重啟整個進程的 Node 不同,Bun 會就地重載代碼,而不會終止舊進程。這可以確保 HTTP 和 WebSocket 的連接不間斷,并保留 App 狀態,提供更絲滑的開發體驗。goL28資訊網——每日最新資訊28at.com

除了 JS 的標準(比如模塊),對瀏覽器標準的 Web API(比如 WebSocket),Node 的支持也不一致。goL28資訊網——每日最新資訊28at.com

舉個栗子,Node 的早期版本不支持瀏覽器中常用的 fetch API,我們必須依賴 node-fetch 等第三方模塊來“曲線救國”。雖然但是,Node 18+ 開始實驗性支持 fetch,目測未來可期。goL28資訊網——每日最新資訊28at.com

Bun 則內置支持這些 Web 標準 API,我們可以直接使用穩定的 fetch/Request/Response 等 API,無需任何額外依賴。由于這些 API 是 Bun 的原生實現,所以其性能比第三方備胎更快、更可靠。goL28資訊網——每日最新資訊28at.com

使用 Web 標準 API 設置 HTTP 服務器或 WebSocket 服務器,它每秒處理的請求比 Node 多 4 倍,處理的 WebSocket 消息比 Node 的 ws 包多 5 倍。goL28資訊網——每日最新資訊28at.com

簡而言之,Node 生態的大部分功能需要我們手動安裝第三方包來“曲線救國”,而 Bun 不僅原生支持,而且青出于藍。goL28資訊網——每日最新資訊28at.com

包管理器

Bun 本身還是一個功能強大的包管理器。goL28資訊網——每日最新資訊28at.com

舉一反一,CRUD 相關命令不能說是毫無關系,只能說是一毛一樣:goL28資訊網——每日最新資訊28at.com

Bun
goL28資訊網——每日最新資訊28at.com

npm
goL28資訊網——每日最新資訊28at.com

目的
goL28資訊網——每日最新資訊28at.com

bun installgoL28資訊網——每日最新資訊28at.com

npm installgoL28資訊網——每日最新資訊28at.com

安裝 package.json 的所有依賴goL28資訊網——每日最新資訊28at.com

bun add <package>goL28資訊網——每日最新資訊28at.com

npm install <package>goL28資訊網——每日最新資訊28at.com

將新依賴添加到項目中
goL28資訊網——每日最新資訊28at.com

bun add <package> --devgoL28資訊網——每日最新資訊28at.com

npm install <package> --devgoL28資訊網——每日最新資訊28at.com

添加新的開發依賴
goL28資訊網——每日最新資訊28at.com

bun remove <package>goL28資訊網——每日最新資訊28at.com

npm uninstall <package>goL28資訊網——每日最新資訊28at.com

從項目中刪除依賴
goL28資訊網——每日最新資訊28at.com

bun update <package>goL28資訊網——每日最新資訊28at.com

npm update <package>goL28資訊網——每日最新資訊28at.com

將指定包更新到最新版本
goL28資訊網——每日最新資訊28at.com

bun run <script>goL28資訊網——每日最新資訊28at.com

npm run <script>goL28資訊網——每日最新資訊28at.com

從 package.json 執行指定腳本goL28資訊網——每日最新資訊28at.com

Bun 的命令似曾相識,沒有壓力山大的學習成本,只有無縫銜接的開發體驗。而且 Bun 采用每個操作系統可用的最快系統調用,確保最佳性能,擁有比 npm 快幾個數量級的安裝速度,充分利用全局模塊緩存,消除從 npm 注冊表的冗余下載,從此告別“npm 黑洞”,愛因斯坦看完不用再重新審視相對論了。goL28資訊網——每日最新資訊28at.com

本人現在使用的是 pnpm,但還是欲求不滿,但是 Bun 可以真正讓我們幸福感拉滿:goL28資訊網——每日最新資訊28at.com

圖片圖片goL28資訊網——每日最新資訊28at.com

天下武功,唯快不破。如你所見,Bun 啪的一下很快啊就下載完了。goL28資訊網——每日最新資訊28at.com

打包器

所謂打包,指的是是獲取多個 JS 文件,并將其合并到一個或多個優化包中的過程。此過程還可能涉及轉換,比如將 TS 轉換為 JS,或者壓縮代碼減小體積。Node 的打包通常由第三方工具而不是 Node 本身處理。Node 生態目前有一大坨人氣爆棚的打包器,包括但不限于goL28資訊網——每日最新資訊28at.com

  • Webpack
  • Rollup
  • Vite

它們都提供了代碼分割、樹搖優化和熱模塊替換等功能。goL28資訊網——每日最新資訊28at.com

Bun 本身也是一個打包器。它旨在打包各種平臺的 JS/TS 代碼,包括瀏覽器中的前端 App(Vue/React App)和 Node。Bun 比 esbuild 快 1.75 倍,并且對 Webpack 等其他打包器“降維打擊”。goL28資訊網——每日最新資訊28at.com

圖片圖片goL28資訊網——每日最新資訊28at.com

Bun 的一個天秀功能是 JS 宏,這允許在打包期間執行 JS 函數,并將結果直接內聯到最終打包中。goL28資訊網——每日最新資訊28at.com

舉個栗子,在打包過程中利用 JS 宏來獲取貓貓的名字,該宏不是運行時的 API 調用,而是在打包時獲取數據,將結果直接內聯到最終產物中:goL28資訊網——每日最新資訊28at.com

// cats.tsexport async function getCat() {  const response = await fetch('https://space.bilibili.com/3493137875994964?spm_id_from=333.1245.0.0')  const cat = await response.json()  return cat.name}// index.ts// Bun 的 JS 宏import { getCat } from './cats.ts' with { type: 'macro' }const cat = await getCat()// build/index.js// 打包后直接內聯數據,比如貓貓的名字var cat = await '人貓神話'console.log(cat)

測試運行器

雖然 Node 一般依賴 Vitest/Jest 來滿足 TDD(測試驅動開發),但 Bun 內置了測試運行器,它被設計為完全兼容 Jest。Jest 是一個以“expect”風格 API 聞名的測試框架,這種兼容性確保熟悉 Vitest/Jest 愛好者可以無縫銜接到 Bun,沒有任何陡峭的學習曲線。goL28資訊網——每日最新資訊28at.com

Bun 的測試運行器不僅涉及兼容性;還涉及速度。舉個栗子,Bun 中的 expect().toEqual() 比 Vitest 快 10 倍。goL28資訊網——每日最新資訊28at.com

高能總結

Bun 和 Node 目前測評跑分的異同點,包括但不限于:goL28資訊網——每日最新資訊28at.com

對照實驗
goL28資訊網——每日最新資訊28at.com

Node
goL28資訊網——每日最新資訊28at.com

Bun
goL28資訊網——每日最新資訊28at.com

編程語言
goL28資訊網——每日最新資訊28at.com

C艸
goL28資訊網——每日最新資訊28at.com

Zig
goL28資訊網——每日最新資訊28at.com

JS 引擎
goL28資訊網——每日最新資訊28at.com

谷歌 Chrome V8
goL28資訊網——每日最新資訊28at.com

蘋果 Safari JSC
goL28資訊網——每日最新資訊28at.com

TS 轉譯
goL28資訊網——每日最新資訊28at.com

第三方包
goL28資訊網——每日最新資訊28at.com

原生支持
goL28資訊網——每日最新資訊28at.com

模塊系統
goL28資訊網——每日最新資訊28at.com

從 CJS 過渡到 ESM
goL28資訊網——每日最新資訊28at.com

原生支持混合模塊
goL28資訊網——每日最新資訊28at.com

fetch
goL28資訊網——每日最新資訊28at.com

第三方包/實驗性支持
goL28資訊網——每日最新資訊28at.com

原生支持
goL28資訊網——每日最新資訊28at.com

熱重載
goL28資訊網——每日最新資訊28at.com

第三方包/實驗性標志
goL28資訊網——每日最新資訊28at.com

原生支持
goL28資訊網——每日最新資訊28at.com

包管理器
goL28資訊網——每日最新資訊28at.com

npm/pnpm
goL28資訊網——每日最新資訊28at.com

原生支持
goL28資訊網——每日最新資訊28at.com

打包工具
goL28資訊網——每日最新資訊28at.com

Vite
goL28資訊網——每日最新資訊28at.com

原生支持
goL28資訊網——每日最新資訊28at.com

TDD
goL28資訊網——每日最新資訊28at.com

Vitest
goL28資訊網——每日最新資訊28at.com

原生支持
goL28資訊網——每日最新資訊28at.com

Bun 目前的痛點(個人向),包括但不限于:goL28資訊網——每日最新資訊28at.com

  • Windows 支持不盡如人意,不如 Linux/MacOS
  • Node 生態兼容性差強人意,暗中觀察中
  • 不像 Vite 完美擁抱 ESM,混合模塊疑似“飆歷史倒車”
  • Zig 可能是世界上最好的語言,但開源不友好

Node 憑借其成熟的生態,一直在前端運行時穩坐頭等艙,強如 Deno 也難以撼動其霸主地位。雖然但是,Bun 正以一位不容小覷的挑戰者身份嶄露頭角。雖然 Bun 還未成年,但它名噪一時毋庸置疑,目測是一只潛力股。目前,Bun 針對 MacOS 和 Linux 進行了優化,而 Windows 的支持正在進行中。不幸的是,本人日常開發使用的偏偏是 Windows 系統......goL28資訊網——每日最新資訊28at.com

本文鏈接:http://m.www897cc.com/showinfo-26-70414-0.html為什么 Bun 可能對 Node 降維打擊?

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 轉轉基于MQ的分布式重試框架設計方案

下一篇: 大規模敏捷測試怎么做(集成篇)

標簽:
  • 熱門焦點
Top 日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不
亚洲一级片在线观看| 在线免费精品视频| 欧美日韩在线一区二区三区| 欧美日韩爆操| 欧美日韩亚洲高清| 国产精品视频午夜| 国内综合精品午夜久久资源| 亚洲高清成人| 亚洲欧洲视频| 亚洲女同性videos| 久久在线精品| 欧美色图五月天| 国产一区二区精品丝袜| 亚洲国产精品视频| 亚洲视频观看| 久久久久这里只有精品| 欧美大片一区二区三区| 欧美调教vk| 国内精品免费在线观看| 亚洲精品日韩在线观看| 亚洲免费视频一区二区| 久久婷婷综合激情| 欧美三级精品| 激情综合网激情| 一级成人国产| 久久亚洲国产精品一区二区| 欧美视频在线观看免费网址| 精品成人一区| 亚洲一区国产精品| 欧美xart系列高清| 国产精品夜色7777狼人| 亚洲激情视频在线| 午夜精品久久久久| 欧美护士18xxxxhd| 国产日韩欧美a| 日韩午夜电影在线观看| 久久久久国产精品麻豆ai换脸| 欧美欧美全黄| 激情小说另类小说亚洲欧美| 一区二区三区偷拍| 久久嫩草精品久久久精品| 欧美色偷偷大香| 在线免费精品视频| 亚洲尤物精选| 欧美激情网友自拍| 国内久久精品| 亚洲综合电影一区二区三区| 欧美高清在线播放| 国产亚洲精品高潮| 亚洲视频碰碰| 欧美激情精品久久久久久蜜臀| 国产无一区二区| 在线午夜精品| 欧美sm视频| 国精品一区二区| 性欧美暴力猛交69hd| 欧美色视频在线| 99在线精品观看| 欧美黄色片免费观看| 在线看国产日韩| 久久精视频免费在线久久完整在线看| 国产精品视频xxx| 中文日韩在线| 欧美日韩免费在线| 亚洲美女毛片| 欧美激情亚洲精品| 亚洲欧洲午夜| 欧美成人中文字幕| 亚洲高清视频一区二区| 久久久久久9| 韩国女主播一区二区三区| 欧美一区二区三区四区在线| 国产精品网站视频| 一区二区久久久久| 欧美日韩一区二| 99国产成+人+综合+亚洲欧美| 欧美国产先锋| 日韩视频在线一区| 欧美日韩成人在线| 亚洲精品一级| 欧美国产一区二区三区激情无套| 伊人伊人伊人久久| 日韩视频在线一区| 欧美巨乳波霸| 亚洲日本视频| 欧美xx69| 亚洲区免费影片| 欧美精品久久天天躁| 亚洲国产视频一区二区| 久久婷婷麻豆| 激情综合久久| 久久久久99精品国产片| 国产三级欧美三级日产三级99| 99re6这里只有精品| 欧美视频二区| 在线亚洲欧美视频| 欧美日韩视频在线一区二区| 亚洲最新合集| 欧美日本一道本| 亚洲精品婷婷| 欧美精品日韩一区| 91久久精品国产91久久性色tv | 99在线精品视频| 欧美精品在线一区二区| 亚洲乱码国产乱码精品精可以看| 欧美国产精品日韩| 日韩视频一区二区三区在线播放 | 欧美在线1区| 在线观看精品视频| 六月天综合网| 亚洲激情在线观看| 欧美激情中文字幕一区二区| 99av国产精品欲麻豆| 欧美日韩一区在线观看| 在线一区观看| 欧美午夜精品电影| 亚洲欧美视频在线观看| 国产日韩成人精品| 久久精品免费播放| 激情综合五月天| 欧美二区在线| 中文精品一区二区三区 | 日韩视频不卡| 国产精品久久久久久久久免费| 午夜天堂精品久久久久 | 亚洲精品日韩激情在线电影| 国产精品久久久久7777婷婷| 欧美一区二区三区四区在线观看地址| 韩国一区二区三区在线观看| 久久这里有精品视频| 91久久精品美女| 欧美三级在线| 亚洲欧美在线aaa| 亚洲黄色在线看| 欧美性理论片在线观看片免费| 午夜精品福利在线| 伊人久久成人| 欧美日韩午夜| 欧美中文字幕不卡| 狠狠色丁香久久婷婷综合_中| 欧美日韩精品在线视频| 午夜日韩在线| 亚洲国产精品欧美一二99| 国产精品白丝av嫩草影院| 久久精品毛片| 亚洲免费激情| 国内成人自拍视频| 欧美精品激情在线观看| 午夜精品电影| 亚洲国产一区二区精品专区| 国产精品久久久久久久久免费 | 亚洲男女自偷自拍| 一区在线影院| 久久在线免费视频| 亚洲欧美经典视频| 亚洲第一福利视频| 欧美午夜女人视频在线| 久久精品视频免费观看| 日韩一区二区精品葵司在线| 国产亚洲精品高潮| 欧美日韩爆操| 久久久视频精品| 亚洲视频在线观看| 黄色精品一区二区| 国产精品magnet| 久久一二三国产| 亚洲美女色禁图| 亚洲大片av| 国产欧美欧洲在线观看| 欧美韩日一区二区| 久久久亚洲综合| 亚洲午夜精品久久| 亚洲国产福利在线| 国产模特精品视频久久久久| 欧美激情久久久| 欧美影院一区| 一本久道久久久| 在线观看中文字幕不卡| 国产精品欧美日韩| 欧美激情一区二区三区不卡| 久久精品国产清自在天天线| 亚洲一区www| 日韩视频免费看| **网站欧美大片在线观看| 国产精品少妇自拍| 欧美日韩国产经典色站一区二区三区| 久久久久久**毛片大全| 亚洲无限乱码一二三四麻| 亚洲国产一区二区三区在线播| 国产网站欧美日韩免费精品在线观看| 欧美日韩午夜剧场| 欧美激情综合在线| 久久久噜噜噜久久久| 一区二区三区国产精华| 99国产一区| 亚洲欧洲日韩在线| 亚洲第一网站免费视频| 国产一区自拍视频| 国产精品无码永久免费888| 欧美日韩精品欧美日韩精品| 欧美黄色成人网| 免费成人高清| 久热精品视频在线免费观看| 久久国产欧美|