日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

vue服务端渲染实践

發布時間:2024/8/26 综合教程 33 生活家
生活随笔 收集整理的這篇文章主要介紹了 vue服务端渲染实践 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

首先什么是ssr?不是玩游戲抽的ssr卡牌,而是server side render 服務端渲染

什么是客戶端渲染?就是在瀏覽器渲染dom結構和數據

什么是服務端渲染?就是在服務端把dom結構渲染好,把想要展示的數據都插入想展示的地方,將資源一次性梭哈給瀏覽器

下面用兩個圖說明一下傳統的vue spa客戶端渲染和vue服務端渲染的區別

spa:

spa的優點:

開發效率高

服務端壓力小

spa的缺點:

seo效果差(因為dom結構里的文字,圖片都是vue異步渲染出來的,首屏加載并沒有這些東西,搜索引擎的爬蟲往往根據文字內容,圖片的title等信息抓取頁面信息)

首屏加載速度慢(因為服務器首次只給前端返回了一個index.html,里面只包含vue的根組件例如#app,頁面的內容加載之前還需要去加載vue.js等其他的資源,然后通過異步ajax請求得到頁面數據,再通過vue的數據更新機制重新渲染頁面)

ssr:

ssr的優點:

首屏渲染速度快

seo比較友好

ssr的缺點:

開發體驗不如spa,需要借助nodejs

服務端壓力大

目前vue常用的ssr模式有兩種開發方式,第一種是使用一些ssr框架,例如nuxt.js,第二種是在服務端單獨用vue實現ssr,nuxt的開發大家可以參照nuxt的官網https://www.nuxtjs.cn/

這里面給大家介紹一下不使用框架,直接使用nodejs+vue實現ssr

敲黑板!!正文開始

首先用一個小例子實現vue的ssr

1在本地使用vue-cli新建工程 ,這里使用的vue-cli3,對腳手架不了解的同學需要去官網了解一下

vue create ssr-app

2在根目錄下新建server文件夾,創建一個01-vue-ssr-demo.js文件,在里面編寫node代碼

在這之前需要安裝下面幾個文件

npm install vue-server-renderer -s    //服務端創建dom節點用
npm install vue-router -s                  //路由
npm install express -s                      //express框架
npm install nodemon -s                    //熱更新node服務 啟動項目時使用nodemon 代替 node

在01-vue-ssr-demo.js中插入下面代碼

// 創建一個express實例
const express = require('express')

const app = express()

// 導入vue
const Vue = require('vue')

// 創建渲染器
const { createRenderer } = require('vue-server-renderer')

const renderer = createRenderer()

// 導入路由
const Router = require('vue-router')
Vue.use(Router)


// 路由:問題2:由express在管理
app.get('*', async (req, res) => {
  // 創建一個路由器實例
  const router = new Router({
    routes: [
      { path: '/', component: { template: '<div>Index</div>' } },
      { path: '/detail', component: { template: '<div>detail</div>' } },
    ]
  })


  // 構建渲染頁面內容
  // 問題1:沒辦法交互
  // 問題3:同構開發問題
  const vm = new Vue({
    router,
    data() {
      return {
        name: 'ssr-simple-demo'
      }
    },
    template: `
    <div>
      <router-link to="/">index</router-link>
      <router-link to="/detail">detail</router-link>
      <div>{{name}}</div>
      <router-view></router-view>
    </div>
    `
  })

  try {
    // 路由跳轉
    router.push(req.url)

    // 渲染: 得到html字符串
    const html = await renderer.renderToString(vm)
    // 發送回前端
    res.send(html)
  } catch (error) {
    res.status(500).send('服務器內部錯誤')
  }

})

// 監聽端口
app.listen(3000)

使用nodemon命令運行服務

nodemon server/01-vue-ssr-demo.js

在瀏覽器輸入localhost:3000打開,可以看到下面的頁面

并且index detail點擊之后可以切換內容

上面我們實現了一個簡單的vue ssr應用,但是,如果你在dom上通過vue命令@click綁定了事件,在頁面上點擊是不會觸發的,原因就是后臺返回到前端的所有都是字符串,在前端接收到的也是一段普普通通的html代碼,在頁面上選擇查看網頁源代碼可以看到如下內容

并沒有事件的綁定,點擊之后更不會觸發事件,那么我們怎么能讓返回到前端的頁面做一次激活?下面給大家講vue ssr的折中方案:原理是node服務根據用戶請求的地址,給用戶返回對應路由的首屏的資源,之后用戶的一切操作都交由vue去管理,在前端執行掛載,初始化,這個過程我們一般叫做zhushui。通過zhushui之后,我們的頁面就可以像正常的vue頁面一樣執行點擊事件了。

代碼結構如下:

標注顏色的就是核心代碼部分,我們要對之前的代碼做一些修改

具體代碼如下:

1 router.js-管理路由的邏輯

和原來路由不同的地方是這里采用的工廠模式,每一次請求都返回一個router實例,后面要說的new Vue和Vuex的創建都要用這種返回實例的方法。

原因是現在我們編寫的代碼是在服務端,每一個人請求的地址都不一樣,如果同時有3個人請求了三個頁面,但是我只創建一個router對象返回的話肯定有2個人接收到的router是錯誤的,所以這里面用了工廠模式返回了一個路由實例,保證每次請求得到的router是不受污染的

import Vue from 'vue'
import Router from 'vue-router'
import Home from './views/Home.vue'

Vue.use(Router)

// 工廠函數,每次請求返回一個Router實例
export function createRouter() {
  return new Router({
    mode: 'history',
    routes: [
      {
        path: '/',
        name: 'home',
        component: Home
      },
      {
        path: '/about',
        name: 'about',
        // route level code-splitting
        // this generates a separate chunk (about.[hash].js) for this route
        // which is lazy-loaded when the route is visited.
        component: () => import(/* webpackChunkName: "about" */ './views/About.vue')
      }
    ]
  })
}

2 store.js - 全局狀態管理,和router.js一樣,這里每次請求都會返回一個vuex的實例,原因同上

import Vue from 'vue'
import Vuex from 'vuex'

Vue.use(Vuex)

// 工廠函數
export function createStore() {
  return new Vuex.Store({
    state: {
      count: 108
    },
    mutations: {
      add(state) {
        state.count += 1;
      },
      // 加一個初始化
      init(state, count) {
        state.count = count;
      },
    },
    actions: {
      // 加一個異步請求count的action
      getCount({ commit }) {
        return new Promise(resolve => {
          setTimeout(() => {
            commit("init", Math.random() * 100);
            resolve();
          }, 1000);
        });
      },
    },
  })
}

3 main.js - 創建router實例/vuex實例/vue實例的方法 (并不是在這里直接就調用了,后面會在入口文件調用這里的方法創建實例)

import Vue from "vue";
import App from "./App.vue";
import { createRouter } from './router'
import { createStore } from "./store";

Vue.config.productionTip = false;

Vue.mixin({
  beforeMount() {
    const { asyncData } = this.$options;
    if (asyncData) {
      // 將獲取數據操作分配給 promise
      // 以便在組件中,我們可以在數據準備就緒后
      // 通過運行 `this.dataPromise.then(...)` 來執行其他任務
      this.dataPromise = asyncData({
        store: this.$store,
        route: this.$route,
      });
    }
  },
});

// 需要每個請求返回一個Vue實例
export function createApp(context) {
  const router = createRouter()
  const store = createStore()
  const app = new Vue({
    router,
    store,
    context, // 用于和外面renderer交互
    render: h => h(App)
  })

  return {app,router,store}
}

4 entry-server.js -服務端入口文件,作用:創建vue實例,創建router實例,創建store實例,返回 vue實例 (app),將來和后端渲染器 vue renderer打交道

import { createApp } from "./main"
// 首屏渲染
// 將來和渲染器打交道
// 創建vue實例
export default context => {
  const {app, router, store} = createApp(context)
  
  return new Promise((resolve, reject) => {
    // 跳轉首屏地址去
    router.push(context.url)
    
    // 等待路由就緒
    router.onReady(() => {
      // 判斷是否存在asyncData選項
      // 獲取匹配路由相關組件
      const comps = router.getMatchedComponents()
      // 遍歷它們,并執行可能存在的asyncData
      Promise.all(comps.map(comp => {
        if (comp.asyncData) {
          return comp.asyncData({
            store,
            route: router.currentRoute
          })
        }
      })).then(() => {
        // 數據已經存入store,只需要序列化它,傳到前端在復原
        // 設置到上下文中的state,renderer將來會轉換它
        context.state = store.state
        // 返回實例
        resolve(app)
      })
      .catch(reject)
    }, reject)
    
  })
}

5 entry-client.js - 客戶端入口文件 作用:通過app.$mount 激活頁面vue

import { createApp } from "./main";

// 激活
const { app, router, store } = createApp()

// 還原store.state
// renderer會把它放到window.__INITIAL_STATE__
if (window.__INITIAL_STATE__) {
  store.replaceState(window.__INITIAL_STATE__)
}

router.onReady(() => {
  app.$mount('#app')
})

6 index.html 宿主文件的修改 - public/index.html ,注意宿主元素注釋不要加空格,這個是固定的寫法。

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width,initial-scale=1.0">
    <!-- 1.刪掉之前動態title -->
    <title>vue-study</title>
  </head>
  <body>
    <!-- 2.把宿主元素變成一個注釋 -->
    <!--vue-ssr-outlet-->
  </body>
</html>

7 app.vue和添加兩個測試的頁面vue文件

app.vue:

<template>
  <div id="app">
    <p>{{$store.state.count}}</p>
    <nav>
      <router-link to="/">Home</router-link> |
      <router-link to="/about">About</router-link>
    </nav>

    <router-view></router-view>
  </div>
</template>

<style>
#app {
  font-family: "Avenir", Helvetica, Arial, sans-serif;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-align: center;
  color: #2c3e50;
  margin-top: 60px;
}
</style>

view/About.vue

<template>
  <div class="about">
    <h1>This is an about page</h1>
  </div>
</template>

view/Home.vue

<template>
  <div class="home">
    <img alt="Vue logo" src="../assets/logo.png">
    <HelloWorld msg="Welcome to Your Vue.js App"/>
  </div>
</template>

<script>
// @ is an alias to /src
import HelloWorld from '@/components/HelloWorld.vue'

export default {
  name: 'home',
  components: {
    HelloWorld
  },
  asyncData({ store, route }) { // 約定預取邏輯編寫在預取鉤子asyncData中
    // 觸發 action 后,返回 Promise 以便確定請求結果
    return store.dispatch("getCount");
  }
}
</script>

8 ssr.js服務端的啟動文件 server/ssr.js 服務端代碼

// 創建一個express實例
const express = require('express')

const app = express()

// 獲取絕對地址
const resolve = dir => require('path').resolve(__dirname, dir)

// 靜態文件服務
// 開發dist/client目錄,關閉默認的index頁面打開功能
app.use(express.static(resolve('../dist/client'), {index: false}))

// 創建渲染器
const { createBundleRenderer } = require('vue-server-renderer')
// 參數1:服務端bundle
const bundle = resolve('../dist/server/vue-ssr-server-bundle.json')
const renderer = createBundleRenderer(bundle, {
  runInNewContext: false, // https://ssr.vuejs.org/zh/api/#runinnewcontext
  template: require('fs').readFileSync(resolve("../public/index.html"), "utf-8"), // 宿主文件
  clientManifest: require(resolve("../dist/client/vue-ssr-client-manifest.json")) // 客戶端清單
})


// 只做一個件事,渲染
app.get('*', async (req, res) => {

  try {
    const context = {
      url: req.url
    }
    // 渲染: 得到html字符串
    const html = await renderer.renderToString(context)
    // 發送回前端
    res.send(html)
  } catch (error) {
    res.status(500).send('服務器內部錯誤')
  }

})

// 監聽端口
app.listen(3000)

9 webpack的配置

首先需要安裝webpack插件

npm install webpack-node-externals lodash.merge -D

根目錄新增vue.confg.js 代碼如下

// 兩個插件分別負責打包客戶端和服務端
const VueSSRServerPlugin = require("vue-server-renderer/server-plugin");
const VueSSRClientPlugin = require("vue-server-renderer/client-plugin");
const nodeExternals = require("webpack-node-externals");
const merge = require("lodash.merge");

// 根據傳入環境變量決定入口文件和相應配置項
const TARGET_NODE = process.env.WEBPACK_TARGET === "node";
const target = TARGET_NODE ? "server" : "client";

module.exports = {
  css: {
    extract: false
  },
  outputDir: './dist/'+target,
  configureWebpack: () => ({
    // 將 entry 指向應用程序的 server / client 文件
    entry: `./src/entry-${target}.js`,
    // 對 bundle renderer 提供 source map 支持
    devtool: 'source-map',
    // target設置為node使webpack以Node適用的方式處理動態導入,
    // 并且還會在編譯Vue組件時告知`vue-loader`輸出面向服務器代碼。
    target: TARGET_NODE ? "node" : "web",
    // 是否模擬node全局變量
    node: TARGET_NODE ? undefined : false,
    output: {
      // 此處使用Node風格導出模塊
      libraryTarget: TARGET_NODE ? "commonjs2" : undefined
    },
    // https://webpack.js.org/configuration/externals/#function
    // https://github.com/liady/webpack-node-externals
    // 外置化應用程序依賴模塊。可以使服務器構建速度更快,并生成較小的打包文件。
    externals: TARGET_NODE
      ? nodeExternals({
          // 不要外置化webpack需要處理的依賴模塊。
          // 可以在這里添加更多的文件類型。例如,未處理 *.vue 原始文件,
          // 還應該將修改`global`(例如polyfill)的依賴模塊列入白名單
          whitelist: [/.css$/]
        })
      : undefined,
    optimization: {
      splitChunks: undefined
    },
    // 這是將服務器的整個輸出構建為單個 JSON 文件的插件。
    // 服務端默認文件名為 `vue-ssr-server-bundle.json`
    // 客戶端默認文件名為 `vue-ssr-client-manifest.json`。
    plugins: [TARGET_NODE ? new VueSSRServerPlugin() : new VueSSRClientPlugin()]
  }),
  chainWebpack: config => {
    // cli4項目添加
    if (TARGET_NODE) {
        config.optimization.delete('splitChunks')
    }
      
    config.module
      .rule("vue")
      .use("vue-loader")
      .tap(options => {
        merge(options, {
          optimizeSSR: false
        });
      });
  }
};

10 在package 里增加打包命令,打包的時候使用npm run build,會自動執行build:client和build:server

安裝依賴

npm i cross-env -D

代碼:

"scripts": {
    "serve": "vue-cli-service serve",
    "build": "npm run build:server & npm run build:client",
    "build:client": "vue-cli-service build",
    "build:server": "cross-env WEBPACK_TARGET=node vue-cli-service build"
  },

打包完之后會在dist下面生成client文件夾和server文件夾

client下面的vue-ssr-client-manifest.json的作用是:描述了一些客戶端的信息,all數組里面的是將來要返回給前端要加載的一些資源

server下面的vue-ssr-server-bundle.json的作用是:將來'vue-server-renderer'會以這個json為工作目錄去創建dom

注意,因為是服務端渲染的,每一次修改都需要執行build命令以更新代碼

編寫完上面的代碼,執行node命令起服務 nodemon/server/ssr.js

然后在瀏覽器打開localhost:3000,會看到如下頁面,右面加載的資源就是vue-ssr-client-manifest.json 里面的all的文件

回顧整個編碼過程我們發現我們實際編寫vue代碼的部分并沒有改變什么,和spa開發有著一樣的 同構體驗,主要的改變有下面幾點:

1 vue-router/vuex/vue實例的創建都是使用的工廠函數,每一次請求服務端都會創建一個實例,防止數據污染

2 增加了兩個入口文件 entry-client.js/entry-server.js

3 增加了webpack的配置,產出dist/server 和dist/client相關的文件,供renderer插件使用

4 增加了服務端代碼-核心內容就是使用renderer函數渲染dom,并返回給客戶端,其中包含激活前端頁面的js代碼

最后總結一下對服務端渲染的理解以及使用場景

服務端渲染相比于spa應用,主要為我們提供了2點優勢,一個是快速的首屏加載,一個是seo引擎搜索

一般來說,對于首屏加載速度要求較高的場景是移動端的頁面,特別是hybrid混合開發的應用,在app里嵌入webview的方式,如果首屏加載時間過長的話會出現一個白屏,會讓用戶從比較流暢的原生頁面切換到了一個白屏頁面,如果是弱網情況白屏時間過長的話極大的降低了用戶體驗;另一種是微信公眾號/企業微信的第三方應用開發,點擊微信里的鏈接跳轉到我們自己服務器的url的過程中,除了我們自己的請求還有很多微信重定向等需要耗時的操作,白屏的時間更加的長。我們無法通過前端代碼控制客戶端加載頁面的白屏期間的操作,也就是無法加載骨架屏或者加上loading提高用戶體驗。因此移動端的hybrid開發和微信開發在技術選型的時候最好使用ssr的開發模式。

除了移動端之外,一些大型官網開發要求首屏渲染速度和搜索引擎seo抓取的時候也需要使用服務端渲染,搜索引擎爬蟲爬取網站并排名的最重要因素是網站首屏的加載速度,其次是里面的關鍵字,圖片的title,meta里的keysords等,而ssr模式剛好解決了這兩個問題。對于一些對首屏速度沒有要求的網站,且數據交互比較多的網站,例如后臺管理系統,就完全不需要ssr的開發模式。

當然,采用ssr模式的架構開發也有缺點,一是增加了代碼的復雜度,新手開發起來成本還是比較高的。二是在服務端渲染增加了服務端的壓力,如果服務器的配置比較低,而用戶數量很大的時候,服務器的cpu很容易滿載,如果公司有增加服務器的預算可以采用負載均衡,或者采用node server / nginx做一些緩存,如果登錄用戶有效的話將緩存的頁面直接返回給前端而不做服務端渲染。如果開發周期比較充裕,也可以做一些兼容性的判斷,用node監聽當前cpu的使用量,如果達到自己設定的閾值,那么就不用服務端渲染,返回給用戶spa的應用,如果cpu占用的比較少,正常返回服務端渲染的頁面。

上面的例子只是給大家提供vue ssr開發的模式的一個思路,如果公司新開發的項目,如果需要采用ssr,還是建議大家采用nuxt.js。

總結

以上是生活随笔為你收集整理的vue服务端渲染实践的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

国产手机在线 | 中文不卡视频在线 | 狠狠久久伊人 | 狠狠躁日日躁狂躁夜夜躁 | 九九免费在线看完整版 | 精品国偷自产在线 | 久青草国产在线 | 亚洲一级黄色大片 | 四虎永久精品在线 | 久久高清片 | 亚洲一二视频 | 五月婷婷在线综合 | 久久久久二区 | 99一区二区三区 | 在线免费观看黄色av | 在线a视频| 亚洲国产中文字幕在线 | 99久久精品午夜一区二区小说 | 亚洲砖区区免费 | 精品国产亚洲在线 | 国产精品久久久久久69 | 97偷拍在线视频 | 国产精品丝袜久久久久久久不卡 | 国产.精品.日韩.另类.中文.在线.播放 | 国产精品国产自产拍高清av | 91超级碰碰 | 波多野结衣电影一区二区 | 99视频精品 | 亚洲播放一区 | 国产亚洲在线 | 国产精品18久久久久白浆 | 午夜视频在线观看一区二区 | 香蕉视频在线看 | 成人看片| 一级做a爱片性色毛片www | 国产视频美女 | 天天综合色网 | 亚洲毛片一区二区三区 | 青青色影院| 91麻豆精品国产91久久久更新时间 | 久久艹艹| 国产精品久久一区二区无卡 | 亚洲乱码精品久久久久 | 就要干b | 999在线观看视频 | avwww在线| 五月婷丁香 | 在线电影a| 91尤物在线播放 | 欧美天天干 | 国产美女在线观看 | 最新中文字幕在线观看视频 | 日韩免费看片 | 国产高清无线码2021 | 免费黄a大片 | 精品视频在线免费观看 | 色插综合| 在线 国产 日韩 | 久久久久国产一区二区三区 | 久久电影色 | 经典三级一区 | 国产在线欧美日韩 | 免费av大片 | 国产视频一区二区在线观看 | 激情久久网 | 久久综合影音 | 97爱爱爱 | 国产视频中文字幕在线观看 | 色九九视频 | 探花视频免费观看高清视频 | 手机色在线 | 欧美精品网站 | 精品在线观看一区二区 | 91黄色小网站 | 色婷五月| 精品国产一区二区三区不卡 | 五月激情五月激情 | 天天做天天射 | 久草在线视频免费资源观看 | 香蕉精品视频在线观看 | 日韩中文字幕一区 | 日韩专区一区二区 | 超碰在线资源 | 亚州精品国产 | 中文字幕乱码亚洲精品一区 | 欧美日韩一区二区三区在线观看视频 | 日韩亚洲欧美中文字幕 | 在线观看深夜视频 | 天堂久久电影网 | 亚洲精品免费播放 | 日韩免费视频观看 | 国产精品99视频 | 成人一级影视 | 欧美另类xxxx| 久久综合婷婷国产二区高清 | 日批视频在线播放 | 欧美国产日韩激情 | 91手机视频在线 | 日本中文字幕在线播放 | 在线观看av国产 | 91完整视频 | 国产高清免费在线观看 | 天天操天天爱天天爽 | 最新av免费在线观看 | 日日躁你夜夜躁你av蜜 | 国产精品日韩在线观看 | 日韩高清在线一区二区 | 99草视频 | 亚洲h在线播放在线观看h | 亚洲国产精品久久 | 久色 网| 99精品视频网站 | 九九九在线观看视频 | 中文在线免费观看 | 国产人在线成免费视频 | 在线亚洲成人 | 毛片网在线 | 久久九九影视网 | 久久爽久久爽久久av东京爽 | 国产专区在线视频 | 91中文字幕在线播放 | 国产成人久久精品一区二区三区 | 综合久久2023 | a成人v在线 | 人人玩人人添人人澡97 | 人人舔人人插 | 日韩视频免费看 | 九色视频网 | va视频在线观看 | 国产精品一区久久久久 | 视频在线观看国产 | 日韩在线视频精品 | 亚洲精品乱码久久久久久蜜桃欧美 | 91精品视频在线免费观看 | 日韩欧美高清一区二区 | 日韩欧美综合视频 | 久久久久久久久综合 | 18久久久久| 久草视频中文 | 国产97色在线 | 五月综合色婷婷 | 最新免费av在线 | 天天爽天天做 | 2021国产精品视频 | 视频二区 | 久久久99精品免费观看 | 日韩精品无码一区二区三区 | 免费91麻豆精品国产自产在线观看 | 精品一区二区精品 | 亚洲精品在线二区 | av一区二区在线观看中文字幕 | 日韩欧美一区二区在线观看 | 缴情综合网五月天 | 少妇资源站 | 精品国产伦一区二区三区免费 | 狠狠色网 | 久久不色| 久久精品国产精品亚洲 | 久久久人 | 丝袜精品视频 | 在线看片成人 | 亚洲欧美日韩一二三区 | aaa黄色毛片 | 亚洲精品资源在线 | 久久综合福利 | 国产精品永久 | 成人午夜免费剧场 | 久草在线视频精品 | 免费观看一级视频 | 欧美男同网站 | 婷婷丁香花五月天 | 亚洲天天摸日日摸天天欢 | 91手机在线看片 | 欧美激情精品久久久久久免费印度 | 黄色a在线观看 | 激情在线网 | 欧美激情第一页xxx 午夜性福利 | 狠狠色伊人亚洲综合网站色 | 久久久wwww| 91视频一8mav | av亚洲产国偷v产偷v自拍小说 | 国产裸体视频网站 | 欧美日韩视频在线一区 | 国产人在线成免费视频 | 精品国偷自产在线 | 麻豆91网站 | 欧美日韩精品久久久 | 亚洲一级特黄 | 天天操天| 国产99一区视频免费 | 黄色成人在线观看 | 亚洲综合狠狠干 | 午夜av在线播放 | 日韩电影在线观看中文字幕 | 欧美特一级片 | 国产日产av | 三上悠亚一区二区在线观看 | 亚洲精品国内 | 久久精品资源 | 日韩在线观看第一页 | 99精品免费久久久久久久久日本 | 国产精品wwwwww| 日本99热 | 久久午夜精品 | 美女视频免费精品 | 成人免费色 | 91成人在线看| 中文字幕日韩伦理 | 欧美与欧洲交xxxx免费观看 | 福利一区在线 | 91成年人视频 | 嫩草av在线 | 中文字幕在线看视频 | 丝袜美腿av | 免费精品国产 | 激情视频久久 | 天天草网站 | 久亚洲精品 | 亚洲精品视频网站在线观看 | 探花视频免费观看 | 成人观看| 狠狠色丁香久久婷婷综 | 天天天天射 | 日韩欧美精品在线视频 | 欧美a级片网站 | 精品久久久久免费极品大片 | 欧美福利视频一区 | 99久久久久免费精品国产 | 国产一区二区手机在线观看 | 制服丝袜成人在线 | 色偷偷888欧美精品久久久 | www.日日日.com| 国产日韩在线一区 | 久久久久久久国产精品视频 | 日本三级在线观看中文字 | 一区二区三区免费播放 | 久久久久观看 | 在线免费视频a | 我要色综合天天 | 天天综合网在线观看 | 91在线播放国产 | 免费看色视频 | 国产精品久久久久久久久久久久午夜 | wwxxx日本| 日日爽夜夜操 | 欧美成人xxxx| 在线成人av| 激情久久综合网 | av大全在线播放 | 久久久久久久久久网 | 91网站在线视频 | 国产精品毛片久久蜜 | 久久黄色影视 | 欧美性另类 | 日韩成年视频 | 亚洲精品久久久久www | 免费看成年人 | 国产中文字幕免费 | 亚洲日本va午夜在线影院 | 亚洲精品久久久蜜桃直播 | 国产精品99久久久久人中文网介绍 | 日韩精品在线视频 | 免费午夜av | 亚洲一级片在线观看 | 激情丁香5月| 人人射av| 成人av网站在线观看 | 国产精品一区欧美 | 麻豆视频国产精品 | 精品国产伦一区二区三区 | 91精品久久久久久久久 | www.久久视频 | 91九色成人| 国产精品爽爽久久久久久蜜臀 | 狠狠色狠狠色综合日日小说 | 精品999在线 | 精品国产激情 | 久操久| 伊人网av| 91亚洲精品乱码久久久久久蜜桃 | 色资源二区在线视频 | 欧美成人黄| 日日摸日日添日日躁av | 一区二区三区电影在线播 | 国产黄色成人av | 久久久久久免费 | 久久综合狠狠综合 | 久久精品一区二区三区四区 | 91中文字幕在线视频 | 国产精品片 | 天天干天天在线 | 国产成人一区在线 | 欧洲色吧| 国产一区在线观看视频 | 少妇性色午夜淫片aaaze | 日韩午夜电影网 | 国产精品99久久久久久武松影视 | 草久在线| 久久精品视频免费 | 91资源在线 | 国产精品久久久久婷婷 | 99在线免费视频观看 | 国产视频精选在线 | 怡红院成人在线 | 国产精品一区二区在线播放 | 日本中文字幕免费观看 | 中文字幕刺激在线 | 免费视频91 | 久久久久麻豆v国产 | 精品天堂av | 日韩电影在线一区 | 97视频中文字幕 | 免费亚洲婷婷 | 超碰在线免费福利 | 久久伊人操| 成人免费视频在线观看 | 免费看网站在线 | 狠狠的干狠狠的操 | 色综合天天 | 成年人在线观看免费视频 | 国产一区二区电影在线观看 | 九九九热视频 | 色综合久久综合网 | 三级免费黄色 | 精品福利视频在线观看 | av导航福利 | 亚洲精品国偷拍自产在线观看蜜桃 | 国产视频九色蝌蚪 | 日韩av一区二区三区四区 | 国产精品久久久久久久毛片 | 中文字幕视频 | 精品福利视频在线观看 | 亚洲精品456在线播放第一页 | 日韩久久午夜一级啪啪 | 国产成人综 | 国产无套一区二区三区久久 | 国产护士hd高朝护士1 | 精品嫩模福利一区二区蜜臀 | 天天爱天天操天天爽 | 免费网站污 | 久久国产品 | 国产高清福利在线 | 国产成在线观看免费视频 | 国产视频亚洲视频 | 在线观看视频色 | 夜夜操天天干 | 亚洲日本va在线观看 | 天天操狠狠操网站 | 91看片在线免费观看 | 午夜精品一区二区三区在线观看 | 欧美综合色在线图区 | 天天干天天操天天拍 | 久久久免费精品 | 亚洲精品午夜久久久 | 精品亚洲免费 | 久草精品国产 | 久久九九九九 | 久久一区二 | av天天澡天天爽天天av | 国产精品一区二区三区在线 | 国产成人精品一区一区一区 | 色婷婷综合视频在线观看 | 在线免费高清一区二区三区 | 国产亚洲精品久久久久秋 | 黄色福利网 | 97超碰超碰| 国产a网站 | 伊人黄 | 日韩在线不卡 | 亚洲激情综合 | 干干夜夜 | 国产精品一区二区三区电影 | 国产高清视频在线播放一区 | 亚洲一区久久 | 在线观看免费福利 | av无限看 | 91大神精品视频 | 人人舔人人爽 | 天天插天天干天天操 | 在线观看久 | 久久激情片| 久久久久久国产一区二区三区 | 日韩av影片在线观看 | 91成人免费观看视频 | 人人cao | 色婷婷亚洲精品 | 91九色视频观看 | 国内精品久久久久久久影视简单 | 成人黄色小视频 | 日韩精品一区二区三区高清免费 | 国产二级视频 | 国产一级在线播放 | 99视频精品全国免费 | 亚洲国产成人在线播放 | 国产91综合一区在线观看 | 国产91小视频 | 91看片一区二区三区 | 888av| 亚洲一区在线看 | 日韩av在线免费看 | 国产精品专区一 | 国产精品激情偷乱一区二区∴ | 一区二区电影在线观看 | 亚洲成av人影院 | 九草视频在线观看 | 欧美a级一区二区 | 激情电影在线观看 | 亚洲春色奇米影视 | 久久久久久久久网站 | 国产精品福利在线观看 | 狠狠干我 | 亚洲国产网站 | 伊人成人激情 | 精品视频999 | 日日躁夜夜躁aaaaxxxx | 黄色av网站在线观看 | 日韩av一卡二卡三卡 | 免费福利在线观看 | 国产视频在线免费观看 | 久久久高清一区二区三区 | 亚洲人视频在线 | 成人免费观看在线视频 | 九九精品久久久 | 免费观看福利视频 | 国产v在线播放 | 国产一区国产二区在线观看 | 91三级视频 | 天天操天天怕 | 国产精品视频资源 | 亚洲成人av在线电影 | 亚洲精品乱码久久 | 久久激情视频 | 亚洲精区二区三区四区麻豆 | 日韩免费观看一区二区 | www.国产高清| 久久久久观看 | 日韩午夜精品福利 | 中文字幕婷婷 | 91.dizhi永久地址最新 | 伊人黄色网 | 精品不卡av | 色婷婷激情电影 | 久久99这里只有精品 | av在线a| 91在线影院 | 8x8x在线观看视频 | 黄色视屏免费在线观看 | 亚洲成人资源在线观看 | 日韩在线观看视频一区二区三区 | 中文字幕乱码电影 | 天天射天 | 国产高清绿奴videos | 人人看看人人 | 亚洲精品视频在线看 | 国产成人精品久久亚洲高清不卡 | 悠悠av资源片 | 99色国产 | 黄色一级片视频 | 中文字幕在 | 999国内精品永久免费视频 | 国产伦理一区二区 | 国产中文视频 | 亚州黄色一级 | 亚洲精品美女久久17c | av再线观看 | 国产午夜精品久久久久久久久久 | 中文字幕久久精品 | 久久综合之合合综合久久 | 日日添夜夜添 | a级成人毛片 | av高清影院| 五月婷婷激情 | av线上看| 中文字幕第一页在线视频 | 狠狠色丁香久久婷婷综合_中 | 欧美精品一区在线 | 免费看一级特黄a大片 | 91久久奴性调教 | 日韩黄色网络 | 亚洲视频www | 最近免费在线观看 | 色婷婷综合五月 | 午夜精品一区二区三区免费 | 国产视频导航 | 最近最新最好看中文视频 | 久草在线这里只有精品 | 亚洲免费精品视频 | 黄色网www | 人人爽人人 | 久久久久久久久久久免费av | 亚洲精品免费在线 | 91网址在线 | 久久综合婷婷 | 激情视频国产 | 国产精品免费久久久久久 | 久久精品国产v日韩v亚洲 | 狠狠躁夜夜躁人人爽超碰97香蕉 | 亚洲国产精品一区二区尤物区 | 国产在线永久 | 国产日韩在线播放 | 91视频麻豆| 久久国语露脸国产精品电影 | 天天天天天天操 | 日韩视频中文字幕在线观看 | 久草成人在线 | 亚洲经典在线 | 99国产成+人+综合+亚洲 欧美 | 日韩欧美高清 | 狠狠天天| 色999在线 | 久久久综合精品 | 国产黑丝一区二区三区 | 国产福利午夜 | 亚洲视频2 | 国产一二三区在线观看 | 麻豆视频在线免费观看 | 91在线看视频 | 天天av在线播放 | 婷婷丁香自拍 | 超碰人人舔 | 国产经典av| 婷婷伊人综合亚洲综合网 | 日韩中文在线视频 | 久久综合婷婷国产二区高清 | 国产视频在线免费 | av资源中文字幕 | 日本中出在线观看 | 手机看片中文字幕 | 久久国产精品免费看 | 国产一区二区三区 在线 | 亚洲精品在线一区二区三区 | 国产91电影在线观看 | 国产日韩精品在线观看 | 国产一区二区在线视频观看 | 精品国产乱码久久久久久1区2匹 | 国产精品久久久久久99 | 免费男女羞羞的视频网站中文字幕 | 四虎影视国产精品免费久久 | 国产一级大片在线观看 | 激情久久网 | 亚洲精品美女久久久 | 日韩精品在线视频免费观看 | 亚洲精品国偷自产在线91正片 | 久久成年人网站 | 欧美另类网站 | 国产精品高清免费在线观看 | 日韩欧美一区二区三区免费观看 | 丁五月婷婷 | 国产成人精品在线播放 | 在线亚洲精品 | 亚洲精品男人天堂 | 97高清免费视频 | 在线 国产 亚洲 欧美 | 99精品福利视频 | 最新成人av| 国产一区免费视频 | 中文字幕免费国产精品 | 日韩 在线a| 日本韩国欧美在线观看 | 色哟哟国产精品 | 国产网站av | 国产一级特黄毛片在线毛片 | 国产中文欧美日韩在线 | 日韩久久午夜一级啪啪 | 欧美aaa大片 | 国产va精品免费观看 | 日韩免费电影网站 | 亚洲成人第一区 | 美女很黄免费网站 | 国产高清视频 | 一区二区三区在线免费观看 | 国内久久精品 | 免费成人在线电影 | 免费视频久久 | 久久久精品国产一区二区 | 在线精品视频免费播放 | 国产色视频| 日韩在线视频看看 | 国产美女视频 | 日本在线成人 | 福利视频一区二区 | 成人网在线免费视频 | 手机成人在线 | 一区二区av | 日韩免费看视频 | 黄色大片视频网站 | 午夜av免费在线观看 | 成人aⅴ视频 | 国产一线天在线观看 | 四虎最新入口 | 国内外成人免费在线视频 | 人人玩人人添人人澡超碰 | 国产成人精品一区二区在线观看 | 国产99久久久国产 | 中文字幕4 | 国产五十路毛片 | 久久伦理影院 | 91麻豆精品国产91久久久无需广告 | 久久国产精品久久精品 | 91片黄在线观看 | 国模视频一区二区 | 亚洲精品免费在线播放 | 日韩精品视频免费在线观看 | 911精品视频 | 亚洲精品无| 国产精品一区二区免费 | av在线播放中文字幕 | 国产精品九九九九九 | 天天骚夜夜操 | 久久视频这里只有精品 | 在线观看国产区 | 三级小视频在线观看 | 深夜免费福利在线 | 99热精品国产一区二区在线观看 | 久久在线视频精品 | 日本精品久久久一区二区三区 | 亚洲美女在线一区 | 精品视频资源站 | 天天操伊人 | 成年人免费av网站 | 精品久久网 | 国产直播av| 美女视频黄色免费 | 日韩精品中文字幕在线播放 | 久久久久久久久久网 | 免费a现在观看 | 91手机视频 | 亚洲国产97在线精品一区 | 日本精品中文字幕在线观看 | 中文字幕在线观看一区二区三区 | 国产人在线成免费视频 | 日韩欧美电影在线观看 | 天天色天天色 | 国产一卡二卡四卡国 | 五月香视频在线观看 | 五月婷婷香蕉 | 又色又爽又黄高潮的免费视频 | 亚洲区视频在线 | 伊人五月天综合 | 久久夜夜操 | 成人黄色小说在线观看 | 日韩av线观看 | 成人黄色小说网 | 日韩精品一区电影 | 三级黄色片在线观看 | 日韩色在线观看 | 久久久久久久久久久影院 | 久久国产精品99精国产 | 一区二区精品视频 | 欧美一级日韩免费不卡 | 日韩a级黄色 | 精品国产一区二区三区免费 | 麻豆国产精品va在线观看不卡 | 91九色成人| 草樱av| 亚洲成av人片在线观看 | 一区 二区 精品 | 99精品视频在线播放免费 | 久久综合爱 | 国产中文视 | 久久av免费观看 | 国产在线综合视频 | 久草视频视频在线播放 | 国产视频一区在线播放 | 日韩在线观看视频一区二区三区 | 日韩av在线网站 | 国产精品美女www爽爽爽视频 | 97视频在线免费 | 精品国产欧美一区二区三区不卡 | 日韩视频一区二区三区在线播放免费观看 | 精品久久久久久国产 | 狠狠操天天射 | 日韩精品免费一区二区 | 911国产在线观看 | 国产亚洲精品久久19p | 国产专区视频在线观看 | 日韩中文字幕91 | 在线精品观看国产 | 97人人模人人爽人人少妇 | 亚洲国产色一区 | 国产麻豆精品在线观看 | 成人在线观看你懂的 | 日韩91在线 | 久久精品一区二区三区中文字幕 | 日韩最新理论电影 | 国产福利网站 | 欧美一二在线 | 一区二区三区在线免费观看视频 | 国产精品高潮呻吟久久av无 | 久久婷婷一区二区三区 | 97超在线视频 | 亚洲精品美女视频 | 日韩,中文字幕 | 国产黄视频在线观看 | 国产成人在线综合 | 国产精品一区在线观看 | 免费观看一区 | 国产在线观看国语版免费 | 欧美日韩亚洲在线观看 | 久久精品九色 | 国产精品亚洲片夜色在线 | 欧美精品久 | 一区二区电影在线观看 | 天天射天天做 | 天天天干天天天操 | 国产福利免费看 | 九九九毛片 | 五月天免费网站 | 日韩中文三级 | 免费在线看成人av | 91尤物在线播放 | 亚洲精品资源在线 | 国产精品日韩高清 | 亚洲综合色站 | 日韩欧美精品一区 | 综合色站导航 | 日韩精品中文字幕在线播放 | 麻豆激情电影 | 午夜精品久久久久久久99无限制 | 日韩福利在线观看 | 午夜美女网站 | bbb搡bbb爽爽爽 | 中文永久字幕 | 久久精品99北条麻妃 | 欧美天堂视频在线 | 欧美日韩三区二区 | 国产成人精品国内自产拍免费看 | 国产精品久久久久久久久久不蜜月 | 福利一区二区 | 在线导航av | 国产一区在线免费观看视频 | 国产精品一区二区你懂的 | 超碰在线亚洲 | 国产精品白浆 | 青青久视频| 久久理伦片 | 激情五月开心 | 日韩中文幕 | 911香蕉视频 | 91精品在线播放 | 麻豆观看 | 人人干网站| 午夜在线观看影院 | 精品三级av| 国产一区在线不卡 | 国产成人三级三级三级97 | 国产亚洲激情视频在线 | 美女视频久久 | 91精品久| 欧美激情综合色综合啪啪五月 | 久久99国产一区二区三区 | 国产午夜精品一区二区三区嫩草 | 国产精品久久毛片 | 美女国内精品自产拍在线播放 | 久久福利 | 麻豆一精品传二传媒短视频 | www.com黄 | 国产精品第52页 | 精品中文字幕在线观看 | 免费黄色a网站 | 午夜在线国产 | 成人91免费视频 | 亚洲综合干 | 蜜臀av性久久久久蜜臀aⅴ涩爱 | 亚洲精品综合一区二区 | 国产精品久久久久久久久久新婚 | 在线观看视频国产一区 | 久久免费公开视频 | 天天爱天天插 | 麻豆91在线 | 91精品婷婷国产综合久久蝌蚪 | 午夜精品一区二区三区视频免费看 | 99色在线视频 | 亚洲国产中文字幕在线观看 | 亚洲一二三久久 | 国产福利免费在线观看 | 亚洲精品激情 | 黄色免费在线看 | 国产精品综合久久久 | 日韩激情av在线 | 久草视频手机在线 | 久久久免费高清视频 | a视频在线播放 | 亚洲精选99| 成人影片在线免费观看 | 婷婷六月中文字幕 | 久久久综合精品 | 高清一区二区 | 男女拍拍免费视频 | 激情六月婷婷久久 | 久久99精品国产麻豆婷婷 | 日韩精品一区二区不卡 | 久久不色 | 久久精品91视频 | 日日碰狠狠躁久久躁综合网 | 五月婷婷.com| 免费成人在线网站 | 99精品国产福利在线观看免费 | 久久综合久久综合久久综合 | 国产91精品看黄网站在线观看动漫 | 一区 二区电影免费在线观看 | 久久er99热精品一区二区 | 欧美韩国日本在线观看 | 国产精品 中文字幕 亚洲 欧美 | 中文字幕人成乱码在线观看 | 91视频在线免费 | 麻豆视频91 | 国产精品久久久网站 | 激情五月婷婷综合网 | 久久久久久欧美二区电影网 | 人人搞人人干 | a√国产免费a | 久久久一本精品99久久精品 | 中中文字幕av在线 | 免费看国产精品 | 五月天狠狠操 | 国产精品99久久久久 | 婷婷久月 | 五月天婷婷免费视频 | 亚洲精品午夜一区人人爽 | 在线观看精品黄av片免费 | 免费男女羞羞的视频网站中文字幕 | 国产最新91 | 国产一级在线观看视频 | 人人狠狠| 麻豆影视在线观看 | 国产精品av免费 | 色视频在线 | www.色五月.com| 91精品国| 日本精品xxxx | 日韩美女一级片 | 永久免费在线 | 午夜私人影院 | 欧美一级淫片videoshd | 亚洲精品一区二区精华 | 国产小视频91 | 国产精品理论在线观看 | 久久亚洲日本 | 久久99久久99精品免费看小说 | 色综合色综合久久综合频道88 | 在线观看免费中文字幕 | 激情网五月婷婷 | 九九在线免费视频 | 不卡电影一区二区三区 | 色五丁香| 人人舔人人舔 | 中文字幕在线观看第一页 | 97成人免费视频 | 国产精品va在线观看入 | 黄色成年片| 久久久免费毛片 | 日日碰夜夜爽 | 亚洲黄色片在线 | 中文字幕在线播放日韩 | 成人黄色在线看 | 亚洲精品色婷婷 | 欧美另类xxx | 黄色av电影免费观看 | 婷婷在线色 | 日日操天天射 | 亚洲精品国产精品国自产观看浪潮 | 国产一区二区不卡在线 | 黄色性av| 亚洲国产美女精品久久久久∴ | 欧美精品一区二区在线播放 | 日韩网站在线观看 | 色婷婷在线观看视频 | 五月开心激情网 | 色99久久 | 黄色亚洲大片免费在线观看 | 国内精品久久久久影院优 | 国产999视频 | 最新av电影网站 | 中文字幕你懂的 | 精品少妇一区二区三区在线 | 精品国产一区二区三区av性色 | 99精品在线视频播放 | 欧美成人91 | 亚色视频在线观看 | 狠狠干成人综合网 | 亚洲黄色软件 | 色99久久| 色久网 | 精品久久久久久电影 | 96久久久 | 欧美一区二区三区不卡 | 色老板在线视频 | 91香蕉视频好色先生 | 亚洲一区二区天堂 | 久久爱992xxoo | 久久久久久久看片 | 国产精品一区二区三区观看 | 国产精彩视频 | 欧美日韩综合在线观看 | 欧美黄色软件 | 五月婷婷av| 日韩视频三区 | 日韩在线观看视频网站 | 一级片黄色片网站 | 久久久久中文 | 国产精品二区三区 | 久草 | 国产精品久久久久久久妇 | 国产专区精品 | 久草视频免费看 | 亚洲欧美乱综合图片区小说区 | 99久久久国产精品免费99 | 免费成人在线网站 | 最近免费在线观看 | 久久精品免费看 | 久久久久久免费 | 日韩专区在线观看 | 色999五月色 | 日韩精品专区 | 激情偷乱人伦小说视频在线观看 | 国模精品在线 | 操操操夜夜操 | 欧美性视频网站 | 成人a毛片 | 伊甸园av在线 | 中文亚洲欧美日韩 | 少妇bbb | 91看片在线播放 | 麻豆传媒视频在线免费观看 | 国产成人av网址 | 91网站免费观看 | 国产一区在线视频播放 | 欧美 激情 国产 91 在线 | 夜夜骑首页| 久久精品国产精品亚洲 | 欧美污网站 | 日p视频| 日韩中文三级 | 国内精品久久影院 | 99c视频高清免费观看 | 日韩成片 | 成人h在线观看 | 国产在线观看99 | 精品久久一区二区三区 | 欧美a视频在线观看 | 夜夜骑天天操 | aaaaaa毛片 | 国产成人一区二区三区影院在线 | 国产很黄很色的视频 | 亚洲精品动漫在线 | 天天做天天爱夜夜爽 | 国产999精品久久久久久 | 国产精品18久久久久久久网站 | 天天射天天射天天 | 久久精品亚洲一区二区三区观看模式 | 日韩av电影网站在线观看 | 在线欧美小视频 | 免费视频久久 | 国产尤物在线视频 | 色婷婷99| 丝袜美女在线 | 在线观看日韩精品视频 | 91精品亚洲影视在线观看 | www.综合网.com | 国产中的精品av小宝探花 | 日韩女同一区二区三区在线观看 | 不卡精品 | 成人h电影 | 999久久久免费视频 午夜国产在线观看 | 成人a级免费视频 | 久久亚洲日本 | 99爱精品视频 | 97超碰资源总站 | 久久午夜电影院 | 久久久久久久久久久影院 | 欧美人交a欧美精品 | 久久人人爽人人爽人人片av免费 | 久久一区二区免费视频 | 亚洲日本中文字幕在线观看 | 美女精品在线 | 精品99视频 | 黄色软件网站在线观看 | 中文字幕乱码电影 | 伊色综合久久之综合久久 | 一级黄色片在线播放 | 精品一区精品二区 | 国产女人免费看a级丨片 | 亚洲国产wwwccc36天堂 | 亚洲国产成人av网 | 成人综合婷婷国产精品久久免费 | 精品美女国产在线 | 亚洲电影黄色 | 久久av中文字幕片 | 九九免费观看视频 | 黄色毛片在线 | 91看片在线播放 | 在线欧美a| 国产xxxxx在线观看 | 欧美成天堂网地址 | 久久久精品小视频 | 九九九免费视频 | 国产丝袜在线 |