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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > vue >内容正文

vue

vue商城项目源码_CMS全栈项目之Vue和React篇(下)(含源码)

發布時間:2024/10/8 vue 93 豆豆
生活随笔 收集整理的這篇文章主要介紹了 vue商城项目源码_CMS全栈项目之Vue和React篇(下)(含源码) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

今天給大家介紹的主要是我們全棧CMS系統的未講解完的后臺部分和前臺部分,如果對項目背景和技術棧不太了解,可以查看我之前的文章

基于nodeJS從0到1實現一個CMS全棧項目(上)

基于nodeJS從0到1實現一個CMS全棧項目(中)

基于nodeJS從0到1實現一個CMS全棧項目的服務端啟動細節

摘要

本文將主要介紹如下內容:

  • 實現自定義的koa中間件和restful API
  • koa路由和service層實現
  • 模版引擎pug的基本使用及技巧
  • vue管理后臺頁面的實現及源碼分享
  • react客戶端前臺的具體實現及源碼分享
  • pm2部署以及nginx服務器配置

由于每一個技術點實現的細節很多,建議先學習相關內容,不懂的可以和我交流。如果只想了解vue或react相關的內容,可以直接跳到文章的第4部分。

正文

1.實現自定義的koa中間件和restful API

Koa 應用程序是一個包含一組中間件函數的對象,它是按照類似堆棧的方式組織和執行的。我們可以使用koa提供的use接口和async函數去自定義一些中間件。一個用來實現打印log的中間件如下:

// logger app.use(async (ctx, next) => {await next();const rt = ctx.response.get('X-Response-Time');console.log(`${ctx.method} ${ctx.url} - ${rt}`); });

有關koa的更多介紹可以去官網學習,我們開始正式進入實現中間件的環節。

在我第一章介紹CMS時剖出了目錄結構和層級,我們在源碼中找到middlewares目錄,首先我們來看看common.js,這個文件是存放我們通用中間件的地方,一共定義了如下中間件:

源碼如下:

import logger from 'koa-logger'; import koaBody from 'koa-body'; import session from 'koa-session'; import cors from 'koa2-cors'; import sessionStore from '../lib/sessionStore'; import redis from '../db/redis'; import statisticsSchema from '../db/schema/statistics';// 設置日志 export const Logger = app => app.use(logger()) // 處理請求體 export const KoaBody = app => app.use(koaBody())// 配置跨域資源共享 export const Cors = app => app.use(cors({origin: function(ctx) {if (ctx.url.indexOf('/api') > -1) {return false;}return '*';},exposeHeaders: ['WWW-Authenticate', 'Server-Authorization'],maxAge: 5,credentials: true,allowMethods: ['GET'],allowHeaders: ['Content-Type', 'Authorization', 'Accept', 'X-Requested-With'],}) )// 設置session export const Session = app => {app.keys = ['xujiang']const SESSION_CONFIG = {key: 'zxzkCMS',maxAge: 12 * 60 * 60 * 1000, // session的失效時間,設置為半天store: new sessionStore(redis),signed: true}app.use(session(SESSION_CONFIG, app)); }// 統計網站數據 export const siteStatistics = app => app.use(async (ctx, next) => {if(ctx.url.indexOf('articleList?iSaJAx=isAjax') > -1) {const views = await statisticsSchema.hget('views')statisticsSchema.hmset('views', +views + 1)}await next() })

其實實現一個中間件很簡單,我們只需要在app.use的參數中創建自己的async業務函數就好了,比如siteStatistics,可以參考此方法去做自定義的中間件。

關于restful API的實現,我們在基礎架構層來實現。可以看源碼的lib下的descorator.js文件。大致分為幾塊內容:

這塊實現會涉及到更多的es6+知識,包括修飾器,symbol等,如有不懂的可以和我交流溝通。

2.koa路由和service層實現

這一塊主要采用MVC模式,我們在之前定義了基礎的路由類,這樣我們就可以正式處理服務端業務,我們可以按模塊定義不同的業務接口,通過路由控制器統一管理。

我們實現router和service分離的模式如上圖,在api router下我們只會定義請求相應相關的內容,具體的業務邏輯和數據操作統一在service層處理,這樣做的好處是方便后期擴展和管理業務邏輯,讓代碼更可讀。當然也可以把數據操作和http統一放在router里,但是這樣會造成代碼耦合度過高,不利于項目管理。我們來看看具體的實現方式:

  • router層
  • // router/statistics import { controller, get } from '../lib/decorator' import {getSiteStatistics } from '../service/statistics'@controller('/api/v0/siteStatistics') class statisticsController {/*** 獲取所有統計數據* @param {*} ctx * @param {*} next */@get('/all')async getSiteStatistics(ctx, next) {const res = await getSiteStatistics()if(res && !Array.isArray(res)) {ctx.status = 200ctx.body = {data: res,state: 200}}else {ctx.status = 500ctx.body = {data: res ? res.join(',') : '服務器錯誤',state: 500}}} }export default statisticsController
  • service層
  • // service用來處理業務邏輯和數據庫操作 import statisticsSchema from '../db/schema/statistics'export const getSiteStatistics = async () => {const result = await statisticsSchema.hgetall()return result }

    這里我們舉了個簡單的例子方便大家理解,至于admin和config等模塊的開發也類似,可以結合自己的業務需要去處理。其他模塊的代碼已寫好,可以在我的github中找到。如有不懂,可以和我交流。

    3.模版引擎pug的基本使用及技巧

    模版引擎這塊不是項目中的重點,在項目中也沒有涉及到諸如jade,ejs這些模版引擎,但是作為前端,這些多了解還是很好的。我在這里簡單介紹一下pug(也就是jade的升級版)。

    為了在koa項目中使用模版引擎,我們可以使用koa-views來做渲染,具體使用方式如下:

    /***** koa-view基本使用 *****/import views from 'koa-views';app.use(views(resolve(__dirname, './views'), { extension: 'pug' }));app.use(async (ctx, next) => {await ctx.render('index', {name: 'xujiang',years: '248歲'})});

    具體頁面的pug文件:

  • index.pug
  • layout/default
  • pug采用縮進的方式來規定代碼層級,可以使用繼承等語法,感興趣可以參考pug官網學習。這里不做詳細介紹。

    4.vue管理后臺頁面的實現及源碼分享

    首先我們看看vue管理后臺的組織架構:

    由于后臺大部分是動態配置的數據,而且還會有預覽功能,所以涉及到大量數據共享的情況,這里我們統一采用vuex來管理狀態,vuex的模型如下:

    state用來定義初始化store,mutation主要用來處理同步action,action用來處理異步action,type是用來定義state類型的接口文件,如下:

    // type.ts export interface State {name: string;isLogin: boolean;config: Config;[propName: string]: any; // 用來定義可選的額外屬性 }export interface Config {header: HeaderType,banner: Banner,bannerSider: BannerSider,supportPay: SupportPay }export interface HeaderType {columns: string[],height: string,backgroundColor: string,logo: string }export interface Banner {type: string,label: string[],bgUrl: string,bannerList: any[] }export interface BannerSider {tit: string,imgUrl: string,desc: string }export interface SupportPay {tit: string,imgUrl: string }// 處理相應的類型 export interface Response {[propName: string]: any; }

    mutation內容如下:

    action如下:

    //action.ts import { HeaderType,Banner,BannerSider,SupportPay,Response} from './type' import http from '../utils/http' import { uuid, formatTime } from '../utils/common' import { message } from 'ant-design-vue'export default {/**配置 */setConfig(context: any, paylod: HeaderType) {http.get('/config/all').then((res:Response) => {context.commit('setConfig', res.data)}).catch((err:any) => {message.error(err.data)})},/**header */saveHeader(context: any, paylod: HeaderType) {http.post('/config/setHeader', paylod).then((res:Response) => {message.success(res.data)context.commit('saveHeader', paylod)}).catch((err:any) => {message.error(err.data)}) },/**banner */saveBanner(context: any, paylod: Banner) {http.post('/config/setBanner', paylod).then((res:Response) => {message.success(res.data)}).catch((err:any) => {message.error(err.data)}) },/**文章列表 */getArticles(context: any) {http.get('article/all').then((res:Response) => {context.commit('getArticles', res.data);}).catch((err:any)=>{message.error(err.data)})},addArticle(context: any, paylod: any) {paylod.id = uuid(8, 10);paylod.time = formatTime(Date.now(), '/');paylod.views = 0;paylod.flover = 0;return new Promise((resolve:any, reject:any) => {http.post('/article/saveArticle', paylod).then((res:Response) => {context.commit('addArticle', paylod)message.success(res.data)resolve()}).catch((err:any) => {message.error(err.data)reject()})}) }// ... };

    這里大致列舉了幾個典型的action,方便大家學習和理解,再進一步的化,我們可以基于它去封裝baseAction,這要可以減少大部分復用信息,這里大家可以試試做封裝一波。 最后我們統一在index里統一引入:

    import Vue from 'vue'; import Vuex from 'vuex'; import { state } from './state'; import mutations from './mutation'; import actions from './action';Vue.use(Vuex);export default new Vuex.Store({state,mutations,actions, });

    通過這種方式管理vuex,對于后期可擴展性和可維護性,也有一定的幫助。

    vue頁面部分大家根據之前node篇的用例和數據模型可以知道大致的頁面模塊和功能點,這里就不在細談。我們來看看幾個關鍵點:

    • 如何保證頁面刷新導航可以正確定位
    • 如何切換頁面時做自定義緩存
    • 如何實現模擬pc端,移動端預覽
    • 如何使用vuex高級api實現數據監聽機制
    • 如何做登錄鑒權

    接下來我直接剖出我的方案,大家可以參考。

    1.如何保證頁面刷新導航可以正確定位

    // layout.vue // 頁面路由表 const routeMap: any = {'/': '1','/banner': '2','/bannerSider': '3','/article': '4','/addArticle': '4','/support': '5','/imgManage': '6','/videoManage': '7','/websiteAnalysis': '8','/admin': '9', };// 監聽路由變化,匹配當前選中導航 @Watch('$route') private routeChange(val: Route, oldVal: Route) {// do somethingif(val.path.indexOf('/preview') < 0) {this.curSelected = routeMap[val.path] || routeMap[oldVal.path];} }

    2.如何切換頁面時做自定義緩存

    我們使用keep-alive做緩存,被他包裹的路由視圖下傳遞key值來確定下次是否被走緩存:

    <template><div id="app"><keep-alive><router-view :key="key" /></keep-alive></div> </template><script lang="ts"> import { Vue } from 'vue-property-decorator'; import Component from 'vue-class-component';@Component export default class App extends Vue {get key() {// 緩存除預覽頁面之外的其他頁面console.log(this.$route.path)if(this.$route.path.indexOf('/preview') > -1) {return '0'}else if(this.$route.path === '/login') {return '1'}else {return '2'}} } </script>

    由于我們的業務是預覽和管理頁面切換的時候要更新到最新數據,所以我們在這兩個模塊切換時不走緩存,調用最新數據。登錄同理,通過設置不同的key來做分布式緩存。

    3.如何實現模擬pc端,移動端預覽

    實現預覽主要我采用基于寬度來做的模擬,通過定義預覽路由,來定義pc和移動的屏幕。如果有不懂的,可以和我交流,當然你們也可以采用iframe用模擬。

    4.如何使用vuex高級api實現數據監聽機制

    這里直接剖代碼:

    public created() {let { id, label } = this.$route.query;this.type = id ? 1 : 0;if(id) {// 監聽vuex中文章數據的變化,變化則觸發action顯示文章數據// 注:這里這么做是為了防止頁面刷新數據丟失let watcher = this.$store.watch((state,getter) => {return state.articles},() => {this.getDetail(id, label, watcher)})if(Object.keys(this.$store.state.articles).length) {this.getDetail(id, label, watcher)}}}

    我們使用vuex的watch去監聽store的變化,然后去做相應的處理,watch API接受兩個回調參數,第一個回調返回一個值,如果值變化了,就會觸發第二個參數的回調,這有點類似與react hooks的memo和callback。

    5.如何做登錄鑒權

    登錄鑒權主要是和后端服務協商一套規則,后臺通過校驗是否登錄或者是否有權限操作某個模塊,一般通過response的相應數據通知給前端,這里我們主要講一下登錄鑒權的,如果當前用戶沒登錄或者session過期,node服務端會返回401,這樣前端就可以去做重定向操作了:

    //http模塊封裝 import axios from 'axios' import qs from 'qs'axios.interceptors.request.use(config => {// loadingreturn config }, error => {return Promise.reject(error) })axios.interceptors.response.use(response => {return response }, error => {return Promise.resolve(error.response) })function checkStatus (response) {// loading// 如果http狀態碼正常,則直接返回數據if(response) {if (response.status === 200 || response.status === 304) {return response.data// 如果不需要除了data之外的數據,可以直接 return response.data} else if (response.status === 401) {location.href = '/login';} else {throw response.data}} else {throw {data:'網絡錯誤'}}}// axios默認參數配置 axios.defaults.baseURL = '/api/v0'; axios.defaults.timeout = 10000;export default {post (url, data) {return axios({method: 'post',url,data: qs.stringify(data),headers: {'X-Requested-With': 'XMLHttpRequest','Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'}}).then((res) => {return checkStatus(res)})},get (url, params) {return axios({method: 'get',url,params, // get 請求時帶的參數headers: {'X-Requested-With': 'XMLHttpRequest'}}).then((res) => {return checkStatus(res)})},del (url, params) {return axios({method: 'delete',url,params, // get 請求時帶的參數headers: {'X-Requested-With': 'XMLHttpRequest'}}).then((res) => {return checkStatus(res)})} }

    至于具體的axios請求攔截器和響應攔截器的設置,我們可以根據具體業務來操作和添加自定義邏輯。

    5.react客戶端前臺的具體實現及源碼分享

    react部分我主要采用自己搭建的webpack做模塊打包,想學習webpack的可以參考我的webpack配置,目前打包文件可以兼容到ie9+。

    這幾部分都是通過vue后臺配置出來的,大家也可以配置符合自己風格的網站。 react前臺我們主要使用react hooks來搭建,沒有采用redux等狀態管理庫,如果想學習redux相關知識,可以進入我們的學習群一起學習。 首頁代碼如下:

    import React, { useState, useEffect } from "react" import { Carousel } from 'antd' import ArticleItem from '../../components/ArticleItem' import { isPC, ajax, unparam } from 'utils/common'import './index.less'function Home(props) {let [articles, setArticles] = useState([])let { search } = props.locationfunction getArticles(cate = '', num = 10, page = 0) {ajax({url: '/article/articleList',method: 'get',data: { cate, num, page }}).then(res => {setArticles(res.data || [])}).catch(err => console.log(err))}if(search && sessionStorage.getItem('prevCate') !== search) {getArticles(unparam(search).cate)sessionStorage.setItem('prevCate', search)}useEffect(() => {getArticles()return () => {sessionStorage.removeItem('prevCate')}}, [])return <div className="home-wrap"><div className="banner-wrap">{isPC ?<React.Fragment><div className="banner-sider"><div className="tit">{ props.bannerSider.tit }</div><img src={props.bannerSider.imgUrl} alt="" /><div className="desc">{ props.bannerSider.desc }</div></div>{+props.banner.type ?<Carousel autoplay className="banner">{props.banner.bannerList.map((item, i) => (<div key={i}><a className="banner-img" href="" style={{ backgroundImage: 'url('+ item.imgUrl +')'}}><p className="tit">{ item.tit }</p></a></div>))}</Carousel>:<div className="banner"><div className="banner-img" style={{backgroundImage: 'url('+ props.banner.bgUrl +')'}}>{props.banner.label.map((item, i) => (<span className="banner-label" style={{left: 80*(i+1) + 'px'}} key={i}>{ item }</span>))}</div></div>}</React.Fragment>:<Carousel autoplay className="banner">{props.banner.bannerList.map((item, i) => (<a className="banner-img" href="" key={i} style={{ backgroundImage: 'url('+ item.imgUrl +')'}}><p className="tit">{ item.tit }</p></a>))}</Carousel>}</div><div className="article-list"><div className="tit">最新文章</div>{articles.map((item, i) => (<ArticleItem {...item} key={i} />))}</div></div> }export default Home

    文章詳情:

    import React, { useState, useEffect } from "react" import { Button, Modal, Skeleton, Icon } from 'antd' import { ajax, unparam } from 'utils/common' import QTQD from 'images/logo.png' import './index.less'function ArticleDetail(props) {let [isPayShow, setIsPayShow] = useState(false)let [detail, setDetail] = useState(null)let [likeNum, setLikeNum] = useState(0)let [articleContent, setArticleContent] = useState(null)let [isShowLike, setShowLike] = useState(false)function toggleModal(flag) {setIsPayShow(flag)}function getcontent(url) {ajax({url}).then(res => {setArticleContent(res.content)})}function showLike() {if(!isShowLike) {ajax({url: `/article/likeArticle/${unparam(props.location.search).id}`,method: 'post'}).then(res => {setShowLike(true)setLikeNum(prev => prev + 1)})}}useEffect(() => {ajax({url: `/article/${unparam(props.location.search).id}`}).then(res => {setDetail(res.data)setLikeNum(res.data.flover)getcontent(res.data.articleUrl)})return () => {};}, [])return !detail ? <Skeleton active /> :<div className="article-wrap"><div className="article"><div className="tit">{ detail.tit }</div><div className="article-info"><span className="article-type">{ detail.label }</span><span className="article-time">{ detail.time }</span><span className="article-views"><Icon type="eye" />&nbsp;{ detail.views }</span><span className="article-flover"><Icon type="fire" />&nbsp;{ likeNum }</span></div><div className="article-content" dangerouslySetInnerHTML={{__html: articleContent}}></div><div className="article-ft"><div className="article-label"></div><div className="support-author"><p>給作者打賞,鼓勵TA抓緊創作!</p><div className="support-wrap"><Button className="btn-pay" type="danger" ghost onClick={() => toggleModal(true)}>贊賞</Button><Button className="btn-flover" type="primary" onClick={showLike} disabled={isShowLike}>{ !isShowLike ? '點贊' : '已贊'}({likeNum})</Button>{isShowLike && <Icon type="like" className="like-animation" />}</div></div></div></div><div className="sider-bar"><h2>友情贊助</h2><div className="sider-item"><img src={QTQD} alt=""/><p>公眾號《趣談前端》</p></div></div><Modal visible={isPayShow} onCancel={() => toggleModal(false)} width="300px"footer={null}><div className="img-wrap"><img src={props.supportPay.imgUrl} alt={props.supportPay.tit} /><p>{ props.supportPay.tit }</p></div></Modal></div> }export default ArticleDetail

    由于前臺實現起來比較簡單,至于如何定義router,如何使用骨架屏,我都在代碼里寫了完整注釋,感興趣的可以和我交流。

    6.pm2部署以及nginx服務器配置

    pm2做服務器持久化以及nginx做多站點的配置以及如何優化代碼的內容我會用整篇文件做一個詳細的介紹,希望大家有所收獲,如果想學習項目源碼,可以在《趣談前端》學習討論。

    總結

    以上是生活随笔為你收集整理的vue商城项目源码_CMS全栈项目之Vue和React篇(下)(含源码)的全部內容,希望文章能夠幫你解決所遇到的問題。

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

    国产丝袜一区二区三区 | 麻豆传媒电影在线观看 | 国产精品久久久久永久免费看 | 在线视频中文字幕一区 | 亚洲精品欧美视频 | 欧美黄在线 | 在线观看国产区 | 在线高清| 免费激情网 | 国产黄色av | 亚洲专区 国产精品 | av在线网站大全 | 亚洲国产999| 国产一区二区在线播放 | 在线 国产 亚洲 欧美 | 亚洲国产成人精品在线观看 | 亚洲国产成人久久 | 国产中文字幕视频在线观看 | 99久久精品久久久久久清纯 | 99r在线观看 | 18国产精品福利片久久婷 | 欧美性色xo影院 | 国产精品国产三级国产不产一地 | 日韩大片在线看 | 国产午夜精品一区二区三区在线观看 | 在线亚洲观看 | avhd高清在线谜片 | 在线看片中文字幕 | 免费av观看网站 | 亚洲国产中文字幕在线 | 97精产国品一二三产区在线 | 久青草视频 | 九九热国产视频 | 东方av在| www在线免费观看 | 亚洲网站在线看 | 久久视频99 | 国产麻豆果冻传媒在线观看 | 亚洲情感电影大片 | 狠狠躁天天躁综合网 | 国产精品自产拍在线观看蜜 | 一二三四精品 | 高潮久久久久久久久 | 日韩在线观看影院 | 黄色a视频免费 | a视频免费在线观看 | av片子在线观看 | 日本不卡一区二区 | 日韩欧美网站 | 欧美人牲 | 免费91麻豆精品国产自产在线观看 | 99免费在线播放99久久免费 | 久久国产精品免费视频 | mm1313亚洲精品国产 | 婷婷婷国产在线视频 | 欧美在线观看小视频 | 成人毛片网 | 欧美久久99 | 96视频在线 | 久久亚洲精品国产亚洲老地址 | 成年人免费在线看 | 天天操天天操天天操天天 | 天堂va在线观看 | 久久久久久麻豆 | 国产精品久久久久久久婷婷 | 99视频在线观看视频 | 亚洲mv大片欧洲mv大片免费 | 亚洲一二视频 | 91丨九色丨国产在线 | 久久综合影音 | 久久精品久久久久 | 天天射色综合 | av在线等| 91精品国自产在线偷拍蜜桃 | 超碰av在线 | 中文字幕av全部资源www中文字幕在线观看 | 久久免费看av | 美女视频是黄的免费观看 | 国产黄在线免费观看 | 在线播放av网址 | 成人va在线观看 | 在线观看中文字幕2021 | 国产资源网 | av视屏在线 | www色,com | 国产精品美女久久久久久久网站 | 91在线日韩| 欧美日韩二区在线 | 亚洲免费av一区二区 | 91亚色视频 | 玖玖在线资源 | 亚洲免费一级电影 | 成人av在线看| 国产区av在线 | 国产亚洲精品久久久久久无几年桃 | 一区二区三区免费在线观看 | 欧美精品一二三 | 五月婷激情 | 九色在线视频 | 玖玖玖在线观看 | 欧美大片aaa | av品善网| 五月婷婷中文网 | 久久视频在线免费观看 | 高清免费在线视频 | 日韩av一区二区三区在线观看 | 国产一级片在线播放 | av资源免费在线观看 | 成人国产电影在线观看 | 伊人狠狠干 | av夜夜操| 国产亚洲精品久久久久久移动网络 | 欧美日韩国内在线 | 婷婷丁香花 | a v在线视频 | 久久久穴 | 欧美午夜精品久久久久久孕妇 | 国产精品久久久久久久久久久久冷 | 天天操天天色天天射 | 亚洲va欧美va | 中文字幕在线观看网站 | 手机av观看 | 免费黄色av片| 久久久国产在线视频 | 成人黄色av免费在线观看 | 99热这里只有精品在线观看 | av高清在线| 视频成人永久免费视频 | 中文字幕在线观看91 | 久久久久久伊人 | 国产香蕉97碰碰碰视频在线观看 | 成年人在线免费视频观看 | 亚洲免费av观看 | 久久婷婷国产色一区二区三区 | 日日夜色| 日韩日韩日韩日韩 | 蜜臀av夜夜澡人人爽人人桃色 | 波多野结衣在线观看视频 | 成人作爱视频 | 色av网站| 91av电影在线观看 | 91精彩在线视频 | 日韩欧美精品免费 | 日韩高清成人 | 亚洲a成人v| 精品欧美一区二区精品久久 | 国产精品久久久久毛片大屁完整版 | 丁香九月婷婷综合 | 超碰精品在线观看 | 国产一区二区三区免费在线 | 91精品办公室少妇高潮对白 | 色噜噜狠狠色综合中国 | 成人免费网站视频 | 最近2019中文免费高清视频观看www99 | 亚洲国产精品小视频 | 国产生活一级片 | 在线日韩| 97在线视频网站 | 二区三区中文字幕 | 日本中文字幕久久 | 在线国产中文字幕 | 色婷婷亚洲综合 | 亚洲va男人天堂 | 国产一级大片在线观看 | 99爱视频在线观看 | 婷婷综合视频 | 亚洲国产成人精品电影在线观看 | 久久精品99北条麻妃 | 亚洲精品视频在线免费播放 | 9797在线看片亚洲精品 | 成人网看片 | 久久精彩视频 | 伊人久久影视 | 国产91精品一区二区麻豆亚洲 | 国产精品 国产精品 | 久 久久影院| 欧美韩国在线 | 看毛片网站 | 操操操com | 亚洲欧美成aⅴ人在线观看 四虎在线观看 | 久久久精品欧美一区二区免费 | 欧美国产一区二区 | 色99中文字幕 | 中文字幕在线观看免费观看 | 成人av免费在线观看 | 人人爱人人舔 | 日韩在线观看精品 | 99在线观看| 色婷丁香| 国产视频一区精品 | av久久在线| 狠狠狠狠狠狠狠干 | 久久一视频 | 日本黄网站 | 亚洲理论电影 | 成人av免费看 | 99精品影视 | 免费在线视频一区二区 | 2019天天干夜夜操 | www.天天操 | 精品视频9999 | 国产精品麻豆一区二区三区 | 午夜精品电影 | 超碰大片 | 91香蕉视频 mp4 | 欧美一级片在线免费观看 | 91av蜜桃| 在线免费av电影 | 亚洲jizzjizz日本少妇 | 五月婷婷在线综合 | 99日韩精品 | 日韩av在线免费播放 | 欧美一区成人 | 欧美黑吊大战白妞欧美 | 超碰97免费观看 | 天天干天天射天天操 | 果冻av在线 | 国产 一区二区三区 在线 | 在线v片免费观看视频 | 免费观看一区二区 | 六月丁香综合网 | 98涩涩国产露脸精品国产网 | 国产又粗又硬又爽的视频 | 操操操人人人 | 国产成人精品一区二区三区在线观看 | 久久国产视屏 | 国产理论在线 | a级片网站 | 国产视频在线观看一区 | www.888.av| 欧美在线资源 | 久久国产精品影视 | 欧美国产高清 | 高清不卡一区二区在线 | 国产精品免费大片视频 | 视频成人免费 | 一本一本久久a久久精品综合 | 天堂中文在线播放 | 久久国产精品久久久 | 玖玖视频免费在线 | 欧美日韩久久不卡 | 日韩精品一区二区三区在线播放 | 国产精品孕妇 | 日韩综合第一页 | 五月婷在线播放 | 黄色aaa级片| 日韩精品免费在线视频 | 久久久免费精品国产一区二区 | 日本成人中文字幕在线观看 | 国产免费又爽又刺激在线观看 | 久久av观看| 成人一级视频在线观看 | 国产色影院 | 爱爱av网站 | 蜜臀aⅴ国产精品久久久国产 | 久久国产精品久久精品国产演员表 | 激情视频区 | 日韩a欧美 | 亚洲国产免费看 | 国产成人精品一区二区三区 | 波多野结衣电影一区二区三区 | 欧美在线视频日韩 | 久久久久久不卡 | 国内小视频 | av一区二区三区在线观看 | 91尤物国产尤物福利在线播放 | 亚洲综合激情小说 | 国产成人精品一区二区三区 | 国产精品手机看片 | 日韩精品一区二区三区在线播放 | 久久婷婷一区二区三区 | 日本中文字幕在线 | 人人网av| 一级久久久 | 在线精品国产 | 午夜精品成人一区二区三区 | 高清av免费看 | 久久久久久伊人 | 五月激情综合婷婷 | 久久综合中文字幕 | 美女国产在线 | 成人免费一级 | 国产色在线视频 | 国产精品一区二区三区在线免费观看 | 天天撸夜夜操 | 欧美日韩一区二区在线观看 | 久精品视频| 九九九免费视频 | 天堂av网站 | 久久超 | av成年人电影| 精品国产一区二区三区av性色 | 五月激情综合婷婷 | www.69xx | 在线电影播放 | 深夜免费福利视频 | 丁香久久五月 | 91日韩精品一区 | 欧美成天堂网地址 | 美女视频久久 | 欧美一级乱黄 | 欧美黑人性爽 | 最近更新好看的中文字幕 | 免费观看成人网 | 国精产品永久999 | 在线亚洲观看 | 色资源在线观看 | 又黄又爽又色无遮挡免费 | 亚洲热视频 | 又黄又爽又湿又无遮挡的在线视频 | 免费观看的av网站 | 国语自产偷拍精品视频偷 | 亚洲黄色app | 欧美a影视 | 一区二区三区四区在线 | 69国产成人综合久久精品欧美 | 国产精品久久久久影视 | 97夜夜澡人人双人人人喊 | 日韩精品中文字幕在线不卡尤物 | 黄色日视频 | 国产高清不卡 | 中文字幕国产一区 | 91视频这里只有精品 | 国产成人精品一区二区三区在线观看 | 特级毛片在线观看 | 成年人app网址 | 国产字幕在线看 | 国产成视频在线观看 | 精品久久精品久久 | 亚洲午夜精品久久久久久久久 | 亚洲精品www久久久久久 | 亚洲欧洲成人精品av97 | 五月天伊人网 | 美女久久久 | 国产成人av电影 | av片中文字幕 | 最新av免费 | 欧美色噜噜 | 免费看一级特黄a大片 | 国产精品高潮呻吟久久av无 | 特级毛片爽www免费版 | 婷婷草 | 91大神精品视频 | 午夜免费视频网站 | 色在线中文字幕 | 97理论片 | 99精品视频网站 | 中文字幕在线电影 | 丰满少妇在线观看 | 日本视频高清 | 久久久精品网站 | 综合网天天色 | 成人97视频 | 中文字幕在线一二 | 欧洲色综合 | 夜夜躁狠狠躁日日躁视频黑人 | 久久人人爽人人爽人人片av免费 | 丁香五月亚洲综合在线 | 国产在线播放不卡 | 亚洲欧美少妇 | 久久综合欧美 | 黄色三级在线 | 蜜臀av免费一区二区三区 | www.天天草 | 国产精品久久久久久99 | 亚洲黄色在线观看 | 国产福利小视频在线 | 久久精品影视 | 在线黄色免费av | 亚洲人成精品久久久久 | 国产精品99久久久久久久久久久久 | 99免费在线观看视频 | 国产精品毛片久久久久久久 | 久久视频免费 | 中文字幕资源在线 | 日本在线观看一区二区 | 欧美午夜精品久久久久久浪潮 | 日韩视频1区 | 日本精品一二区 | 欧美性色综合网 | a精品视频 | 夜色资源网 | 五月开心六月伊人色婷婷 | 国产精品久久久久久久久久不蜜月 | 久草在线免费资源 | 亚洲综合小说电影qvod | 国产精品久久久久三级 | 国产视频久久 | 久久精选视频 | 亚洲国产精品500在线观看 | 亚洲91在线 | 久久亚洲专区 | 免费色婷婷 | 九七视频在线观看 | av大全在线| 亚洲成av | 在线免费色视频 | 粉嫩av一区二区三区四区五区 | 成人久久视频 | 99精品系列 | 国产高清 不卡 | 丁香婷婷综合五月 | 日韩高清免费无专码区 | 日本久久高清视频 | 免费黄色在线播放 | 成人在线免费av | 天天玩天天干天天操 | 国产香蕉在线 | 天天色天天色天天色 | 亚洲高清在线视频 | 日本夜夜草视频网站 | 亚洲综合激情小说 | 久久人网| 91视频观看免费 | 天堂麻豆| 黄色综合 | 久久精品国产亚洲 | 亚洲最新在线视频 | 色综合久久网 | 国产中文字幕一区二区 | 色丁香婷婷 | 深爱激情综合 | 国产区久久| 久久精品99国产精品日本 | 亚洲国产理论片 | 久久经典国产视频 | 日韩国产精品久久久久久亚洲 | 美女久久网站 | 操操操人人人 | 免费av小说 | 狠狠色伊人亚洲综合网站色 | 粉嫩aⅴ一区二区三区 | 国产精品一区二区三区免费看 | 国产黄色片久久 | 91大片成人网 | 最近中文字幕免费av | 欧美国产高清 | 91亚洲成人| 香蕉久久久久久av成人 | 精品国产免费观看 | 免费视频18 | 久久精品国产亚洲精品2020 | 亚州精品天堂中文字幕 | 中文在线免费视频 | 2018好看的中文在线观看 | 在线观看爱爱视频 | 激情深爱| 狠狠撸电影 | 亚洲午夜久久久久 | 亚洲欧洲精品视频 | 久久精品99国产 | 久久伦理| 看毛片网站 | 精品国产电影一区 | 免费av高清| 在线观看视频三级 | 亚洲免费观看在线视频 | 色停停五月天 | 久草热久草视频 | 久久久蜜桃一区二区 | 91麻豆看国产在线紧急地址 | 黄色免费国产 | av 一区二区三区 | 美女视频国产 | www五月天 | 96精品视频| 免费看的黄色小视频 | 狠狠色狠狠综合久久 | 亚洲国产97在线精品一区 | 中文字幕在线观看完整版电影 | 国产aa免费视频 | 亚洲精品网站在线 | 夜夜躁日日躁狠狠久久av | 在线观看成人国产 | 精品国产一区二区三区久久久蜜臀 | 最近能播放的中文字幕 | 在线日本看片免费人成视久网 | 99免费精品 | 国产精品www | 亚洲伊人婷婷 | 91亚洲视频在线观看 | 久久这里只有精品首页 | 日韩欧美视频在线播放 | 蜜桃av久久久亚洲精品 | h网站免费在线观看 | 热99久久精品 | 97视频免费在线 | 久久久久北条麻妃免费看 | 97视频免费在线观看 | 日韩动态视频 | 在线欧美小视频 | 天天夜夜操| 日韩色在线观看 | 国产精品初高中精品久久 | 久久亚洲美女 | 日韩精品在线观看av | 亚洲精品国精品久久99热一 | 精品国产一区二区三区在线 | 久久精品亚洲一区二区三区观看模式 | 久久99久久99精品免观看软件 | 在线观看黄a | 在线视频 影院 | 国产一区二区三区四区在线 | 国产麻豆精品久久一二三 | 国产精品美女毛片真酒店 | 操碰av | 一区二精品 | 亚洲精品视频在线观看免费视频 | 日韩在线播放欧美字幕 | 91在线观 | 国产精品久久久久久久久搜平片 | 亚洲成人午夜在线 | 久久久久久久久久久国产精品 | 91九色性视频 | 综合在线观看色 | 欧美精品久久人人躁人人爽 | 欧美色精品天天在线观看视频 | 91精品爽啪蜜夜国产在线播放 | 亚洲专区在线播放 | 亚洲精品在线观看的 | 激情婷婷网 | 免费观看的黄色片 | 6080yy午夜一二三区久久 | 中文一区二区三区在线观看 | 久久涩涩网站 | 欧美精彩视频在线观看 | 精品久久国产 | 黄色国产大片 | 97在线观看免费高清完整版在线观看 | 91精品国自产在线偷拍蜜桃 | 日韩精品 在线视频 | 91免费在线播放 | 国产一二三在线视频 | 最近中文字幕免费av | 草久在线观看 | 黄色app网站在线观看 | 中文字幕在线国产 | 国产精品综合久久 | 黄色日批网站 | 免费视频xnxx com | 国内精品二区 | 人人搞人人爽 | 黄色三几片 | 日韩电影中文字幕在线观看 | 91网站免费观看 | 婷婷六月中文字幕 | 欧美久久九九 | 婷婷新五月| 国产成人精品一区二区三区网站观看 | 成 人 a v天堂 | 久久久午夜精品理论片中文字幕 | 免费视频久久 | 一区二区三区在线视频观看58 | 国产成人免费观看久久久 | 久精品在线 | 亚洲精品久久久久999中文字幕 | 欧美特一级片 | 亚洲成a人片在线观看网站口工 | 高清视频一区 | 久久久久久久久久久国产精品 | 日韩av不卡在线播放 | 在线视频一二区 | 人人插人人费 | 97色在线观看免费视频 | a黄色| 久久大片 | 久久久一本精品99久久精品66 | 99久久精品国产欧美主题曲 | 91精品看片| a级国产片 | 福利视频网站 | 五月激情片 | 丁香婷婷综合色啪 | 久草在线一免费新视频 | 日韩专区一区二区 | 国产精品久久久久久欧美 | 四虎在线免费观看 | 成年人在线观看网站 | 500部大龄熟乱视频 欧美日本三级 | 正在播放国产精品 | 亚洲va欧洲va国产va不卡 | 91av原创| 五月开心激情网 | 久草免费手机视频 | 在线观看福利网站 | 久久久久久久久电影 | 日韩精品一区二区免费视频 | 在线天堂8√ | 久久久精品在线观看 | 免费电影一区二区三区 | 国产在线专区 | 亚洲日韩精品欧美一区二区 | 天天操天天干天天摸 | 中文字幕日韩一区二区三区不卡 | 免费日韩 精品中文字幕视频在线 | 最近2019年日本中文免费字幕 | 亚洲激情av | 久久综合亚洲鲁鲁五月久久 | 久久黄色免费 | 国产日韩欧美在线影视 | 中文字幕亚洲综合久久五月天色无吗'' | 成人18视频 | 青草视频在线 | 欧美日韩免费观看一区二区三区 | 中文字幕色综合网 | 婷婷色中文字幕 | 国产精品乱码久久久久 | 看av在线| 91视频-88av| 日韩在线电影观看 | 日p视频| 天天射天天色天天干 | 美女免费视频一区 | 中文字幕日本在线观看 | 一区二区成人国产精品 | 国产精品一区一区三区 | 国产婷婷久久 | 亚洲视频精品在线 | 国产色 在线| 亚洲精品国产精品久久99 | 精品美女久久久久 | 色久五月| 97福利在线观看 | 欧美亚洲三级 | 在线电影播放 | 999视频在线播放 | 中文字幕在线人 | 亚洲精品国产成人 | 免费三级影片 | 狠狠操综合 | 欧美影院久久 | 欧美一二区视频 | 最近2019中文免费高清视频观看www99 | 中文字幕乱码在线播放 | 日韩av成人 | 激情网第四色 | 天天操天天色天天 | 国产黄色精品网站 | 在线视频18在线视频4k | 国产精品乱码久久久 | 精品三级av | 久久久久久久久影院 | 久久综合久久综合久久 | 人人澡人人爽欧一区 | 黄色av一级片| 色综合www | 色狠狠操| 人人舔人人插 | 国产精品自拍在线 | 天天色天天草天天射 | 日韩色视频在线观看 | 免费在线色 | 香蕉视频在线播放 | 日韩精品一区二区不卡 | 国产剧情一区在线 | 九九视频免费在线观看 | 超碰人人超 | 国产精品视频线看 | 国语对白少妇爽91 | 亚洲精品乱码久久久久久蜜桃91 | 国产精品美女免费看 | 免费网站黄 | 成人av免费在线播放 | 天天色天天操综合 | 日韩激情片在线观看 | 日韩高清dvd | 欧美国产日韩一区二区 | 日本精品小视频 | 808电影 | 九色视频网 | 狠狠干狠狠色 | 最近中文字幕视频网 | 欧美日韩观看 | 麻豆视频免费入口 | 中文字幕乱偷在线 | 久久综合精品国产一区二区三区 | 玖玖在线视频观看 | 色婷婷激婷婷情综天天 | 国产精品午夜免费福利视频 | 国产三级在线播放 | 欧美三级在线播放 | 久久久午夜精品福利内容 | 成人黄大片 | 91尤物在线播放 | 亚洲三级黄 | 麻豆视频国产在线观看 | a在线观看免费视频 | 国产一区二区三区在线免费观看 | 久久精品国产亚洲 | 久久综合在线 | 国产国语在线 | 国产精品久久久久9999 | 国产成人在线一区 | 国产破处在线播放 | 亚洲首页 | 日韩一级电影在线观看 | 欧美日韩国产二区三区 | 狠狠干免费 | 欧美热久久 | 国产亚洲婷婷免费 | 久久夜色精品国产欧美乱 | 精品视频免费在线 | 五月婷婷在线视频观看 | 日韩视频精品在线 | 日本最新中文字幕 | 黄色毛片视频免费 | 久久精品国产精品亚洲 | 美女视频黄网站 | 亚洲高清视频在线播放 | 国产在线一区二区 | 午夜精品视频免费在线观看 | 国产精品免费观看网站 | 国产精品wwwwww | 国产 一区二区三区 在线 | 国产精品欧美一区二区 | 欧美日韩二三区 | 色综合久久久久久久 | 91精选在线观看 | 国产精品福利午夜在线观看 | 日韩免费av在线 | 免费观看国产精品 | 又长又大又黑又粗欧美 | 亚洲自拍偷拍色图 | 免费一级片在线观看 | 在线观看福利网站 | www.888.av | 国产剧情在线一区 | 国产一区二区不卡视频 | 日本精品一区二区在线观看 | 精品免费久久久久 | 国产69久久久欧美一级 | 手机成人免费视频 | 免费观看十分钟 | 久久婷婷开心 | www.在线看片.com | 91视频 - 114av | 久久九九九九 | 欧美一级电影免费观看 | 亚洲色综合 | 久久国产露脸精品国产 | 91精品婷婷国产综合久久蝌蚪 | 99久久成人| 麻豆视传媒官网免费观看 | 在线观看日韩 | 天天干天天操天天入 | 91九色蝌蚪视频网站 | 天天综合精品 | 国产精品不卡视频 | 久久夜色精品国产欧美一区麻豆 | 日韩精品不卡在线观看 | 久久精品视频99 | 日韩午夜电影网 | 国内三级在线观看 | 国内精品久久久久影院优 | 成人网看片 | 中文字幕精品一区二区三区电影 | 国产成人免费网站 | 亚洲一级理论片 | 国产精品18p | 亚洲成av人片在线观看 | 国产麻豆精品在线观看 | 午夜神马福利 | 国产玖玖视频 | 亚洲精品资源 | 丁香综合av | 久久99久久精品国产 | 久草在线视频首页 | 久久精品国产亚洲 | 亚洲综合在线一区二区三区 | 久久久久久久国产精品视频 | 最近中文国产在线视频 | av888av.com| 中文字幕日韩免费视频 | 免费网站在线观看人 | 在线观看第一页 | 婷婷丁香国产 | 亚洲九九九在线观看 | 欧美永久视频 | 国产精品手机视频 | 国产小视频在线免费观看视频 | 97天天综合网 | 在线视频 亚洲 | 青青河边草观看完整版高清 | a级黄色片视频 | 在线视频一区二区 | 国产亚洲精品久久久久久 | 成人午夜影院在线观看 | 国产美女视频免费观看的网站 | 91高清完整版在线观看 | 欧美成人亚洲成人 | 欧美日韩不卡在线 | 久草在线观看视频免费 | 夜色资源站国产www在线视频 | 亚洲精品久久久蜜桃直播 | 国产午夜av | 精品国产一区二区三区蜜臀 | 亚洲精品中文字幕在线 | 91成人精品一区在线播放69 | 久久国产精品99精国产 | www.在线观看av | 欧美日韩xx| 国产精品久一 | 国产成人一二片 | 色噜噜日韩精品一区二区三区视频 | 成人免费网站视频 | 国产精品免费小视频 | a黄色影院 | 久久久精品国产一区二区电影四季 | 国产久视频 | 国产黄色免费在线观看 | 8x成人免费视频 | 中文字幕免费不卡视频 | 精品福利视频在线 | 色国产精品一区在线观看 | 国产精品99精品 | 国产精品久久毛片 | 亚洲精品在线二区 | 免费人成在线观看网站 | 色综合久久88 | 国产色拍拍拍拍在线精品 | 精品国产伦一区二区三区观看说明 | 日韩av片无码一区二区不卡电影 | 韩国av一区二区三区在线观看 | 一二三区高清 | av性网站| 91精品推荐 | 色狠狠久久av五月综合 | 精品亚洲va在线va天堂资源站 | 欧美日韩亚洲一 | 国产欧美三级 | 国产成人精品一区二区三区网站观看 | 亚洲视频高清 | 日韩高清一 | 成年人免费看av | 日日碰狠狠添天天爽超碰97久久 | 成 人 黄 色 视频播放1 | 国产精品午夜在线 | 不卡视频一区二区三区 | 日本精品视频在线观看 | 成人a在线观看高清电影 | 美女啪啪图片 | 99中文字幕视频 | 国模精品在线 | 激情网在线视频 | 天天艹天天操 | 亚洲欧洲成人精品av97 | 91大神在线观看视频 | 天天躁日日躁狠狠躁av中文 | 麻豆mv在线观看 | 国产不卡在线观看 | 国产第一二区 | 92av视频| 精品国产电影一区 | 丁香六月激情婷婷 | 欧美性黄网官网 | 成人高清在线观看 | 五月婷婷开心中文字幕 | 在线观看视频99 | 色中色亚洲 | 国产尤物视频在线 | 欧美久久久久久久 | 四虎永久国产精品 | 婷婷丁香自拍 | 婷色在线 | av 一区二区三区四区 | 亚洲午夜久久久久 | 亚洲欧美国产精品18p | 在线中文字母电影观看 | 免费日韩三级 | 狠狠操在线 | 黄色成人在线网站 | 亚洲另类在线视频 | 麻豆视频在线免费 | 日韩在线播放av | 亚洲狠狠婷婷 | 国产看片免费 | 天天色天天干天天色 | 日韩免费看视频 | a午夜电影 | 欧美亚洲三级 | 亚洲国产手机在线 | 国产精品久久久久影院 | 天天操天天舔天天干 | 四虎8848免费高清在线观看 | 国产玖玖精品视频 | 六月丁香色婷婷 | 亚洲成人免费在线 | 日韩爱爱片 | 成人免费看片98欧美 | 久青草视频 | 超碰夜夜 | 久久字幕网 | 久久黄色免费视频 | 日韩高清一二区 | 欧美激情第28页 | 天天草网站 | 亚洲国产精品99久久久久久久久 | 99产精品成人啪免费网站 | 精品美女在线观看 | 国产精品九九久久久久久久 | 91精品成人 | 国产高清视频色在线www | 日韩在线观看精品 | 久久综合中文字幕 | 国产一区二区在线播放视频 | 黄色在线视频网址 | 日韩精品一区二区三区免费观看视频 | a资源在线| 久久久免费少妇 | 午夜视频亚洲 | 一区二区久久久久 | 国产五月婷 | 在线色视频小说 | 欧美激情h| 免费精品国产va自在自线 | 日韩色视频在线观看 | 在线观看av片| 九九视频精品在线 | 国产精品videoxxxx | 国际精品久久久 | 日本中文乱码卡一卡二新区 | 成人午夜在线观看 | 日韩午夜精品福利 | 婷婷六月在线 | 久久久久久久久毛片精品 | 成人在线观看资源 | 国产视频2区 | 国产精品第二十页 | 天天干天天射天天插 | 亚洲资源在线网 | 久久天天拍 | 色婷婷激情电影 | 久久国产精品视频观看 | 欧美精品一区二区蜜臀亚洲 | 97av视频在线 | 久久久久网址 | a级国产乱理论片在线观看 特级毛片在线观看 | 9在线观看免费 | 免费高清在线视频一区· | 国产精品成人在线观看 | 久久人网 | 青青看片 | 色婷婷成人网 | 久久韩国免费视频 | 国产精品9999久久久久仙踪林 | www色,com | 日韩精品免费在线观看视频 | 欧美一级欧美一级 | 免费高清看电视网站 | 99人成在线观看视频 | 日韩欧美在线一区二区 | 婷婷精品国产欧美精品亚洲人人爽 | 久久久久久久18 | 国产91精品高清一区二区三区 | av在线不卡观看 | www.com黄色 | 97视频免费在线看 | 99九九视频 | 午夜av色| 久久午夜免费观看 | 99热在线免费观看 | 91最新在线 | 日韩高清在线一区二区三区 | 久久永久视频 | 日韩免费视频 | 国产在线观看免费观看 | 久久艹艹 | 中文字幕一区二区三区在线观看 | www.看片网站 | 久久精品成人 | 精品在线观看视频 | 国产成人在线看 | 国产精品中文字幕av | 日本黄色片一区二区 | 日韩精品无码一区二区三区 | 亚洲欧美国内爽妇网 | 在线国产小视频 | 人人草网站 | 天天爽天天爽 | 黄色三级免费看 | 国内精品久久久久久中文字幕 | 国产一区欧美在线 | 偷拍区另类综合在线 | 西西www444 | 国产午夜三级 | 欧美久久久久久久久久 | 亚洲jizzjizz日本少妇 | 天天射色综合 | 国产精品免费观看网站 | 日韩精品欧美视频 | 亚洲黄色一级电影 | 天天爽天天摸 | 中文字幕在线日本 | 麻豆 videos | 久久99久久99精品免视看婷婷 | 欧美 亚洲 另类 激情 另类 | 久草五月| 91视频久久久 |