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

多項目集成下的工程腳手架配置方案

開發(fā)
寫本文的目的主要是給大家提供一種思路,以后在遇到工程需要定制化的時候就可以通過更改腳手架的配置來實現(xiàn)。

一、背景

隨著項目的復(fù)雜和功能的增加,一個工程下可能存在多個項目,這個時候我們單獨開項目去開發(fā)的話項目代碼會冗余,項目后期的維護成本也很高,而代碼的冗余會造成靜態(tài)資源包加載時間變長、執(zhí)行時間也會變長,進而很直接的影響性能和體驗。為了解決此問題我們需要實現(xiàn)多項目的分模塊打包,且項目之間共享組件和依賴,運行、打包時互不干擾。

二、應(yīng)用場景

以一個后臺管理系統(tǒng)為例,我們同時有運營管理系統(tǒng)、商家管理系統(tǒng)、設(shè)備管理系統(tǒng),還有一些內(nèi)部的管理系統(tǒng),這幾個系統(tǒng)的菜單管理、權(quán)限管理、用戶管理等相同業(yè)務(wù)模塊較多,業(yè)務(wù)組件以及UI組件都要遵循公司的規(guī)范,這種情況下就可以用一個 ??repo?? 來管理這些系統(tǒng), 所有的設(shè)計文檔、源代碼、文件都放在一個 ??repo?? 里面。

三、技術(shù)方案

本文基于vue-cli3,核心是 ??vue.config.js?? 文件。vue-cli2實現(xiàn)方法類似,核心是 ??webpack.config.js?? 文件,這里不做過多闡述。

1. 功能

  • 項目區(qū)分命令化
  • 項目配置化
  • 路由模塊管理
  • 項目生成腳本化

2. 技術(shù)點

  • process.argv [1] :獲取命令行參數(shù)
  • cross-env [2] :設(shè)置環(huán)境
  • fs-extra [3] :命令行生成項目
  • chalk [4] :命令行美化
  • inquirer [5] :命令行交互
  • node-progress [6] :加載進度條

3. 思路

我們知道在 ??package.json?? 中有項目啟動、打包的命令,我們可以從這里入手。我們的思路大概是這樣的:

  1. 通過命令行輸入的項目名稱打包指定項目   處理命令行參數(shù);
  2. 配置公共文件和項目配置文件;
  3. 設(shè)置當前運行/打包項目( project.js );
  4. 打包項目所需的模塊和資源;
npm run dev projectA           # 運行開發(fā)環(huán)境下的projectA項目
npm run build:dev projectA # 打包開發(fā)環(huán)境下的projectA項目
npm run build projectA # 打包projectA項目

4. 目錄結(jié)構(gòu)

.
├── README.md
├── babel.config.js
├── config # 配置項
│ ├── build.js # 打包配置文件
│ ├── copy.js # 項目生成文件
│ ├── dev.js # 開發(fā)配置文件
│ ├── project.js # 獲取項目項目信息
│ └── projectConfig.js # 項目配置文件(和普通的腳手架配置項一樣)
├── package.json # 項目依賴
├── postcss.config.js # postcss配置文件
├── project # 工程信息配置
│ ├── index.js
│ ├── module # 公共路由模塊
│ └── projects # 公共項目信息
├── public
│ └── index.html
├── src
│ ├── assets # 公共資源文件
│ │ └── logo.png
│ ├── components # 公共組件
│ │ ├── 404.vue
│ │ └── main.vue
│ └── projects # 項目目錄(獨立的路由 狀態(tài)管理 接口請求)
│ ├── projectA
│ ├── projectB
│ └── projectC
├── temp # 項目模板文件(可根據(jù)項目需求定制)
│ ├── App.vue
│ ├── components
│ ├── main.js
│ ├── page
│ │ └── Home.vue
│ ├── router.js
│ └── store.js
├── vue.config.js # 核心配置文件
└── yarn.lock

13 directories, 26 files

好了,我們的視圖目錄結(jié)構(gòu)大概就是上面的樣子,我們期望的是打包 ??src?? 目錄下這個 ??A項目?? 就像打包一個完整的項目一樣。那么如何實現(xiàn)這部分呢?

5. 流程圖

6 項目配置

1) 修改package.json配置

這里就不得不提到 ??cross-env?? 這個模塊,我們之前在生產(chǎn)、沙箱、測試、開發(fā)環(huán)境時也會用到這個命令。

npm i --save-dev cross-env

代碼:

"scripts": {
"serve": "vue-cli-service serve",
"build": "vue-cli-service build",
"lint": "vue-cli-service lint",
"dev": "cross-env NODE_ENV=development node config/dev.js",
"test": "cross-env NODE_ENV=test node config/dev.js",
"pre": "cross-env NODE_ENV=preview node config/dev.js",
"prd": "cross-env NODE_ENV=production node config/dev.js",
"build:dev": "cross-env NODE_ENV=development node config/build.js",
"build:test": "cross-env NODE_ENV=test node config/build.js",
"build:pre": "cross-env NODE_ENV=preview node config/build.js",
"build:prd": "cross-env NODE_ENV=production node config/build.js",
"copy": "node config/copy.js"
}

2) 編寫項目代碼

此版本為 ??簡易demo?? ,配置完運行命令和打包命令我們就可以編寫項目中的業(yè)務(wù)代碼了。

路徑: ??src/projects/projectA/App.vue??

<template>
<div id="app">
<img
alt="項目A"
src="https://dummyimage.com/300x300/FF0097/fff&text=PROJECT-A"
/>
<router-view />
</div>
</template>

<style lang="scss">
......
</style>

路徑: ??src/projects/projectB/App.vue??

<template>
<div id="app">
<img
alt="項目B"
src="https://dummyimage.com/300x300/ff55ee/fff&text=PROJECT-B"
/>
<router-view />
</div>
</template>

<style lang="scss">
......
</style>


3) 配置項目信息

在項目根目錄建立 ??config?? 文件夾,在其中新建 ??projectsConfig.js?? 寫入:

const projectName = require("./project");
const config = {
// $ 項目A
projectA: {
pages: {
index: {
entry: "src/projects/projectA/main.js",
template: "public/index.html",
filename: "index.html",
title: "projectA"
},
},
devServer: {
port: 7777, // 端口地址
}
},
// $ 項目B
projectB: {
pages: {
index: {
entry: "src/projects/projectB/main.js",
template: "public/index.html",
filename: "index.html",
title: "projectB"
},
},
devServer: {
port: 8888, // 端口地址
}
},
// $ 項目C
projectC: {
pages: {
index: {
entry: "src/projects/projectC/main.js",
template: "public/index.html",
filename: "index.html",
title: "projectC"
},
},
devServer: {
port: 9999, // 端口地址
}
},
};

const configObj = config[projectName.name];
// $ 這里導(dǎo)出的是當前運行項目的配置
module.exports = configObj;


4) 運行時配置

開始前先講下 ??process.argv?? 它返回的是一個數(shù)組,其中包含啟動 Node.js 進程時傳入的命令行參數(shù)。第一個元素將是 ??process.execPath?? , 第二個元素將是正在執(zhí)行的 JavaScript文件的路徑,其余元素將是任何其他命令行參數(shù)。

const fse = require("fs-extra");
const chalk = require('chalk');
let projectName = process.argv[2]; // $ 獲取命令行項目名稱
if(!projectName) throw(chalk`{red.bold.bgWhite ------項目不存在,請檢查配置------}`);
console.log(chalk.red.bold(`正在運行---${projectName}項目`), `${process.env.NODE_ENV} 環(huán)境`, )
fse.writeFileSync('./config/project.js', `exports.name = '${projectName}'`)

let exec = require('child_process').execSync;
exec('npm run serve', {stdio: 'inherit'});

Tips:命令行參數(shù)是固定格式 ??npm run dev projectA?? ,少了項目名稱會提示項目不存在。

5) 打包時配置

這里就比較簡單了,根據(jù)當前項目名稱進行打包即可

const projectName = process.argv[2]
const fse = require("fs-extra");

fse.writeFileSync('./config/project.js', `exports.name = '${projectName}'`)
const str = 'npm run build'
const exec = require('child_process').execSync;
exec(str, {stdio: 'inherit'});

6) 配置Vue CLI

  • 通過 process.argv 獲取當前命令行的項目名稱,判斷命令行的項目名稱是否在項目列表里,如果沒有給出異常提示;
  • 設(shè)置當前運行項目的腳手架信息;
  • 終端命令提示;
const path = require('path')
const conf = require('./config/projectConfig'); // $ 當前項目
const chalk = require('chalk'); // $ 終端顏色設(shè)置插件
const ProgressBarPlugin = require('progress-bar-webpack-plugin'); // $ 進度條插件

const PROJECTNAME = require('./config/project.js').name;
if(!conf) throw(chalk`{black.bold.bgWhite ------項目不存在,請檢查配置 777------}`);
const assetsDir = ''

function getAssetPath (assetsDir, filePath) {
return assetsDir
? path.posix.join(assetsDir, filePath)
: filePath
}

module.exports = {
pages: conf.pages, // $ 當前項目頁面
outputDir: "dist/" + projectName + "/", // $ 設(shè)置輸出目錄名
assetsDir: 'static', // $ 增加static文件夾
lintOnSave: process.env.NODE_ENV !== 'production', // $ 是否在開發(fā)環(huán)境下通過 eslint-loader 在每次保存時 lint 代碼
productionSourceMap: false, // $ 是否需要生產(chǎn)環(huán)境的 source map
devServer: conf.devServer, // $ 看項目需求 可配可不配
configureWebpack: {
plugins: [
new ProgressBarPlugin({
width: 50, // 默認20,進度格子數(shù)量即每個代表進度數(shù),如果是20,那么一格就是5。
// format: 'build [:bar] :percent (:elapsed seconds)',
format: chalk.blue.bold("build") + chalk.yellow('[:bar] ') + chalk.green.bold(':percent') + ' (:elapsed秒)',
// stream: process.stderr, // 默認stderr,輸出流
// complete: "~", // 默認“=”,完成字符
clear: false, // 默認true,完成時清除欄的選項
// renderThrottle: "", // 默認16,更新之間的最短時間(以毫秒為單位)
callback() { // 進度條完成時調(diào)用的可選函數(shù)
console.log(chalk.red.bold("---->>>>編譯完成<<<<----"))
}
}),
]
},
// $ 對內(nèi)部的 webpack 配置進行更細粒度的修改
chainWebpack: config => {
// $ 修復(fù)HMR
config.resolve.symlinks(true);
// $ 制定環(huán)境打包js路徑
const filename = getAssetPath(
assetsDir,
`static/js/[name].js`
)
config.mode('production').devtool(false).output.filename(filename).chunkFilename(filename)
config.performance.set('hints', false)
},
css: {
extract: false // $ 是否將組件中的 CSS 提取至一個獨立的 CSS 文件中 (而不是動態(tài)注入到 JavaScript 中的 inline 代碼)
loaderOptions: {
sass: {
implementation: require('sass'),
fiber: require('fibers')
}
}
}
}

配置終端插件的效果圖:

7) 運行效果

寫到這里我們就建立一個完整的小vue項目了,我們運行看看效果:

npm run dev projectA

如圖:

8) 打包效果

npm run build:projectA

cd dist/projectA

live-server --port=9999

??live-server?? 是一個具有實時加載功能的小型服務(wù)器,在項目中用live-server作為一個實時服務(wù)器查看開發(fā)的網(wǎng)頁或項目效果

7. 自動化生成模板項目

1) 流程圖

2) 思路整理

  • 本文涉及到腳手架里邊與命令行交互的知識點,感興趣的可以拷貝文末 demo 去練習下;
  • 這里主要是針對新建的模板做拷貝處理,流程節(jié)點中執(zhí)行拷貝命令后輸入的項目名稱提示在本地已存在是否需要刪除或者覆蓋,根據(jù)實際業(yè)務(wù)場景做處理,這里不做過多探討;
  • 示例代碼涉及到的模板代碼存放在工程根目錄,也可以放在 src 目錄下,不做強制要求;

3) 執(zhí)行命令

npm run copy

4) 示例代碼

  • fs-extra :添加了未包含在 原生fs模塊 中的文件系統(tǒng)方法,并向fs方法添加了promise支持;
  • fse.pathExists :判斷當前要拷貝的項目是否存在;
  • fse.copy :拷貝模板文件到指定目錄;
const fse = require("fs-extra");
const chalk = require("chalk");
const path = require("path");
const inquirer = require("inquirer");
inquirer
.prompt([
{
type: "input",
name: "projectName",
message: "請輸入要生成的項目名稱",
},
])
.then((answers) => {
createProject(answers.projectName);
});

// $ 拷貝項目模板
const createProject = (projectName) => {
const currentTemp = path.join(`./src/projects/${projectName}`);
// $ 判斷當前要拷貝的項目是否存在
fse.pathExists(currentTemp, (err, exists) => {
console.log(err, exists); // $ => null, false
// $ 根據(jù)用戶選擇是否替換本項目或者刪除本項目
if (exists) {
// $ 這里也可以覆蓋原項目或者dong
inquirer
.prompt([
{
type: "input",
name: "projectName",
message: "項目已存在,請重新輸入項目名稱",
},
])
.then((answers) => {
createProject(answers.projectName);
});
// throw chalk`{red.bold.bgWhite >>> ${projectName} <<< 項目已經(jīng)存在}`;
} else {
// $ 拷貝模板文件到指定目錄
fse.copy("./temp", path.join(`./src/projects/${projectName}`), (err) => {
// if (err) return console.error(err)
if (err)
throw chalk`{red.bold.bgWhite ------${projectName}項目拷貝失敗 ${err}------}`;
console.log(chalk.red.bold(`--->>>${projectName}項目拷貝成功`));
});
}
});
};

8 優(yōu)缺點

優(yōu)點:

  • 方便統(tǒng)一管理項目;
  • 項目之間共享組件和依賴;
  • 運行、打包時互不干擾;
  • 支持同時運行多個項目;
  • 對于公共模塊一次提交可以解決所有子項目的問題;

缺點:

  • 執(zhí)行拷貝模板命令后生成的項目需要在 config/projectConfig.js 文件中手動配置項目信息;
  • 隨著項目的增加路由文件的提交在每次代碼的時候都需要進行 Code Review ,不然的話不熟悉項目的同學很可能會在解決沖突的過程中把沖突的模塊刪除;
  • 隨著程序規(guī)模的不斷增加,代碼量的增加,文檔的增加,整個 repo 會變得越來越大;

四、思考

有興趣的童鞋可以考慮以下兩個問題:

  1. 項目中有公共路由我們應(yīng)該如何處理?
  2. 狀態(tài)管理和接口管理在這個工程下如何處理?

五、總結(jié)

通過以上的分析,我們應(yīng)該對同一工程下多項目配置化打包的大概流程有基本的了解,而上邊的方案也只是其中的一種實現(xiàn)方式。寫本文的目的主要是給大家提供一種思路,以后在遇到工程需要定制化的時候就可以通過更改腳手架的配置來實現(xiàn)。

??Demo?? :[https://github.com/licairen/multi_project_demo](

責任編輯:張燕妮 來源: 大轉(zhuǎn)轉(zhuǎn)FE
相關(guān)推薦

2017-07-21 09:56:46

Webpack3 Vue.js腳手架

2021-12-23 10:35:32

SpringCloud腳手架架構(gòu)

2021-01-07 05:34:07

腳手架JDK緩存

2020-05-19 10:13:45

Java開發(fā)代碼

2016-09-07 15:35:06

VueReact腳手架

2025-05-16 07:24:41

Springkafka腳手架

2021-04-13 14:47:53

認證授權(quán)Java

2018-05-15 09:10:27

前端vue.jswebpack

2022-07-11 10:38:06

TienChin項目動態(tài)

2020-03-20 08:32:41

物聯(lián)網(wǎng)腳手架傳感器

2021-05-21 05:22:52

腳手架工具項目

2018-08-30 16:08:37

Node.js腳手架工具

2023-11-21 17:36:04

OpenFeignSentinel

2019-12-25 15:20:48

前端腳手架命令

2018-06-11 14:39:57

前端腳手架工具node.js

2014-08-15 09:36:06

2025-10-10 07:39:09

2024-03-11 13:18:00

RustClap項目

2021-08-30 06:59:06

StrviewAppStrview.js項目

2020-06-29 11:35:02

Spring BootJava腳手架
點贊
收藏

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

日日噜噜夜夜狠狠视频欧美人 | 国产成人综合亚洲网站| 欧美成人久久久| 大乳护士喂奶hd| 成人黄色动漫| 国产欧美一区二区在线| 666精品在线| 日韩精品在线免费看| 日韩成人a**站| 亚洲成年网站在线观看| 欧美三级午夜理伦三级富婆| 变态调教一区二区三区| 国产精品视频免费看| 好吊妞www.84com只有这里才有精品| 天天爽夜夜爽人人爽| 国产一区激情| 日韩中文字幕在线| av女人的天堂| 成人av地址| 91精品国产综合久久精品麻豆| 免费在线观看的av网站| 亚洲卡一卡二| 日韩一区中文字幕| 日本午夜一区二区三区| 四虎免费在线观看| 精品一区在线看| 国产精品黄视频| 久久不卡免费视频| 亚洲一级特黄| 欧美国产高跟鞋裸体秀xxxhd| 久久久久久国产免费a片| 清纯唯美亚洲经典中文字幕| 日韩视频一区二区三区在线播放| 久久久久国产一区| 我爱我色成人网| 午夜日韩在线电影| 高清无码视频直接看| 黄色在线论坛| 成人欧美一区二区三区视频网页| 日韩视频在线观看国产| 久久国产精品高清一区二区三区| 成人av综合在线| 国产不卡一区二区三区在线观看| 国产极品久久久| 国产美女在线精品| 91香蕉亚洲精品| 国产又粗又猛又爽又黄的| 美女网站视频久久| 国产精品视频免费观看www| 波多野结衣在线电影| 久久婷婷一区| 国产精品第三页| 夜夜躁日日躁狠狠久久av| 久久中文在线| 国产精品电影网站| 亚洲精品国产欧美在线观看| 日韩电影一区二区三区四区| 国产精品1234| 在线免费a视频| 久久精品理论片| 成人黄色在线免费| 99视频在线观看免费| 国产激情视频一区二区三区欧美 | 久草精品视频| 亚洲国产福利在线| 亚洲成人日韩在线| 国产日产精品一区二区三区四区的观看方式 | **性色生活片久久毛片| 法国空姐在线观看免费| 色帝国亚洲欧美在线| 亚洲大片一区二区三区| 欧美日韩亚洲一| 中文字幕系列一区| 337p亚洲精品色噜噜噜| 精人妻一区二区三区| 欧美大片网址| 在线性视频日韩欧美| 亚洲AV成人无码精电影在线| 国产综合久久| 欧美有码在线视频| 在线免费观看中文字幕| 国产精品99久久久久久久女警| 国产一区二区三区高清视频| 国产中文在线| 亚洲六月丁香色婷婷综合久久| 黄色成人在线看| 国产精品亚洲一区二区三区在线观看| 欧美日韩国产综合视频在线观看 | 91最新地址在线播放| 亚洲国产午夜伦理片大全在线观看网站 | 国产精品对白刺激| 国产三级三级在线观看| 97久久精品人人爽人人爽蜜臀| 相泽南亚洲一区二区在线播放| 99福利在线| 在线观看视频一区二区欧美日韩| 日日夜夜精品视频免费观看| 天堂综合网久久| 久久深夜福利免费观看| 亚洲天堂av片| 国产精品一二三区| 日本精品一区二区| 久草在线资源站资源站| 欧美日韩在线播放| 久久久久亚洲AV成人无码国产| 欧美超碰在线| 欧洲美女免费图片一区| 精品人妻伦一二三区久久| 久久久91精品国产一区二区精品 | 中文字幕一区二区三区有限公司 | 丝袜美腿亚洲一区二区图片| aaa级精品久久久国产片| 国产片在线观看| 亚洲大片免费看| 自拍一级黄色片| 精品国产91| 97福利一区二区| 99久久久国产精品无码网爆| 欧美激情中文字幕一区二区| 91专区在线观看| 欧洲大片精品免费永久看nba| 亚洲人成在线观看网站高清| 国产主播在线观看| 国产乱子轮精品视频| 亚洲欧洲久久| 蜜桃精品在线| 亚洲人a成www在线影院| 国产乡下妇女做爰视频| 国产精品亚洲午夜一区二区三区| 亚洲欧洲日韩综合二区| 亚洲电影有码| 国产亚洲激情在线| 国产免费av一区| 99精品偷自拍| 成人中文字幕在线播放| 给我免费播放日韩视频| 色综合久久精品亚洲国产| 国产尤物在线观看| 国产精品国产三级国产普通话蜜臀 | 国产aaaaaaaaa| 米奇777在线欧美播放| 久久av一区二区| 欧美一级鲁丝片| 亚洲国产日韩欧美在线99| 国产精品.www| av动漫一区二区| 黄色一级在线视频| 日本妇女一区| 欧美在线视频免费观看| 污视频在线免费观看| 婷婷国产v国产偷v亚洲高清| 人妻av一区二区| 国产精品美女久久久浪潮软件| 国产日韩二区| 色黄视频在线观看| 亚洲色图25p| 中文字幕一区二区在线视频| 国产精品国产自产拍高清av王其| 国产免费中文字幕| 午夜国产精品视频免费体验区| av一区和二区| 99热99re6国产在线播放| 日韩电影免费观看在线观看| 久久精品视频5| 国产精品天美传媒| 精品国产乱码久久久久久1区二区| 重囗味另类老妇506070| 国产欧美欧洲| 香蕉视频亚洲一级| 综合国产在线视频| 超碰在线观看av| 狠狠躁夜夜躁人人躁婷婷91 | 欧美精品激情| 久99久视频| 香蕉成人av| 美女少妇精品视频| 五月婷婷丁香六月| 欧洲亚洲国产日韩| a级黄色片免费看| 99久久国产免费看| 亚洲精品久久久中文字幕| 欧美69wwwcom| 欧美精品免费观看二区| 91视频成人| 午夜精品福利视频| 91大神xh98hx在线播放| 日韩欧美一级片| 黄色av网站免费观看| 亚洲欧美日韩在线不卡| 9.1成人看片| 精品写真视频在线观看| 国产原创popny丨九色| 日韩精品一区二区久久| 国产色综合一区二区三区| 91p九色成人| 久久久久久中文字幕| 91porn在线观看| 亚洲成人av资源网| 国产一区二区三区在线观看| 精品久久久久久久久久久| 久久噜噜色综合一区二区| 91亚洲精品乱码久久久久久蜜桃| 精品亚洲视频在线| 丝袜国产日韩另类美女| av在线免费观看国产| 成人aaaa| 蜜桃导航-精品导航| 欧美日本三级| 国产精品视频一| 在线观看涩涩| 久久人人爽人人| 国产黄网站在线观看| 亚洲一二在线观看| 午夜激情在线视频| 日韩精品资源二区在线| 最新在线中文字幕| 色综合天天视频在线观看| 久久久精品视频在线| 一色屋精品亚洲香蕉网站| 黄色在线观看av| thepron国产精品| 手机在线播放av| 精品一区二区三区的国产在线播放| 欧美 激情 在线| 日韩视频三区| 久久艹国产精品| 欧美1区2区3区| 丰满女人性猛交| 四季av在线一区二区三区| 亚洲成人av动漫| 精品国产视频| 欧美日韩最好看的视频| 四虎5151久久欧美毛片| 国产欧美一区二区三区不卡高清| 日韩在线观看中文字幕| 亚洲一区免费网站| 国产麻豆一区二区三区| 成人写真视频福利网| 少妇高潮一区二区三区99| 国产精品视频一区二区三区四| 日韩在线免费| 国产精品国语对白| 久久人体av| 成人免费在线视频网址| 超碰国产精品一区二页| 91在线无精精品一区二区| 国模大尺度视频一区二区| 91精品视频观看| 久久久久亚洲精品中文字幕| 99九九视频| 国产精品超碰| 免费观看国产成人| 欧美日韩123| 亚洲精品成人久久久998| 久久一区二区三区电影| 熟妇熟女乱妇乱女网站| 综合日韩在线| 青青草成人免费在线视频| 一本色道久久综合亚洲精品不卡| 欧美丰满熟妇bbbbbb百度| 丝袜a∨在线一区二区三区不卡 | 亚洲人成777| 91嫩草国产在线观看| 久久99精品久久久久久欧洲站| 乱一区二区三区在线播放| av资源久久| 精品91一区二区三区| 尹人成人综合网| 精品久久久久久久免费人妻| 麻豆精品新av中文字幕| 美女被艹视频网站| 91视频免费看| 免费成人深夜蜜桃视频| 亚洲伊人色欲综合网| 久久久久久91亚洲精品中文字幕| 欧美午夜宅男影院| 精品黑人一区二区三区在线观看| 亚洲第一区中文字幕| 经典三级在线| 久久99国产精品自在自在app| 麻豆成全视频免费观看在线看| 国产精品ⅴa在线观看h| www.久久爱.com| 久久免费一区| 香蕉久久网站| www一区二区www免费| 久久99精品国产91久久来源| 男女性杂交内射妇女bbwxz| 久久久久久一二三区| 日韩欧美中文字幕视频| 一本色道久久综合狠狠躁的推荐| 国产乱人乱偷精品视频a人人澡| 亚洲大胆美女视频| 视频三区在线| 欧美亚洲激情视频| 国产精品高清一区二区| 精品毛片久久久久久| 久久久久久久久丰满| 欧美 日韩 国产一区| 国产尤物一区二区在线| 少妇久久久久久久久久| 亚洲在线视频免费观看| 中文字幕在线网址| 日韩精品视频观看| 综合久久2019| 国产日韩欧美自拍| 亚洲另类春色校园小说| 人妻互换免费中文字幕| 麻豆91精品视频| 高潮毛片无遮挡| 亚洲第一狼人社区| 99久久久久久久| 最近2019年日本中文免费字幕 | 欧美日韩国产一级| 青青草在线免费观看| 久久青草精品视频免费观看| 日韩在线成人| 四虎永久免费网站| 日本欧美韩国一区三区| 毛茸茸多毛bbb毛多视频| 亚洲国产一区二区三区青草影视 | 草民电影神马电影一区二区| 麻豆成人小视频| 日韩一级网站| 亚洲av无码一区东京热久久| 亚洲免费看黄网站| 一级片在线观看视频| 在线观看91久久久久久| 亚洲欧美韩国| 久久久久久九九九九| 亚洲国产日韩在线| 精品人妻在线视频| 伊人婷婷欧美激情| 精品人妻一区二区三区浪潮在线| 久久五月天色综合| 91成人短视频在线观看| 一区二区三区四区在线视频| 美女尤物国产一区| 老司机福利在线观看| 欧美偷拍一区二区| 一广人看www在线观看免费视频| 国产精品美女免费视频| 凹凸成人精品亚洲精品密奴| the porn av| 国产精品激情偷乱一区二区∴| 一区二区三区精彩视频| xvideos亚洲人网站| 国产精品久久久久久av公交车| 今天免费高清在线观看国语| 国产+成+人+亚洲欧洲自线| 久久亚洲成人av| 亚洲精品久久久久久久久久久久久| 国产伦子伦对白在线播放观看| 国产一区在线免费观看| 免播放器亚洲| 夫妇交换中文字幕| 欧美精品久久久久久久多人混战| 成年视频在线观看| 国产成人精品一区二区三区福利| 亚洲人体大胆视频| 国产黄片一区二区三区| 欧美日本一区二区三区| 18videosex性欧美麻豆| 国产精品一区二区三区免费观看| 亚洲永久免费| 91精品国自产在线| 777a∨成人精品桃花网| 91破解版在线观看| 欧洲一区二区日韩在线视频观看免费| 蜜桃传媒麻豆第一区在线观看| 一区二区国产精品精华液| 亚洲大胆人体在线| 欧洲一级精品| 奇米777四色影视在线看| 91在线一区二区三区| 在线观看日韩一区二区| 欧美肥婆姓交大片| 台湾色综合娱乐中文网| 99九九99九九九99九他书对| 亚洲一级片在线观看| 黄色网址在线播放| 亚洲xxxxx性| 国产精品腿扒开做爽爽爽挤奶网站| 快灬快灬一下爽蜜桃在线观看| 日韩一区二区三区三四区视频在线观看| 国产丝袜在线播放| 亚欧精品在线| www.亚洲精品| 国产在成人精品线拍偷自揄拍| 98精品在线视频| 99久久亚洲精品| 亚洲av无码一区二区二三区| 欧美一区二区视频观看视频| 成人性教育av免费网址| 国产午夜精品视频一区二区三区| 久久亚洲二区三区| 亚洲AV无码精品国产| 国产精品一久久香蕉国产线看观看| 在线播放一区| 粉嫩av性色av蜜臀av网站|