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

手把手搭建Vue3中后臺(tái)框架—初始化項(xiàng)目

開發(fā) 前端
在項(xiàng)目開發(fā)的過(guò)程中,我們需要使用導(dǎo)入文件,可以采用相對(duì)導(dǎo)入和絕對(duì)導(dǎo)入的方式,相對(duì)導(dǎo)入在有些地方需要使用多個(gè)..來(lái)進(jìn)行目錄定位,所以通常我們都使用絕對(duì)定位,為了方便導(dǎo)入,可以給指定目錄設(shè)置別名,引入是就不需要寫長(zhǎng)長(zhǎng)的目錄了。

從今天開始,我們開啟《手把手搭建Vue3中后臺(tái)框架》系列文章,這是一個(gè)我們已經(jīng)在生產(chǎn)中實(shí)際使用的項(xiàng)目,技術(shù)棧是:

  • 前端:Vue3 + TypeScript + Vite + Pinia + NaiveUI

我會(huì)在工作之余抽時(shí)間把整體框架的開發(fā)過(guò)程一點(diǎn)一點(diǎn)寫出來(lái),另外UI組件庫(kù)我將更換為NaiveUI 有技術(shù)不到位的地方,希望大家能指正出來(lái)。今天我們就從項(xiàng)目創(chuàng)建開始。

使用 Vite 創(chuàng)建項(xiàng)目

pnpm create vite

√ Project name: ... OpenDataV
√ Select a framework: ? vue
√ Select a variant: ? vue-ts

啟動(dòng)項(xiàng)目

cd OpenDataV
pnpm install
pnpm run dev

配置基礎(chǔ)開發(fā)功能

創(chuàng)建完項(xiàng)目后,我們需要配置一些基礎(chǔ)功能來(lái)滿足開發(fā)要求,主要有以下幾點(diǎn):

  • 目錄別名配置
  • 打包配置
  • 開發(fā)服務(wù)配置
  • 環(huán)境變量的使用配置

目錄別名配置

在項(xiàng)目開發(fā)的過(guò)程中,我們需要使用導(dǎo)入文件,可以采用相對(duì)導(dǎo)入和絕對(duì)導(dǎo)入的方式,相對(duì)導(dǎo)入在有些地方需要使用多個(gè)..來(lái)進(jìn)行目錄定位,所以通常我們都使用絕對(duì)定位,為了方便導(dǎo)入,可以給指定目錄設(shè)置別名,引入是就不需要寫長(zhǎng)長(zhǎng)的目錄了。

首先在在vite.config.ts中增加別名配置:

import { resolve } from 'path'

export default defineConfig({
  plugins: [vue()],
  resolve: {
    alias: [
      {
        find: /@\//,
        replacement: resolve(__dirname, 'src') + '/'
      }
    ],
    extensions: ['.ts', '.js', '.jsx', '.tsx'],
  }
})

在使用path這個(gè)包之前,需要安裝@types/node這個(gè)包,因?yàn)槲覀兪褂玫氖莟s,所以在項(xiàng)目當(dāng)中就會(huì)有ts類型檢查。因?yàn)橛泻芏鄮?kù)并沒有遷移至ts,所以ts提供了一種中間的處理方式,就是.d.ts文件,用來(lái)給特定的庫(kù)添加類型說(shuō)明。node本身并沒有遷移至ts,所以我們?cè)谑褂靡恍﹏ode庫(kù)的時(shí)候就會(huì)報(bào)錯(cuò),因此就需要安裝類型說(shuō)明:@types/node,只要安裝在開發(fā)依賴下即可。

extensions的配置是使用別名時(shí)要忽略的文件后綴,官方不建議忽略.vue后綴,因此我們只配置了.ts、.js、.tsx、.jsx

配置完vite以后,我們還要配置tsconfig.json文件,讓ts也認(rèn)識(shí)這個(gè)別名。

{
  "compilerOptions": {
    "baseUrl": "./",  // 基礎(chǔ)根目錄
    "paths": {
      "@/*": ["src/*"]
    }
}

配置好別名以后,就可以在引入模塊時(shí)使用了。

打包配置

主要是配置打包的目標(biāo)版本和分塊大小,target表示在打包時(shí)無(wú)論我們使用的是哪個(gè)版本的JavaScript標(biāo)準(zhǔn),都處理成es2015兼容版本。

build: {
  target: 'es2015',
  chunkSizeWarningLimit: 1500
}

開發(fā)服務(wù)配置

當(dāng)我們創(chuàng)建好項(xiàng)目啟動(dòng)的時(shí)候,默認(rèn)啟動(dòng)項(xiàng)目的時(shí)候只能通過(guò)localhost訪問(wèn),而且端口并不是我們指定的,所以我們首先要配置訪問(wèn)限制,方便其他人也能查看我們的開發(fā)頁(yè)面,并要指定端口。

server: {
  https: false,
  host: true,
  port: 3000
}

開發(fā)過(guò)程中一般不需要啟用https,host可以配置為指定IP,也可以配置為布爾型,如果我們希望所有IP都能訪問(wèn),可以將其配置為0.0.0.0或者true

除了以上配置外,還有一個(gè)配置項(xiàng)proxy,這是一個(gè)代理配置,可以理解為網(wǎng)絡(luò)代理,就是把我們的請(qǐng)求代理到其他的地址。要搞清楚proxy的用法,首先我們要了解前后端分離以后前端是怎么獨(dú)立運(yùn)行的。

在傳統(tǒng)的web開發(fā)過(guò)程中,一般是通過(guò)后端來(lái)渲染前端頁(yè)面數(shù)據(jù),例如我們使用的Django Jinjia模板等。這個(gè)時(shí)候在開發(fā)的過(guò)程中就需要把整個(gè)服務(wù)跑起來(lái)。但是前后端分離的開發(fā)模式將前端和后端徹底分開了,僅通過(guò)API連接起來(lái),這就使得前端開發(fā)的時(shí)候并不需要后端服務(wù)器,這種方式是怎么做到的呢?其實(shí)就是前端自己?jiǎn)?dòng)一個(gè)服務(wù)器來(lái)渲染前端頁(yè)面數(shù)據(jù),而不是通過(guò)后端渲染,只通過(guò)API來(lái)獲取后端數(shù)據(jù)。

前后端完全分離的開發(fā)模式使得前端與后端的鏈接僅僅是中間的數(shù)據(jù)。那么如果在功能開發(fā)前就定義好接口和返回的數(shù)據(jù)格式,前端就可以通過(guò)假數(shù)據(jù)來(lái)測(cè)試已開發(fā)的功能,不需要等后端開發(fā)完后才能測(cè)試。對(duì)于假數(shù)據(jù)我們有多種方式去實(shí)現(xiàn)它,最常見的就是mock,因?yàn)榍岸艘呀?jīng)有了自己的服務(wù)器,我們只要把假數(shù)據(jù)寫到j(luò)son文件中,通過(guò)前端服務(wù)器發(fā)給前端頁(yè)面就可以了。實(shí)際上依然是前端從服務(wù)器拿到數(shù)據(jù)再渲染頁(yè)面,只不過(guò)這個(gè)服務(wù)器是前端的自己?jiǎn)?dòng)的,而數(shù)據(jù)是固定的假數(shù)據(jù)而已。

理解上這個(gè)過(guò)程以后,我們?cè)賮?lái)看看proxy這個(gè)配置的意義。因?yàn)槲覀兒秃蠖思s定好了接口和返回?cái)?shù)據(jù)的格式,因此在編寫前端頁(yè)面的時(shí)候我們就可以寫好這些請(qǐng)求和處理,但是我們的前端可以要從多個(gè)后端獲取數(shù)據(jù)或者我們開發(fā)的時(shí)候是從本地服務(wù)器獲取數(shù)據(jù),但是聯(lián)調(diào)的時(shí)候又要從真實(shí)后端獲取數(shù)據(jù),這個(gè)時(shí)候proxy就派上用場(chǎng)了。我們先來(lái)看一下proxy的配置示例:

proxy: {
  // 字符串簡(jiǎn)寫寫法
  '/foo': 'http://localhost:4567',
  // 選項(xiàng)寫法
  '/api': {
     target: 'http://jsonplaceholder.typicode.com',
     changeOrigin: true,
     rewrite: (path) => path.replace(/^\/api/, '')
  }
}

proxy是通過(guò){key: options}的方式去配置的,其中key是請(qǐng)求的前綴,而options則是我們需要轉(zhuǎn)發(fā)的實(shí)際地址,例如以上示例:

  • /foo開頭的請(qǐng)求轉(zhuǎn)發(fā)到地址:http://localhost:4567。

也就是說(shuō)當(dāng)我們?cè)谇岸税l(fā)送了/foo/xxx這個(gè)請(qǐng)求后,實(shí)際的請(qǐng)求會(huì)發(fā)送到http://localhost:4567這個(gè)服務(wù)去,而得到的返回值也是從這里發(fā)回來(lái)的。

  • /api開頭的請(qǐng)求轉(zhuǎn)發(fā)到地址:http://jsonplaceholder.typicode.com,并將地址中的api去掉。

也就是說(shuō)/api/user/info這個(gè)請(qǐng)求最終會(huì)變成http://jsonplaceholder.typicode.com/user/info請(qǐng)求。

通過(guò)代理的這種方式我們就可以很方便的切換數(shù)據(jù)來(lái)源,但是要注意了,這只是在開發(fā)階段使用,如果部署到生產(chǎn)環(huán)境后就失效了,因?yàn)樵谏a(chǎn)環(huán)境我們前端是不會(huì)啟動(dòng)自有服務(wù)器的,通常都是通過(guò)nginx服務(wù)進(jìn)行靜態(tài)資源的轉(zhuǎn)發(fā)。所以要記住了:以上只在開發(fā)階段有用

明確了以上知識(shí)點(diǎn),那么proxy的配置就根據(jù)實(shí)際情況了使用了。在這里我們先不配置。

環(huán)境變量的使用配置

在前端開發(fā)過(guò)程中,我們有很多有很多配置,現(xiàn)在通常都使用環(huán)境變量的方式配置,而vite也默認(rèn)支持這種方式,在運(yùn)行 vite 命令時(shí),開發(fā)環(huán)境默認(rèn)加載 .env.development,生產(chǎn)環(huán)境默認(rèn)加載 .env.production,因此我們只需要配置對(duì)應(yīng)的文件即可。

一般的環(huán)境變量有三個(gè)文件:

  • .env 任何情況下都會(huì)加載。
  • .env.development 開發(fā)模式下加載。
  • .env.production 生產(chǎn)模式下加載。

目前我們需要配置的有以下幾個(gè)變量:

# 網(wǎng)站標(biāo)題
VITE_APP_TITLE = '后臺(tái)管理'

# 端口
VITE_APP_PORT = 8800

# 后端地址
VITE_APP_BASE_URL = 'http://localhost:9527'

這里的端口是我們前端服務(wù)器的端口,因此需要在vite.config.ts中引用,我們需要對(duì)這個(gè)文件做一些修改,將默認(rèn)的加載方式改為函數(shù)加載:

import type { UserConfigExport, ConfigEnv } from 'vite';
import { loadEnv } from 'vite';
import vue from '@vitejs/plugin-vue';
import { resolve } from 'path';

// https://vitejs.dev/config/
export default ({ mode }: ConfigEnv): UserConfigExport => {
  const { VITE_APP_PORT } = loadEnv(mode, process.cwd());

  return {
    plugins: [vue()],
    resolve: {
      alias: [
        {
          find: /@\//,
          replacement: resolve(__dirname, 'src') + '/',
        },
      ],
      extensions: ['.ts', '.js', '.jsx', '.tsx'],
    },
    server: {
      https: false,
      host: true,
      port: Number(VITE_APP_PORT),
    },
    build: {
      target: 'es2015',
      chunkSizeWarningLimit: 1500,
    },
  };
};

修改了導(dǎo)入方式,并且通過(guò)vite提供的loadEnv函數(shù)加載對(duì)應(yīng)的環(huán)境變量文件,然后獲取其中的環(huán)境變量,并修改server中配置的port

配置代碼格式化

一個(gè)好的項(xiàng)目,必須有統(tǒng)一的代碼風(fēng)格,但是在實(shí)際開發(fā)當(dāng)中通常都是多人協(xié)作開發(fā),因此我們必須想辦法統(tǒng)一大家的風(fēng)格,在前端開發(fā)中我們可以使用ESlintPrettier進(jìn)行代碼風(fēng)格統(tǒng)一配置。

在這之前每次我都把之前項(xiàng)目中的配置挪用到新的項(xiàng)目中,直到我發(fā)現(xiàn)eslint-config-alloy,這個(gè)項(xiàng)目是把最常用的配置幫我們做好了,因此我們可以很方便的使用它。

安裝相關(guān)的包

首先安裝typescriptvue的相關(guān)支持。

pnpm install -D @babel/core @babel/eslint-parser @typescript-eslint/eslint-plugin @typescript-eslint/parser @vue/eslint-config-typescript eslint eslint-config-alloy eslint-plugin-vue vue-eslint-parser

在配置eslintprettier之前需要說(shuō)明的是必須使用.cjs作為配置文件的后綴,因?yàn)檫@些命令模式采用commonjs,而我們創(chuàng)建的項(xiàng)目package.jsontype: module,要么選擇修改package.json中的配置,要么采用.cjs后綴,我推薦使用.cjs后綴。

配置eslint

在項(xiàng)目根目錄增加.eslintrc.cjs文件,配置如下:

module.exports = {
  extends: [
    'alloy',
    'alloy/vue',
    'alloy/typescript',
  ],
  parser: 'vue-eslint-parser',
  parserOptions: {
    parser: {
      js: '@babel/eslint-parser',
      jsx: '@babel/eslint-parser',

      ts: '@typescript-eslint/parser',
      tsx: '@typescript-eslint/parser',
    },
  },
  env: {
    // 你的環(huán)境變量(包含多個(gè)預(yù)定義的全局變量)
    browser: true,
    node: true
  },
  globals: {
    // 你的全局變量(設(shè)置為 false 表示它不允許被重新賦值)
    //
    // myGlobal: false
  },
  rules: {
    // 自定義你的規(guī)則
    '@typescript-eslint/prefer-optional-chain': 'off',
  },
};

不要問(wèn)我為什么,安裝官方給的配置就可以了。

配置prettier

然后增加.prettierrc.cjs文件,配置如下:

module.exports = {
  // 一行最多 120 字符
  printWidth: 120,
  // 使用 2 個(gè)空格縮進(jìn)
  tabWidth: 2,
  // 不使用縮進(jìn)符,而使用空格
  useTabs: false,
  // 行尾需要有分號(hào)
  semi: true,
  // 使用單引號(hào)
  singleQuote: true,
  // 對(duì)象的 key 僅在必要時(shí)用引號(hào)
  quoteProps: 'as-needed',
  // jsx 不使用單引號(hào),而使用雙引號(hào)
  jsxSingleQuote: false,
  // 末尾需要有逗號(hào)
  trailingComma: 'none',
  // 大括號(hào)內(nèi)的首尾需要空格
  bracketSpacing: true,
  // jsx 標(biāo)簽的反尖括號(hào)需要換行
  bracketSameLine: false,
  // 箭頭函數(shù),只有一個(gè)參數(shù)的時(shí)候,也需要括號(hào)
  arrowParens: 'always',
  // 每個(gè)文件格式化的范圍是文件的全部?jī)?nèi)容
  rangeStart: 0,
  rangeEnd: Infinity,
  // 不需要寫文件開頭的 @prettier
  requirePragma: false,
  // 不需要自動(dòng)在文件開頭插入 @prettier
  insertPragma: false,
  // 使用默認(rèn)的折行標(biāo)準(zhǔn)
  proseWrap: 'preserve',
  // 根據(jù)顯示樣式?jīng)Q定 html 要不要折行
  htmlWhitespaceSensitivity: 'css',
  // vue 文件中的 script 和 style 內(nèi)不用縮進(jìn)
  vueIndentScriptAndStyle: false,
  // 換行符使用 lf
  endOfLine: 'lf',
  // 格式化嵌入的內(nèi)容
  embeddedLanguageFormatting: 'auto',
  // html, vue, jsx 中每個(gè)屬性占一行
  singleAttributePerLine: false
};

這個(gè)配置里詳細(xì)說(shuō)明了每一項(xiàng)的意思,可以根據(jù)自己的需求修改。除了這些配置外,我們還要配置vscode,以保證所有人編輯項(xiàng)目是都采用同樣的設(shè)置。

配置.vscode/settings.json

配置.vscode/settings.json文件。

{
  // 使用項(xiàng)目的typescript而不是vscode自帶的
  "typescript.tsdk": "./node_modules/typescript/lib",
  "eslint.validate": [
    "javascript",
    "javascriptreact",
    "vue",
    "typescript",
    "typescriptreact"
  ],
  "editor.formatOnSave": true,
  "editor.codeActionsOnSave": {
    "source.fixAll.eslint": true
  },
  "files.eol": "\n",
  "editor.tabSize": 2,
  "editor.defaultFormatter": "esbenp.prettier-vscode",
  "[jsonc]": {
    "editor.defaultFormatter": "esbenp.prettier-vscode"
  }
}

配置完以后,有可能你會(huì)發(fā)現(xiàn)不生效,這時(shí)重啟一下vscode,嘗試一下是否會(huì)格式化,如果格式化異常可以查看一下問(wèn)題:

  • 默認(rèn)格式化工具是否為prettier。

在隨便一個(gè)文件內(nèi)容中右鍵,選擇“使用...格式化文檔”,會(huì)在編輯器上方彈出格式化工具。

默認(rèn)工具一定要是Prettier,如果不是就選擇下面的“配置默認(rèn)格式化程序”,修改為Prettier。

  • Prettier工具的運(yùn)行狀態(tài)。

查看編輯器右下角的Prettier前面是否為對(duì)號(hào),如果不是就點(diǎn)擊這里,會(huì)在看到輸出日志,日志中的報(bào)錯(cuò)信息會(huì)告訴我們?nèi)绾涡迯?fù)。我在上面使用的.cjs就是日志中提示的方式。

一般完成了這些問(wèn)題,基本就可以正常使用了。

最后我們?cè)?/span>package.json中的scripts里添加eslint格式化命令:

"lint": "eslint --ext .js,.ts,.vue src/ --fix"

配置husky

配置好代碼格式化以后,我們也無(wú)法保證開發(fā)人員會(huì)按照要求去寫代碼,因此需要做強(qiáng)制的檢測(cè),在提交代碼前,執(zhí)行檢測(cè),所以我們需要增加Git Hook鉤子,在執(zhí)行g(shù)it commit命令時(shí)執(zhí)行指定的檢測(cè)腳本或者命令。

要注意:項(xiàng)目必須是已經(jīng)上傳到Git倉(cāng)庫(kù)才能使用此工具。

首先安裝好對(duì)應(yīng)的工具

pnpm install -D husky

使用一下命令在項(xiàng)目根目錄下增加husky相關(guān)配置

# 增加配置文件,在項(xiàng)目根目錄下執(zhí)行此命令,會(huì)生成.husky目錄
npx husky install

# 增加鉤子攔截配置
npx husky add .husky/pre-commit "pnpm lint"

到這里項(xiàng)目初始化就完成了,我們還有一些其他的配置需要做,這個(gè)就留在下一節(jié)吧。

責(zé)任編輯:姜華 來(lái)源: 今日頭條
相關(guān)推薦

2023-07-30 15:11:03

Vue3第三方組件庫(kù)

2022-08-01 11:41:00

Vue插件

2022-07-26 01:06:18

Vue3自定義指令

2022-01-26 11:00:58

源碼層面Vue3

2020-11-03 14:10:29

Vue服務(wù)端渲染前端

2024-12-16 11:32:31

2022-03-24 15:28:43

Vue開發(fā)框架

2022-03-14 14:47:21

HarmonyOS操作系統(tǒng)鴻蒙

2021-12-02 11:39:28

Git服務(wù)器Linux

2023-11-29 08:49:31

Vue.jsData 函數(shù)

2009-12-11 09:04:10

Windows搭建Li

2011-03-25 12:45:49

Oracle SOA

2022-06-30 08:13:44

PythonWeb編程語(yǔ)言

2018-05-14 16:34:08

Python網(wǎng)絡(luò)爬蟲Scrapy

2010-07-06 09:38:51

搭建私有云

2022-01-04 08:52:14

博客網(wǎng)站Linux 系統(tǒng)開源

2010-07-06 09:43:57

搭建私有云

2025-06-23 02:00:00

2025-02-04 14:55:56

2025-02-26 07:40:25

運(yùn)營(yíng)分析體系運(yùn)營(yíng)策略
點(diǎn)贊
收藏

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

波多野结衣在线播放| 国产精品国产三级国产aⅴ| 国产午夜亚洲精品一级在线| 中文字幕免费不卡| 91性高湖久久久久久久久_久久99| 手机av在线看| 欧美性生活一级片| 欧美日韩中文字幕一区| 水蜜桃在线免费观看| 高清国产mv在线观看| 乱码第一页成人| 久久久极品av| 久久久久亚洲av无码专区桃色| 欧美亚洲大片| 亚洲精品一卡二卡| 欧美在线一区二区三区四区| 国产视频在线观看视频| 亚洲欧美日韩综合国产aⅴ| 日韩在线观看av| 第四色在线视频| 日韩高清一区| 欧美无砖专区一中文字| 成人免费aaa| 大片免费在线看视频| 337p粉嫩大胆色噜噜噜噜亚洲| 成人激情视频小说免费下载| 亚洲欧美偷拍视频| 亚洲激情成人| 另类美女黄大片| 1024手机在线观看你懂的| 欧美一性一交| 精品国产91洋老外米糕| caoporm在线视频| 亚洲伦理影院| 色婷婷久久一区二区三区麻豆| 亚洲乱码日产精品bd在线观看| 91网页在线观看| 国产亚洲欧美一级| 久久精品日韩| 国产精品高清一区二区三区| 亚洲天堂2018av| 青春有你2免费观看完整版在线播放高清| 久久精品国产999大香线蕉| 久久久久久亚洲精品不卡| 九九九视频在线观看| 精品国产乱子伦一区二区| 欧美精品在线一区二区| 黑森林福利视频导航| 污污片在线免费视频| 中文字幕av资源一区| 久久国产精品久久| 中文字幕乱码人妻无码久久| 欧美日韩蜜桃| 另类专区欧美制服同性| 黄色激情小视频| 国产精品片aa在线观看| 国产丝袜一区视频在线观看 | 亚洲sss视频在线视频| 这里只有精品66| jizz日韩| 国产精品三级视频| 色综合视频二区偷拍在线| 青青草观看免费视频在线| 播五月开心婷婷综合| 97se在线视频| 亚洲产国偷v产偷v自拍涩爱| 黄色动漫在线观看| 亚洲综合精品| 久久99国产精品久久久久久久久| 少妇视频在线播放| jlzzjlzz亚洲女人| 正在播放欧美一区| 久久久免费看片| 日韩欧美视频| 最近2019中文免费高清视频观看www99 | 99久久99久久精品免费看小说.| 中文字幕精品影院| 亚洲男人的天堂在线播放| 少妇一级淫片免费放播放| av日韩精品| 欧美精品一区二区三区在线播放 | 日韩精品小视频| 亚洲AV无码国产精品| 亚洲大片精品免费| 亚洲欧美制服第一页| 日本人亚洲人jjzzjjz| 成人写真视频| www.xxxx精品| 国产精品视频一区二区三 | av网站免费线看精品| 久久久久久草| 98在线视频| 国产精品国产a级| 在线观看18视频网站| 怡红院av在线| 欧美日韩亚洲成人| 亚洲精品一二三四五区| 羞羞视频在线观看一区二区| 日韩欧美激情一区| 人妻丰满熟妇av无码久久洗澡| 亚洲精品3区| xvideos成人免费中文版| 日韩欧美色综合| 午夜精品在线免费观看| 99热这里有精品| 亚洲国产欧美精品| 中文字幕有码在线播放| 亚洲综合五月| 国产91精品青草社区| 中文字幕第一页在线播放| 国产美女精品一区二区三区| 国产欧美一区二区在线播放| 成人av一区| 日韩理论片中文av| 成人一级片网站| 日本成人精品| 亚洲欧美在线磁力| 国产少妇在线观看| 久久综合伊人| 91福利入口| 黄色在线观看网| 亚洲夂夂婷婷色拍ww47| 亚洲精品视频导航| 久久草在线视频| 色偷偷91综合久久噜噜| 久久午夜鲁丝片午夜精品| 亚洲一区欧美二区| 91色琪琪电影亚洲精品久久| 日韩欧美在线观看一区二区| 亚洲日本中文字幕区| 欧美一级在线看| 日韩激情欧美| 中文字幕综合在线| 好吊妞视频一区二区三区| 精品一区二区三区免费视频| 精品国产中文字幕| 自拍亚洲图区| 欧美午夜精品久久久久久超碰| 国产高潮视频在线观看| 午夜激情久久| 国产精品99久久久久久人 | 欧美三级视频网站| 最新国产拍偷乱拍精品 | 91国产一区| 亚洲性猛交xxxxwww| 免费在线观看黄网站| 国产成人h网站| gogogo免费高清日本写真| 日本欧美韩国| 亚洲人成网站在线播| 国产成人自拍视频在线| 国产91色综合久久免费分享| 黄色免费高清视频| 日韩黄色碟片| 日韩午夜在线视频| 337p粉嫩色噜噜噜大肥臀| 9l国产精品久久久久麻豆| 免费极品av一视觉盛宴| 精品视频在线播放一区二区三区| 最近2019中文字幕mv免费看| 最近国语视频在线观看免费播放| 久久久五月婷婷| 日本黄网站免费| 免费观看久久av| 日韩av手机在线| 国产资源在线观看| 欧美色视频日本版| 伊人影院综合网| 美国欧美日韩国产在线播放| 一本一本a久久| 欧美一级在线| 久久综合亚洲社区| 99久久久国产精品无码网爆 | 欧美变态凌虐bdsm| 九九热精彩视频| 成人黄色a**站在线观看| 男女私大尺度视频| 麻豆国产欧美一区二区三区r| 久久青草福利网站| 头脑特工队2在线播放| 日韩欧美在线观看视频| 91视频啊啊啊| 日本不卡的三区四区五区| 亚洲一区三区电影在线观看| 国产精区一区二区| 久久久久久美女| 能在线看的av| 欧美精品乱人伦久久久久久| 日韩三级av| 亚洲天堂av图片| 国产精品无码免费播放| 亚洲免费av观看| 天天躁日日躁狠狠躁av麻豆男男| 亚洲茄子视频| 日韩影片在线播放| 欧美男男gaygay1069| 欧美成人免费网| 免费观看黄色一级视频| 精品久久香蕉国产线看观看亚洲| 在线观看日韩精品视频| 奇米一区二区三区av| 欧美在线观看黄| 在线亚洲a色| 91麻豆国产语对白在线观看| gratisvideos另类灌满| 日韩毛片中文字幕| 午夜精品久久久久久久99热黄桃| 婷婷丁香久久五月婷婷| 香蕉成人在线视频| 成+人+亚洲+综合天堂| 九热视频在线观看| 欧美午夜电影在线观看| 日本不卡二区| 亚洲小说春色综合另类电影| 91精品国产亚洲| 免费成人黄色| 亚洲欧洲在线观看| www.亚洲天堂.com| 日本韩国视频一区二区| 免费一级片在线观看| 国产丝袜欧美中文另类| 中文写幕一区二区三区免费观成熟| 国产精品日韩欧美一区| 欧美大片免费播放| 视频福利一区| 精品一卡二卡三卡四卡日本乱码| 国模私拍国内精品国内av| 97国产suv精品一区二区62| 精品国产99久久久久久| 国产亚洲欧美视频| 香蕉视频黄在线观看| 91精品国产免费| 男人天堂视频网| 精品久久久一区| 欧美日韩精品在线观看视频| 国产精品网友自拍| 一区二区精品免费| 99久久99久久精品免费看蜜桃| 99日在线视频| 蜜桃一区二区三区在线观看| 国产女大学生av| 国内精品美女在线观看| 天堂av免费看| 日韩激情图片| 欧美日韩国产三区| 亚洲自拍电影| 久久综合给合久久狠狠色| 欧美第一在线视频| 亚洲一区二区三区乱码aⅴ蜜桃女 亚洲一区二区三区乱码aⅴ | 快射av在线播放一区| 亚洲视频第一页| 人成在线免费视频| 欧美国产三区| 国产成人精品在线播放| 丁香花在线影院| 欧美成人小视频| a级片国产精品自在拍在线播放| 日韩小视频网址| 香蕉视频网站在线观看| 一区二区三区黄色| 欧美一级二级三级区| 国产一区二区三区视频在线观看| 欧美捆绑视频| 亚洲欧美999| 久久电影中文字幕| 亚洲欧美在线看| 成人77777| 最近免费中文字幕视频2019| 黄页视频在线播放| 色阁综合伊人av| 欧美精品电影| 久久成人人人人精品欧| 中文字幕伦理免费在线视频 | 成人网在线免费观看| 亚洲综合伊人| 97超碰人人看人人| jizz性欧美23| 久久久精品国产一区二区三区| 欧美美女啪啪| 日本成人黄色免费看| 精品免费视频| 国产又爽又黄ai换脸| 欧美91大片| 欧美日韩性生活片| 日韩在线观看一区二区| 亚洲一级片网站| 黄色精品一二区| 午夜福利三级理论电影| 91农村精品一区二区在线| 精品国产成人亚洲午夜福利| 国产精品不卡在线观看| 毛片aaaaa| 天天综合天天综合色| 欧美精品韩国精品| 在线综合+亚洲+欧美中文字幕| www.色呦呦| 亚洲伦理中文字幕| 在线观看免费黄色| 欧美区在线播放| 中老年在线免费视频| 国产精品成人一区| 国产精品亚洲欧美一级在线| 欧美日韩高清在线一区| 亚洲精品a级片| 国产二级片在线观看| 蜜桃久久久久久久| 日本一区二区免费视频| 国产亚洲一区二区三区在线观看| 成人高潮免费视频| 日本高清不卡视频| 亚洲国产精品视频在线| 亚洲欧美日韩另类| 亚洲精品白浆| 国产精品欧美日韩久久| 澳门久久精品| 一区二区精品在线| 悠悠资源网久久精品| 亚洲福利精品视频| 99国产精品视频免费观看| 国产wwwwxxxx| 欧美视频在线观看 亚洲欧| 97国产精品久久久| 亚洲女人天堂av| 蜜乳av一区| 成人欧美一区二区三区在线湿哒哒| 亚洲免费专区| 妺妺窝人体色www看人体| 日本视频免费一区| 亚洲少妇18p| 亚洲乱码国产乱码精品精98午夜| 秋霞av一区二区三区| 亚洲国产美女精品久久久久∴| 看黄网站在线| 国产精品91久久久| 日韩精品亚洲aⅴ在线影院| 懂色av一区二区三区四区五区| 国产精品一二| www日本在线观看| 一区精品在线播放| 中文字幕乱码人妻无码久久| 精品视频在线导航| 波多野结衣在线播放| 亚洲在线免费看| 久久在线播放| 男女啪啪网站视频| 久久综合九色综合97婷婷| 四虎成人精品永久免费av| 欧美一区二区国产| 日本a在线播放| 国产福利精品av综合导导航| 欧美日韩性在线观看| 99精品人妻少妇一区二区| 懂色一区二区三区免费观看 | 亚洲日本视频在线| 特级毛片在线免费观看| 麻豆精品国产传媒mv男同| 蜜臀久久99精品久久久久久| 一本色道久久综合亚洲aⅴ蜜桃| 亚洲欧美日韩精品永久在线| 欧美xxxx做受欧美.88| 91亚洲精品视频在线观看| 欧美大黑帍在线播放| 国产成人免费av在线| 久久久久久久久久久久久女过产乱| 在线成人av网站| 免费观看在线午夜影视| 国产在线精品一区免费香蕉| 一区二区影视| 特级特黄刘亦菲aaa级| 亚洲不卡在线观看| 天天操天天操天天干| 欧美一二三视频| 蜜臀av免费一区二区三区| 手机看片一级片| 综合在线观看色| www.久久综合| 91精品国产91久久久久久| 精品一区毛片| 日日摸天天爽天天爽视频| 亚洲婷婷在线视频| 午夜免费福利视频| 欧美精品中文字幕一区| 精品国产伦一区二区三区观看说明 | 中文亚洲av片在线观看| 日韩中文字幕网站| 日韩精品中文字幕吗一区二区| 国产av人人夜夜澡人人爽麻豆| 99在线精品一区二区三区| 日韩xxx高潮hd| 国产一区二区三区久久精品 | 亚洲熟妇av日韩熟妇在线| 久久午夜羞羞影院免费观看| 中文无码精品一区二区三区| 久久精品美女视频网站| 国产精品视频一区视频二区 | 爱啪视频在线观看视频免费| 欧美极品色图| 免费欧美日韩国产三级电影| 日韩精品一卡二卡| 尤物精品国产第一福利三区|