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

我終于成功登上了JS 框架榜單,并且僅落后于 React 4 名!

開發(fā) 前端
我們?nèi)绾卧?Strve 項(xiàng)目中使用JSX語法呢?我們?cè)赟trve項(xiàng)目構(gòu)建工具 CreateStrveApp 預(yù)置了模版,你可以選擇 Strve-jsx 或者 Strve-jsx-Apps 模版即可。

前言

如期而至,我獨(dú)立開發(fā)的 JavaScript 框架 Strve.js 迎來了一個(gè)大版本5.6.2。此次版本距離上次大版本發(fā)布已經(jīng)接近半年之多,為什么這么長時(shí)間沒有發(fā)布新的大版本呢?主要是研究 Strve.js 如何支持單文件組件,使代碼智能提示、代碼格式化方面更加友好。之前也發(fā)布了 Strve SFC,但是由于其語法規(guī)則的繁瑣以及是在運(yùn)行時(shí)編譯的種種原因,我果斷放棄了這個(gè)方案的繼續(xù)研究。而這次的版本5.6.2成功解決了代碼智能提示、代碼格式化方面友好的問題,另外還增加了很多錦上添花的特性,這些都?xì)w功于我們這次版本成功支持JSX語法。熟悉React的朋友知道,JSX語法非常靈活。 而 Strve.js 一大特性也就是靈活操作代碼塊,這里的代碼塊我們可以理解成函數(shù),而JSX語法在一定場(chǎng)景下也恰恰滿足了我們這種需求。

那么,我們?nèi)绾卧?Strve 項(xiàng)目中使用JSX語法呢?我們?cè)赟trve項(xiàng)目構(gòu)建工具 CreateStrveApp 預(yù)置了模版,你可以選擇 strve-jsx 或者 strve-jsx-apps 模版即可。我們使用 CreateStrveApp 搭建完 Strve 項(xiàng)目會(huì)發(fā)現(xiàn),同時(shí)安裝了babelPluginStrve、babelPluginJsxToStrve,這是因?yàn)槲覀冃枰褂?babelPluginJsxToStrve 將 JSX 轉(zhuǎn)換為標(biāo)簽?zāi)0妫笤偈褂胋abelPluginStrve 將標(biāo)簽?zāi)0孓D(zhuǎn)換為 Virtual DOM,進(jìn)而實(shí)現(xiàn)差異化更新視圖。

嘗試

我既然發(fā)布出了一個(gè)大版本,并且個(gè)人還算比較滿意。那么下一步我如何推廣它呢?畢竟毛遂自薦有時(shí)候還是非常有意義的。所以,我打算通過js-framework-benchmark 這個(gè)項(xiàng)目評(píng)估下性能。

js-framework-benchmark 是什么?我們這里就簡單介紹下 js-framework-benchmark,它是一個(gè)用于比較 JavaScript 框架性能的項(xiàng)目。它旨在通過執(zhí)行一系列基準(zhǔn)測(cè)試來評(píng)估不同框架在各種場(chǎng)景下的性能表現(xiàn)。這些基準(zhǔn)測(cè)試包括渲染大量數(shù)據(jù)、更新數(shù)據(jù)、處理復(fù)雜的 UI 組件等。通過運(yùn)行這些基準(zhǔn)測(cè)試,可以比較不同框架在各種方面的性能優(yōu)劣,并幫助開發(fā)人員選擇最適合其需求的框架。js-framework-benchmark 項(xiàng)目提供了一個(gè)包含多個(gè)流行 JavaScript 框架的基準(zhǔn)測(cè)試套件。這些框架包括 Angular、React、Vue.js、Ember.js 等。每個(gè)框架都會(huì)在相同的測(cè)試場(chǎng)景下運(yùn)行,然后記錄下執(zhí)行時(shí)間和內(nèi)存使用情況等性能指標(biāo)。通過比較這些指標(biāo),可以得出不同框架的性能差異。這個(gè)項(xiàng)目的目標(biāo)是幫助開發(fā)人員了解不同 JavaScript 框架的性能特點(diǎn),以便在選擇框架時(shí)能夠做出更加明智的決策。同時(shí),它也可以促進(jìn)框架開發(fā)者之間的競(jìng)爭(zhēng),推動(dòng)框架的不斷改進(jìn)和優(yōu)化。

那么,我們就抱著試試的心態(tài)去運(yùn)行下這個(gè)項(xiàng)目。

測(cè)試

我們進(jìn)入js-framework-benchmark Github主頁,然后 clone 下這個(gè)項(xiàng)目。

git clone https://github.com/krausest/js-framework-benchmark.git

然后,我們 clone 到本地之后,打開 README.md 文件找到如何評(píng)估框架。大體瀏覽之后,我們得出的結(jié)論是:通過使用自己的框架完成js-framework-benchmark規(guī)定的練習(xí)項(xiàng)目。

那么,我們就照著其他框架已經(jīng)開發(fā)完成的示例進(jìn)行開發(fā)吧!在開發(fā)之前,我們必須要了解js-framework-benchmark 中有兩種模式。一種是keyed,另一種是non-keyed。在 js-framework-benchmark 中,"keyed" 模式是指通過給數(shù)據(jù)項(xiàng)分配一個(gè)唯一標(biāo)識(shí)符作為 "key" 屬性,從而實(shí)現(xiàn)數(shù)據(jù)項(xiàng)與 DOM 節(jié)點(diǎn)之間的一對(duì)一關(guān)系。當(dāng)數(shù)據(jù)發(fā)生變化時(shí),與之相關(guān)聯(lián)的 DOM 節(jié)點(diǎn)也會(huì)相應(yīng)更新。而 "non-keyed" 模式是指當(dāng)數(shù)據(jù)項(xiàng)發(fā)生變化時(shí),可能會(huì)修改之前與其他數(shù)據(jù)項(xiàng)關(guān)聯(lián)的 DOM 節(jié)點(diǎn)。因?yàn)?Strve 暫時(shí)沒有類似唯一標(biāo)識(shí)符這種特性,所以我們選擇non-keyed模式。

我們打開項(xiàng)目下/frameworks/non-keyed文件夾,找一個(gè)案例框架看一下它們開發(fā)的項(xiàng)目,我們選擇 Vue 吧! 我們根據(jù)它開發(fā)的樣例遷移到自己的框架中去。為了測(cè)試新版本,我們將使用JSX語法進(jìn)行開發(fā)。

import { createApp, setData } from "strve-js";
import { buildData } from "./data.js";

let selected = undefined;
let rows = [];

function setRows(update = rows.slice()) {
  setData(
    () => {
      rows = update;
    },
    {
      name: TbodyComponent,
    }
  );
}

function add() {
  const data = rows.concat(buildData(1000));
  setData(
    () => {
      rows = data;
    },
    {
      name: TbodyComponent,
    }
  );
}

function remove(id) {
  rows.splice(
    rows.findIndex((d) => d.id === id),
    1
  );
  setRows();
}

function select(id) {
  setData(
    () => {
      selected = +id;
    },
    {
      name: TbodyComponent,
    }
  );
}

function run() {
  setRows(buildData());
  selected = undefined;
}

function update() {
  for (let i = 0; i < rows.length; i += 10) {
    rows[i].label += " !!!";
  }
  setRows();
}

function runLots() {
  setRows(buildData(10000));
  selected = undefined;
}

function clear() {
  setRows([]);
  selected = undefined;
}

function swapRows() {
  if (rows.length > 998) {
    const d1 = rows[1];
    const d998 = rows[998];
    rows[1] = d998;
    rows[998] = d1;
    setRows();
  }
}

function TbodyComponent() {
  return (
    <tbody $key>
      {rows.map((item) => (
        <tr
          class={item.id === selected ? "danger" : ""}
          data-label={item.label}
          $key
        >
          <td class="col-md-1" $key>
            {item.id}
          </td>
          <td class="col-md-4">
            <a onClick={() => select(item.id)} $key>
              {item.label}
            </a>
          </td>
          <td class="col-md-1">
            <a onClick={() => remove(item.id)} $key>
              <span
                class="glyphicon glyphicon-remove"
                aria-hidden="true"
              ></span>
            </a>
          </td>
          <td class="col-md-6"></td>
        </tr>
      ))}
    </tbody>
  );
}

function MainBody() {
  return (
    <>
      <div class="jumbotron">
        <div class="row">
          <div class="col-md-6">
            <h1>Strve-non-keyed</h1>
          </div>
          <div class="col-md-6">
            <div class="row">
              <div class="col-sm-6 smallpad">
                <button
                  type="button"
                  class="btn btn-primary btn-block"
                  id="run"
                  onClick={run}
                >
                  Create 1,000 rows
                </button>
              </div>
              <div class="col-sm-6 smallpad">
                <button
                  type="button"
                  class="btn btn-primary btn-block"
                  id="runlots"
                  onClick={runLots}
                >
                  Create 10,000 rows
                </button>
              </div>
              <div class="col-sm-6 smallpad">
                <button
                  type="button"
                  class="btn btn-primary btn-block"
                  id="add"
                  onClick={add}
                >
                  Append 1,000 rows
                </button>
              </div>
              <div class="col-sm-6 smallpad">
                <button
                  type="button"
                  class="btn btn-primary btn-block"
                  id="update"
                  onClick={update}
                >
                  Update every 10th row
                </button>
              </div>
              <div class="col-sm-6 smallpad">
                <button
                  type="button"
                  class="btn btn-primary btn-block"
                  id="clear"
                  onClick={clear}
                >
                  Clear
                </button>
              </div>
              <div class="col-sm-6 smallpad">
                <button
                  type="button"
                  class="btn btn-primary btn-block"
                  id="swaprows"
                  onClick={swapRows}
                >
                  Swap Rows
                </button>
              </div>
            </div>
          </div>
        </div>
      </div>
      <table class="table table-hover table-striped test-data">
        <component $name={TbodyComponent.name}>{TbodyComponent()}</component>
      </table>
      <span
        class="preloadicon glyphicon glyphicon-remove"
        aria-hidden="true"
      ></span>
    </>
  );
}

createApp(() => MainBody()).mount("#main");

其實(shí),我們雖然使用了JSX語法,但是你會(huì)發(fā)現(xiàn)有很多特性并不與JSX語法真正相同,比如我們可以直接使用 class 去表示樣式類名屬性,而不能使用 className 表示。

評(píng)估案例項(xiàng)目開發(fā)完成了,我們下一步就要測(cè)試一下項(xiàng)目是否符合評(píng)估標(biāo)準(zhǔn)。

npm run bench non-keyed/strve


測(cè)試標(biāo)準(zhǔn)包括:

  • create rows:創(chuàng)建行,頁面加載后創(chuàng)建 1000 行的持續(xù)時(shí)間(無預(yù)熱)
  • replace all rows:替換所有行,替換表中所有 1000 行所需的時(shí)間(5 次預(yù)熱循環(huán))。該指標(biāo)最大的價(jià)值就是了解當(dāng)頁面上的大部分內(nèi)容發(fā)生變化時(shí)庫的執(zhí)行方式。
  • partial update:部分更新,對(duì)于具有 10000 行的表,每 10 行更新一次文本(進(jìn)行 5 次預(yù)熱循環(huán))。該指標(biāo)是動(dòng)畫性能和深層嵌套數(shù)據(jù)結(jié)構(gòu)開銷等方面的最佳指標(biāo)。
  • select row:選擇行,在單擊行時(shí)高亮顯示該行所需的時(shí)間(進(jìn)行 5 次預(yù)熱循環(huán))。
  • swap rows:交換行,在包含 1000 行的表中交換 2 行的時(shí)間(進(jìn)行 5 次預(yù)熱迭代)。
  • remove row:刪除行,在包含 1,000 行的表格上移除一行所需的時(shí)間(有 5 次預(yù)熱迭代),該指標(biāo)可能變化最少,因?yàn)樗葞斓娜魏伍_銷更多地測(cè)試瀏覽器布局變化(因?yàn)樗行邢蛏弦苿?dòng))。
  • create many rows:創(chuàng)建多行,創(chuàng)建 10000 行所需的時(shí)間(沒有預(yù)熱),該指標(biāo)更容易受到內(nèi)存開銷的影響,并且對(duì)于效率較低的庫來說,擴(kuò)展性會(huì)更差。
  • append rows to large table:追加行到大型表格,在包含 10000 行的表格上添加 1000 行所需的時(shí)間(沒有預(yù)熱)。
  • clear rows:清空行,清空包含 10000 行的表格所需的時(shí)間(沒有預(yù)熱),該指標(biāo)說明了庫清理代碼的成本,內(nèi)存使用對(duì)這個(gè)指標(biāo)的影響很大,因?yàn)闉g覽器需要更多的 GC。

最終,Strve 頂住了壓力,通過了測(cè)試。

圖片

看到了successful run之后,覺得特別開心!那種成就感是任何事物都難以代替的。

跑分

我們既然通過了測(cè)試,那么下一步我們將與前端兩大框架Vue、React進(jìn)行比較跑分,我們先在我自己本地環(huán)境上跑一下,看一下效果。

性能測(cè)試基準(zhǔn)分為三類:

  • 持續(xù)時(shí)間
  • 啟動(dòng)指標(biāo)
  • 內(nèi)存分配

持續(xù)時(shí)間

啟動(dòng)指標(biāo)

圖片

內(nèi)存分配

圖片圖片

總體而言,我感覺還不錯(cuò),畢竟跟兩個(gè)大哥在比較。到這里我還是覺得不夠,跟其他框架比比呢!

提交

只要框架通過了測(cè)試,并且按照提交PR的規(guī)定提交,是可以被選錄到 js-framework-benchmark 中去的。

好,那我們就去試試!

圖片

又一個(gè)比較有成就感的事!提交的PR被作者合并了!

成績單

我迫不及待的去榜單上看下我的排名,會(huì)不會(huì)墊底啊!

因?yàn)闉g覽器版本發(fā)布的時(shí)差問題,暫時(shí) Official results ( 官方結(jié)果 ) 還沒有發(fā)布最新結(jié)果,我們可以先來 Snapshot of the results ( 快照結(jié)果 ) 中查看。

我們打開下方網(wǎng)址就可以看到JS框架的最新榜單了。

https://krausest.github.io/js-framework-benchmark/current.html

我們?cè)诔掷m(xù)時(shí)間這個(gè)類別下從后往前找,目前63個(gè)框架我居然排名 50 名,并且大名鼎鼎的 React 排名45名。

圖片

我們先不激動(dòng),我們?cè)倏聪聠?dòng)指標(biāo)類別。Strve 平均分?jǐn)?shù)是1.04,我看了看好幾個(gè)框架分?jǐn)?shù)是1.04。Strve 可以排到前8名。

圖片

我們?cè)俜€(wěn)一下,繼續(xù)看內(nèi)存分配這個(gè)類別。Strve 平均分?jǐn)?shù)是1.40,Strve 可以排到前12名。

圖片

意義

js-framework-benchmark 的測(cè)試結(jié)果是相對(duì)準(zhǔn)確的,因?yàn)樗轻槍?duì)同樣的測(cè)試樣本和基準(zhǔn)測(cè)試情境進(jìn)行比較,可以提供框架之間的相對(duì)性能比較。然而,需要注意的是,這個(gè)測(cè)試結(jié)果也只是反映了測(cè)試條件下的性能表現(xiàn)。框架實(shí)際的性能可能還會(huì)受到很多方面的影響。 此外,js-framework-benchmark 測(cè)試結(jié)果也不應(yīng)該成為選擇框架的唯一指標(biāo)。在選擇框架時(shí),還需要考慮框架的生態(tài)、開發(fā)效率、易用性等多方面因素,而不僅僅是性能表現(xiàn)。

雖然,Strve 跟 React 比較是有點(diǎn)招黑,但是不妨這樣想,榜樣的力量是巨大的!只有站在巨人的肩膀上才能望得更遠(yuǎn)!

Strve 要走的路還有很長,入選JS框架榜單使我更加明確了方向。我覺得做自己喜歡做得事情,這樣才會(huì)有意義!

責(zé)任編輯:姜華 來源: 前端歷劫之路
相關(guān)推薦

2023-11-14 17:53:39

模型訓(xùn)練

2023-10-26 00:33:51

JS框架React

2013-05-13 09:52:52

Windows內(nèi)核Linux內(nèi)核

2013-03-21 11:27:03

Windows 8iOS

2023-12-08 08:10:34

谷歌GeminiOpenAI

2009-01-11 09:27:00

局域網(wǎng)功能共享

2015-04-29 17:50:25

那些來了就不想走的公司深信服

2009-02-11 08:32:48

微軟專利IBM

2020-06-01 14:02:25

Vue.js框架模板

2015-10-26 10:34:20

IaaS持續(xù)交付

2012-01-16 11:16:33

TD-LTE

2020-03-27 15:03:17

React JS框架開發(fā)平臺(tái)

2025-06-03 08:20:00

Feign微服務(wù)

2020-09-17 14:28:50

NumPyPython數(shù)據(jù)

2022-12-19 08:32:57

項(xiàng)目Feign框架

2025-09-18 09:31:01

2019-03-04 13:49:56

物聯(lián)網(wǎng)安全物聯(lián)網(wǎng)IOT

2022-12-26 10:34:33

2018-12-29 15:42:20

蘋果手機(jī)5G

2024-09-14 09:59:04

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

中国色在线观看另类| 日韩精品电影在线观看| 亚洲成人久久一区| 大陆极品少妇内射aaaaa| 成人不用播放器| 国产精一区二区三区| 欧美有码在线观看| 天天做夜夜爱爱爱| 伊人成综合网伊人222| 欧美久久婷婷综合色| 国产一区二区视频播放| 午夜伦理在线| 久久夜色精品国产欧美乱极品| 成人h视频在线观看播放| 99久在线精品99re8热| 911精品美国片911久久久| 亚洲欧美一区二区三区久久| 三级黄色片免费观看| 成人免费无遮挡| 亚洲制服丝袜一区| 亚洲第一综合| 美州a亚洲一视本频v色道| 国产黄色精品网站| 国产精品老女人视频| 欧美一级视频免费观看| 一级毛片免费高清中文字幕久久网| 亚洲精品久久久久久下一站| 超碰91在线播放| 91国拍精品国产粉嫩亚洲一区| 亚洲午夜成aⅴ人片| av不卡在线免费观看| 国产黄色在线播放| www欧美成人18+| 九色91国产| 丰满人妻熟女aⅴ一区| 狠狠久久亚洲欧美| 国产精品影片在线观看| 丰满人妻老熟妇伦人精品| 亚洲国产日韩在线| 久久久久久久久久久免费精品| 小泽玛利亚一区二区免费| 欧美日韩激情在线一区二区三区| 亚洲精品一区中文| 中文精品在线观看| 亚洲97av| 亚洲欧美激情一区| 精品人妻一区二区三区视频| 久久大胆人体视频| 亚洲第一偷拍网| av天堂一区二区| 91成人噜噜噜在线播放| 日韩三级视频在线看| 日本黄色www| 欧美一区在线观看视频| 日韩欧美资源站| 欧美丰满熟妇bbb久久久| 榴莲视频成人app| 欧美一卡2卡3卡4卡| 初高中福利视频网站| 网站一区二区| 亚洲国产成人精品一区二区| 小毛片在线观看| 亚洲aaa级| 一区二区中文字幕| 久久嫩草捆绑紧缚| 欧美高清日韩| 亚洲3p在线观看| 99精品人妻国产毛片| 日本欧美一区二区| 91久热免费在线视频| 99精品免费观看| 成人精品gif动图一区| 精品国产乱码久久久久久蜜柚| 亚洲av成人精品一区二区三区在线播放 | 久久嫩草精品久久久精品一| 日本不卡二区| 麻豆网站在线| 亚洲一区二区三区国产| 九九九九免费视频| 国产亚洲欧美日韩精品一区二区三区 | www.av一区视频| 国产日韩一级片| 国产91富婆露脸刺激对白| 国产三区精品| 成人精品一区二区三区免费 | 91视频 - 88av| 国产精品一二三产区| 色妹子一区二区| 中文字幕日韩久久| 亚洲黄页在线观看| 精品国内自产拍在线观看| 国产精品99re| 人人精品人人爱| 99三级在线| 三级视频在线| 亚洲精品免费播放| 大香煮伊手机一区| 91精品久久久久久综合五月天| 亚洲欧美国产精品专区久久| 69xx绿帽三人行| 久热精品在线| 粉嫩精品一区二区三区在线观看| 看电影就来5566av视频在线播放| 又紧又大又爽精品一区二区| 簧片在线免费看| 99re6热只有精品免费观看| 国产亚洲视频在线| 国产一级视频在线播放| 蜜臀国产一区二区三区在线播放| 国产乱子伦精品| 日本高清中文字幕在线| 欧美性猛交xxxx久久久| 波多野结衣电影免费观看| 欧美精选一区二区三区| 午夜精品理论片| 精品国产999久久久免费| 天堂地址在线www| 偷拍亚洲精品| 久久综合九色九九| 国产成人av免费| 97超碰欧美中文字幕| 正在播放一区| 国产私拍福利精品视频二区| 亚洲国产精品小视频| 国产成人无码aa精品一区| 日韩国产欧美视频| 久久另类ts人妖一区二区| 蜜臀av在线| 日韩女优制服丝袜电影| 国产传媒视频在线 | wwwxxx黄色片| 狼人精品一区二区三区在线 | 婷婷久久伊人| 成人开心激情| 国产视频欧美视频| 亚洲天堂视频网站| 91在线视频18| 国产91美女视频| 欧美人妖视频| 91精品国产免费久久久久久| 丰满岳乱妇国产精品一区| 一区二区免费在线| 先锋资源在线视频| 欧美理论在线| 91在线免费看片| av网址在线| 欧美大片日本大片免费观看| 欧美日韩免费做爰视频| 激情久久五月天| 久久久成人精品一区二区三区| 免费成人黄色网| 久久精品美女视频网站| 国产精品视频久久久久久| 亚洲欧美精品午睡沙发| 在线观看欧美一区二区| 亚洲五月婷婷| 国产综合 伊人色| 国产一二三在线| 亚洲欧美精品伊人久久| 夜夜躁日日躁狠狠久久av| 亚洲国产电影在线观看| 奇米视频7777| 好吊视频一区二区三区四区| 国产精选一区二区| 中文字幕在线视频久| 国产一区二区久久精品| 91超薄丝袜肉丝一区二区| 亚洲精品成人少妇| 91九色蝌蚪porny| 亚洲永久免费精品| 亚洲高清资源综合久久精品| 国产美女亚洲精品7777| 久久久中精品2020中文| 狠狠狠综合7777久夜色撩人| 欧美揉bbbbb揉bbbbb| 成人观看免费视频| 26uuu精品一区二区| 色婷婷成人在线| 欧美1区2区| 蜜桃av久久久亚洲精品| 亚洲男男av| 97久久精品人人澡人人爽缅北| 国产系列在线观看| 欧美一级片在线| 国产成人综合欧美精品久久| 国产精品久久夜| 熟妇高潮一区二区| 免费高清在线视频一区·| 996这里只有精品| 国产99亚洲| 成人欧美一区二区三区在线观看| 亚洲性受xxx喷奶水| 另类天堂视频在线观看| 日本啊v在线| 制服丝袜av成人在线看| 久久青青草视频| 亚洲欧美日本在线| 实拍女处破www免费看| 国产盗摄视频一区二区三区| 日韩精品视频久久| 欧美人成网站| 亚洲精品国产系列| 日韩丝袜视频| 91九色在线观看| avav成人| 欧美最近摘花xxxx摘花| 亚洲丝袜一区| 日韩天堂在线视频| 你懂得在线网址| 精品久久久久久综合日本欧美| 中文永久免费观看| 精品福利免费观看| 青娱乐国产在线视频| 国产精品成人在线观看| 国产美女喷水视频| 成人免费视频网站在线观看| 日韩av一卡二卡三卡| 久久久天天操| 精品久久久久久久久久中文字幕| 亚洲一区二区日韩| 亚洲综合视频一区| 国产一区二区区别| 免费试看一区| 欧美自拍视频| 好吊色欧美一区二区三区视频| 欧美日本三级| 91亚洲午夜在线| 九九热这里有精品| 国产成人精品综合| 黑人巨大精品| 国产成人精品免高潮费视频| 手机在线观看av| 97色伦亚洲国产| www555久久| 久久久免费电影| 人妖欧美1区| 九九热这里只有精品6| 在线观看午夜av| 久久99精品国产99久久6尤物| 麻豆网站在线观看| 久久影院模特热| av在线网址观看| 欧美日韩电影在线观看| 青春草免费在线视频| 欧美激情精品久久久久久黑人| 国产在线高清视频| 欧美精品免费看| 日本在线视频中文有码| 久久久亚洲精品视频| 91福利在线免费| 日本久久久久久| 日韩精品免费观看视频| 国产日韩一区在线| 亚洲成av人片在线观看www| 97视频资源在线观看| 北条麻妃在线一区二区免费播放| 国产精品夜夜夜一区二区三区尤| 麻豆一区二区麻豆免费观看| 精品国产一区二区三区免费| 综合亚洲自拍| 视频在线一区二区三区| 久久久久久美女精品| 欧美高清中文字幕| 伊人成人在线| 免费观看成人网| 黄色小说综合网站| 2一3sex性hd| 国产欧美一区二区精品忘忧草| 2017亚洲天堂| 一区二区高清视频在线观看| 五月婷婷亚洲综合| 欧美性三三影院| av官网在线观看| 精品一区二区亚洲| 欧美人xxx| 国自在线精品视频| 久久亚洲精品爱爱| 国产成人精品免费视频大全最热 | 日韩福利视频| 女同性一区二区三区人了人一| 亚洲熟妇国产熟妇肥婆| 美女免费视频一区二区| 国产精品偷伦视频免费观看了| 久久久一区二区| 成年人午夜剧场| 岛国精品视频在线播放| 中文字幕在线日亚洲9| 精品国产一区二区三区四区四 | 亚洲欧美自拍偷拍| 国产无遮挡裸体免费视频| 在线观看一区日韩| 亚洲精品一级片| 一色桃子一区二区| av伦理在线| 国产在线播放91| 嫩草一区二区三区| 99热这里只有精品免费| 日本不卡视频一二三区| 亚洲av成人精品一区二区三区| 国产精品久久久久影院| 国产精品黄色网| 欧美一区二区久久| 国产福利在线观看| 久久久午夜视频| 国产日本亚洲| 亚洲成人第一| 噜噜噜久久亚洲精品国产品小说| 欧美日韩久久婷婷| 国产日韩v精品一区二区| 亚洲国产精品成人无久久精品| 欧美二区三区的天堂| 国产永久免费高清在线观看视频| 欧美激情2020午夜免费观看| 欧美aaaaaa| 视频一区视频二区视频三区高| 在线国产精品一区| av影片在线播放| 亚洲人成网站在线| 国产九色91回来了| 亚洲人成在线观看网站高清| 极品视频在线| 国产欧美韩日| 国内久久视频| 女人扒开腿免费视频app| 日韩一区在线免费观看| 中国女人一级一次看片| 亚洲人成网站色ww在线| 在线观看欧美日韩电影| 久久精精品视频| 99国产精品| 免费的av网站| 婷婷成人综合网| 少妇av在线播放| 高清一区二区三区四区五区| 亚洲精品a区| 国产va亚洲va在线va| 床上的激情91.| 国产五月天婷婷| 亚洲国产中文字幕在线观看| 国产99re66在线视频| 国产精品久久久久av福利动漫| 欧美 日韩 国产一区二区在线视频| 毛毛毛毛毛毛毛片123| 亚洲免费大片在线观看| 国产黄色一级大片| 欧美韩国理论所午夜片917电影| 亚洲欧美日本国产| 日韩伦理在线免费观看| 97国产一区二区| 亚洲大尺度在线观看| 尤物yw午夜国产精品视频明星| 性欧美freehd18| 亚洲一区综合| 国产麻豆精品95视频| 国产一级在线播放| 日韩精品在线观看网站| 91精品产国品一二三产区| 视频在线观看成人| 国产一区91精品张津瑜| 久久综合成人网| 亚洲精品资源在线| 欧美aaaaaa| 欧美大黑帍在线播放| 久久久影视传媒| 97在线公开视频| 欧美精品xxx| 亚洲制服欧美另类| 美女在线视频一区二区| 伊人色综合久久天天| 日本美女一级视频| 国产精品高潮呻吟久久av野狼| 97精品97| 精品国产人妻一区二区三区| 欧美综合一区二区| av大大超碰在线| 免费电影一区| 久久se这里有精品| 黄色激情视频在线观看| 亚洲三级黄色在线观看| gogo大尺度成人免费视频| 777777av| 国产精品二区一区二区aⅴ污介绍| 亚洲AV无码成人片在线观看 | 久久综合色8888| 一区二区的视频| 97在线免费观看视频| 日韩在线观看电影完整版高清免费悬疑悬疑 | 国产偷亚洲偷欧美偷精品| 亚洲爽爆av| 欧美性大战久久久久xxx | 中文字幕一区综合| 99精品久久只有精品| 在线视频你懂得| 欧美亚洲另类激情另类| 天天做天天爱天天综合网2021 | 真实原创一区二区影院| 人妻少妇偷人精品久久久任期| 色噜噜狠狠一区二区三区果冻| 永久免费网站在线| 亚洲国产精品一区二区第一页|