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

使用這些配置規(guī)范并格式化你的代碼

開(kāi)發(fā) 前端
下面我將詳細(xì)講解為了實(shí)現(xiàn)這一目標(biāo),我們需要做什么,以及各種規(guī)范的基本配置。

在日常工作中,我們會(huì)接觸形形色色的工程。如果工程使用的技術(shù)架構(gòu)不同,可能會(huì)有對(duì)應(yīng)不同的代碼規(guī)范。而每個(gè)人的編碼習(xí)慣是不一樣的,也是難以短時(shí)間內(nèi)改變的,這也是我們常常在開(kāi)發(fā)一個(gè)新工程的時(shí)候,會(huì)遇到各種規(guī)范報(bào)錯(cuò)的原因。

此時(shí),如果能有一套配置,能夠讓我們?cè)趯?xiě)代碼時(shí)不用考慮該工程的規(guī)則,只要在保存時(shí)就能夠自動(dòng)按照當(dāng)前工程配置好的規(guī)則修復(fù)所有錯(cuò)誤,這無(wú)疑會(huì)大大增加我們的開(kāi)發(fā)體驗(yàn)和效率。

下面我將詳細(xì)講解為了實(shí)現(xiàn)這一目標(biāo),我們需要做什么,以及各種規(guī)范的基本配置。

EditorConfig

首先,我們需要一個(gè)基本的規(guī)范,例如縮進(jìn),如何換行等等。它要適用于所有的團(tuán)隊(duì),適用于所有的語(yǔ)言,適用于所有的編輯器。

EditorConfig 能幫助我們實(shí)現(xiàn)這一點(diǎn)。它讓所有的開(kāi)發(fā)者在基本編碼規(guī)范上保持一致。

我們需要做的是:

  1. 安裝 EditorConfig 插件(有些編輯器默認(rèn)支持 EditorConfig ,具體請(qǐng)看 這些編輯器不需要安裝插件 (https://editorconfig.org/#pre-installed))。
  2. 配置 .editorconfig 文件。

以下是 .editorconfig 的用法和例子:

## 打開(kāi)文件時(shí),EditorConfig 插件會(huì)在打開(kāi)的文件的目錄和每個(gè)父目錄中查找名為 .editorconfig 的文件。 ## 如果到達(dá)根文件路徑或找到具有 root=true  EditorConfig 文件,將停止對(duì) .editorconfig 文件的搜索。## 如果 root=true 沒(méi)有配置, EditorConfig 插件將會(huì)在工程之外尋找 .editorconfig 文件
root = true
## 使用規(guī)則匹配文件## * 匹配任何字符串,路徑分隔符 (/) 除外## ** 匹配任意字符串## ? 匹配任何單個(gè)字符## [name] 匹配給定的字符串中的任何單個(gè)字符## [!name] 匹配不在給定字符串中的任何單個(gè)字符## {s1,s2,s3} 匹配任意給定的字符串## {num1..num2} 匹配num1和num2之間的任何整數(shù),其中num1和num2可以是正數(shù)或負(fù)數(shù)## 如規(guī)則[*.{js}]只對(duì) .js 文件生效。一般來(lái)說(shuō),我們配置 [*] 對(duì)所有文件生效。
[*]
## 縮進(jìn)方式。 值可以是 tab 或者 space
indent_style = space
## 縮進(jìn)大小。當(dāng)設(shè)置為 tab 時(shí),會(huì)取 tab_width 的值。
indent_size = 2
## 通常不需要設(shè)置。當(dāng) indent_size = tab 時(shí),才會(huì)生效。
tab_width = 2;
## 設(shè)置為 lf、cr crlf 以控制如何表示換行符。
end_of_line = lf
## 設(shè)置為 latin1、utf-8、utf-8-bom、utf-16be utf-16le 來(lái)控制字符集。
charset = utf-8
## 設(shè)置為 true 以刪除換行符之前的任何空格字符,設(shè)置為 false 以確保不會(huì)。
trim_trailing_whitespace = true
## 設(shè)置為 true 以確保文件在保存時(shí)以換行符結(jié)束,設(shè)置為 false 以確保不以換行符結(jié)束。
inset_final_newline = true

Eslint

對(duì)于前端開(kāi)發(fā)工程師來(lái)說(shuō),JavaScript 無(wú)疑是我們最好的伙伴了。而 ESLint,它是一款插件化的 JavaScript 代碼靜態(tài)檢查工具,其核心是通過(guò)對(duì)代碼解析得到的 AST(Abstract Syntax Tree,抽象語(yǔ)法樹(shù))進(jìn)行模式匹配,定位不符合約定規(guī)范的代碼。

社區(qū)里有很多不同版本的規(guī)范,每個(gè)團(tuán)隊(duì)也可能會(huì)制定自己的規(guī)范。編碼風(fēng)格千千萬(wàn),而工程的配置就一套,在多人協(xié)作時(shí)就必然會(huì)出現(xiàn)規(guī)范報(bào)錯(cuò)的情況。我們需要配置一套規(guī)則,讓我們不需要 Care 規(guī)則到底是什么,在保存文件的時(shí)候,自動(dòng)按照工程規(guī)范格式化代碼。

怎么辦呢?

Eslint 提供了風(fēng)格指南規(guī)則,并明確表示了哪些是可修復(fù)的:Stylistic Issues (https://cn.eslint.org/docs/rules/#stylistic-issues)

我們需要做的是:

  1. 本地安裝 Eslint 和社區(qū)推薦的規(guī)范 eslint-config-airbnb (https://github.com/airbnb/javascript) (也可以是別的規(guī)范)。插件會(huì)使用安裝的 Eslint 庫(kù)(如果你還未安裝:npm i eslint eslint-config-airbnb)。
  2. VSCode 安裝 Eslint插件。
  3. 添加 .eslintrc.js 配置文件。
  4. 更改 VSCode 的 setting.json 文件的配置。

其中,想要實(shí)現(xiàn)自動(dòng)按照工程的規(guī)則格式化,第四步必不可少。

setting.json

如果你已經(jīng)安裝好了 Eslint插件,按 cmd + shif + p,打開(kāi) defaultSettings.json 文件,按 cmd + f 搜索 eslint 可以看到所有 ESlint 在 VSCode 內(nèi)的默認(rèn)配置。我們需要對(duì)它做一些修改。

還是按 cmd + shift + p 打開(kāi) settings.json 文件。這個(gè)文件是用戶(hù)自定義配置,里面的配置會(huì)覆蓋 defaultSettings.json 里的同名配置。我們?cè)谶@個(gè)文件里對(duì) ESLint 插件 的配置做一些修改,讓它達(dá)到我們想要的效果。

首先,我們想要 保存時(shí)自動(dòng)格式化,實(shí)現(xiàn)這個(gè)效果的配置有三種:

  • editor.formatOnSave  + eslint.format.enable。前者配置:保存時(shí)格式化,后者配置:將 ESlint 規(guī)則作為格式化標(biāo)準(zhǔn)。
  • eslint.autoFixOnSave
  • editor.codeActionsOnSave

其中,第二種 eslint.autoFixOnSave 已經(jīng)被廢棄。使用它會(huì)提示更改為 editor.codeActionsOnSave。

而第一種和第三種都可以實(shí)現(xiàn),但是更推薦使用第三種 editor.codeActionsOnSave,它支持更高的可配置性。

使用  editor.codeActionsOnSave 的時(shí)候,我們需要禁用其它格式化程序,最好的做法是將 ESlint 設(shè)置為格式化程序默認(rèn)值。并且當(dāng)我們這么做的時(shí)候,我們可以關(guān)閉 editor.formatOnSave,否則我們的文件將被修復(fù)兩次,這是沒(méi)有必要的。

以下便是我們需要在 setting.json 里新增的配置。(注釋的地方是默認(rèn)配置,無(wú)需新增)

// 編輯的時(shí)候檢測(cè)還是保存的時(shí)候檢測(cè),默認(rèn)在編輯的時(shí)候就檢測(cè)。default: onType
// "eslint.run": "onType",
// default: false
// "eslint.format.enable": false,
// default: false
// "editor.formatOnSave": false,
"editor.codeActionsOnSave": {
"source.fixAll.eslint": true
},
"[vue]": {
"editor.defaultFormatter": "dbaeumer.vscode-eslint"
},
"[javascript]": {
"editor.defaultFormatter": "dbaeumer.vscode-eslint"
},
// 始終在VSCode的右下角狀態(tài)欄顯示 ESLint 字樣,查看 ESLint 運(yùn)行狀態(tài),確保 ESLint 在正常運(yùn)行
"eslint.alwaysShowStatus": true,

.eslintrc.js

接下來(lái),我們聊聊 .eslintrc.js 文件。這個(gè)文件將會(huì)規(guī)定我們的 ESLint 具體該使用什么規(guī)則去規(guī)范我們的代碼。

我們自己往往不需要去配置這個(gè)文件,因?yàn)楣こ桃话愣紩?huì)配置好了一套規(guī)則。我們只需要使用這套規(guī)則去格式化代碼就好了。

但是看懂每條規(guī)則的意義,對(duì)于我們也是很重要的,例如你想自己新建工程。

接下來(lái),我將從 普遍用法、Vue項(xiàng)目特殊配置、React項(xiàng)目特殊配置 來(lái)看下如何配置 .eslintrc.js 文件。

普遍用法

  • 默認(rèn)情況下,ESLint 支持 ES5 的語(yǔ)法。我們可以覆蓋這個(gè)配置,啟用對(duì) ES6、 ES7 ...  的支持 (https://cn.eslint.org/docs/user-guide/configuring#specifying-parser-options)。
// 啟用對(duì) es6 的語(yǔ)法和全局變量的支持
{
env: {
es6: true,
},
}
  • 如果我們想讓 ESLint 不僅能識(shí)別瀏覽器環(huán)境中的語(yǔ)法,其它環(huán)境(https://cn.eslint.org/docs/user-guide/configuring#specifying-environments)(如 Node)我們也希望它能識(shí)別,這時(shí)候我們可以這樣配置:
{
env: {
browser: true,
node: true,
},
}
  • 在一些項(xiàng)目中,我們需要特殊的解析器去解析我們的代碼,是否是符合規(guī)范的。這時(shí)候我們可以使用 Parser (https://cn.eslint.org/docs/user-guide/configuring#specifying-parser)
{
parser: 'babel-eslint',
}
  • 當(dāng)訪問(wèn)當(dāng)前源文件內(nèi)未定義的變量時(shí),no-undef (https://cn.eslint.org/docs/rules/no-undef) 規(guī)則將發(fā)出警告。如果你想在一個(gè)源文件里使用全局變量,推薦你 在 ESLint 中定義這些全局變量 (https://cn.eslint.org/docs/user-guide/configuring#specifying-globals),這樣 ESLint 就不會(huì)發(fā)出警告了。

當(dāng)訪問(wèn)當(dāng)前源文件內(nèi)未定義的變量時(shí),no-undef 規(guī)則將發(fā)出警告。如果你想在一個(gè)源文件里使用全局變量,推薦你在 ESLint 中定義這些全局變量,這樣 ESLint 就不會(huì)發(fā)出警告了。

{
globals: {
"__DEV__": true,
"If": true,
"For": true,
"POBrowser": true
},
}
  • ESLint 支持使用第三方插件 (https://cn.eslint.org/docs/user-guide/configuring#configuring-plugins)。在使用插件之前,你必須使用 npm 安裝它。在配置文件里配置插件時(shí),可以使用 plugins 關(guān)鍵字來(lái)存放插件名字的列表。插件名稱(chēng)可以省略 eslint-plugin- 前綴。
{
plugins: ['react-hooks', 'jsx-control-statements'],
}
  • ESLint 附帶有大量的規(guī)則。你可以使用注釋或配置文件修改你項(xiàng)目中要使用的規(guī)則 (https://cn.eslint.org/docs/user-guide/configuring#configuring-rules)。要改變一個(gè)規(guī)則設(shè)置,你必須將規(guī)則 ID 設(shè)置為下列值之一:
  •    "off" 或 0 - 關(guān)閉規(guī)則
  •    "warn" 或 1 - 開(kāi)啟規(guī)則,使用警告級(jí)別的錯(cuò)誤:warn (不會(huì)導(dǎo)致程序退出)
  •     "error" 或 2 - 開(kāi)啟規(guī)則,使用錯(cuò)誤級(jí)別的錯(cuò)誤:error (當(dāng)被觸發(fā)的時(shí)候,程序會(huì)退出)
{
rules: {
eqeqeq: 'off',
curly: 'error',
quotes: ['error', 'double']
}
}
  • 配置定義在插件中的一個(gè)規(guī)則的時(shí)候,你必須使用 插件名/規(guī)則ID 的形式。比如:
{
plugins: ['react-hooks', 'jsx-control-statements'],
rules: {
'arrow-parens': 0,
'react-hooks/rules-of-hooks': 'error',
'react-hooks/exhaustive-deps': 'warn',
'jsx-control-statements/jsx-use-if-tag': 0,
'react/jsx-no-undef': ['error', { 'allowGlobals': true }],
'no-prototype-builtins': 'off',
}
}
  •  ESLint 的配置規(guī)則實(shí)在太多,如果我們自己一條條規(guī)則去配置,這個(gè)工作了將會(huì)非常大。我們可以直接拿現(xiàn)有的規(guī)范來(lái)使用 (https://cn.eslint.org/docs/user-guide/configuring#extending-configuration-files)。
{  extends: 'zoo/react',}

Vue 特殊配置

由于 Vue 單文件組件的特殊寫(xiě)法,針對(duì) Vue 項(xiàng)目,需要做一些特殊的 ESLint 配置,以達(dá)到自動(dòng)化的效果。

高亮語(yǔ)法支持

安裝 Vetur插件。

使用 ESLint 而不是 Vetur 做代碼檢測(cè)

Vetur 為 Vue 項(xiàng)目帶來(lái)了語(yǔ)法高亮和便捷的操作。但是它本身也會(huì)自動(dòng)開(kāi)啟對(duì) Vue 文件的代碼檢測(cè)。這往往會(huì)和我們配置的 ESLint 有沖突。為了避免這一點(diǎn),需要在 VSCode 的 settings.json 中做一些配置:

// 不允許它格式化代碼
"vetur.format.enable": false,
// 不允許它做代碼檢測(cè)
"vetur.validation.template": false,
"vetur.validation.script": false,
"vetur.validation.style": false,

無(wú)需將 vue 添加進(jìn) eslint.validate,因?yàn)?eslint.probe 默認(rèn)會(huì)檢測(cè) vue 類(lèi)型文件。

然后,我們需要配置 .eslintrc.js 文件,里面用到的插件都需要本地安裝。

module.exports = {
root: true,
// 如果是SSR項(xiàng)目,則需要配置node:true
env: {
browser: true,
node: true,
},
// 為什么是這樣的parser配置?https://eslint.vuejs.org/user-guide/#how-to-use-a-custom-parser
parser: 'vue-eslint-parser',
parserOptions: {
parser: 'babel-eslint',
},
extends: [
// 如果是nuxt.js的腳手架項(xiàng)目,則需要安裝對(duì)應(yīng)的插件并做以下配置
'@nuxtjs',
'plugin:nuxt/recommended',
// 讓eslint可以規(guī)范vue文件
'plugin:vue/base',
// vue3的項(xiàng)目需要使用,如果是vue2項(xiàng)目,使用 plugin:vue/recommended
'plugin:vue/vue3-recommended',
],
plugins: [
// 注意這里不能配置 html 選項(xiàng),為什么?https://eslint.vuejs.org/user-guide/#why-doesn-t-it-work-on-vue-files
'vue',
],
// 配置自己的規(guī)則,覆蓋上面繼承的規(guī)則
rules: {
// 配置js的縮進(jìn)為 2,switch case 語(yǔ)句的 case 也使用2個(gè)空格縮進(jìn)
indent: ['error', 2, { SwitchCase: 1 }],
// 使用 eslint 檢測(cè) template里的代碼,這里我配置 2 個(gè)空格縮進(jìn)
'vue/html-indent': ['error', 2],
},
};

以上配置,大家根據(jù)自己的項(xiàng)目特點(diǎn),自行刪減即可。比如,如果你的項(xiàng)目不是 nuxt.js 的,可以去掉 extends 里的 '@nuxtjs 和 plugin:nuxt/recommended。

如果是 Vue cli 創(chuàng)建的項(xiàng)目,并且沒(méi)有使用 ts,需要在項(xiàng)目根目錄添加 jsconfig.json 文件。有關(guān) jsconfig 的配置在這里:jsconfig (https://code.visualstudio.com/docs/languages/jsconfig)

React 特殊配置

React 項(xiàng)目中,因?yàn)槭?.js 文件,一般不需要特殊的配置。但即使如此,針對(duì) JSX 和 Hooks 的使用規(guī)則,我們?nèi)匀恍枰鲆恍┦虑?

針對(duì) React Hooks

lint 規(guī)則具體強(qiáng)制了哪些內(nèi)容?(https://zh-hans.reactjs.org/docs/hooks-faq.html#what-exactly-do-the-lint-rules-enforce)

eslint-plugin-hooks 是 React 源碼目錄 packages 里提供的一個(gè)包。它會(huì)強(qiáng)制執(zhí)行 Hooks 規(guī)則,它也是 Hooks API 的一部分。

npm i eslint-plugin-reack-hooks

在 .eslintrc.js 中

module.exports = {
// eslint-plugin 可以簡(jiǎn)寫(xiě)
plugins: ['react-hooks'],
}

針對(duì) JSX

JSX 不過(guò)只是 React 的一個(gè)語(yǔ)法糖,其最終都會(huì)被 React 調(diào)用 React.createElement 編譯成 React Element 形式。所以在 17 版本之前,如果我們使用到了 JSX 但是沒(méi)有引入 React ,會(huì)提示 'React' must be in scope when using JSX。而在 17 版本之后, React 與 Babel 和 TypeScript 編譯器合作,將轉(zhuǎn)化任務(wù)交給了編譯器自動(dòng)轉(zhuǎn)化。

如果我們是之前的轉(zhuǎn)化版本,我們要獲得對(duì) JSX 的語(yǔ)法支持,我們需要安裝 eslint-plugin-react,它內(nèi)置了對(duì) JSX 的代碼規(guī)范檢測(cè)。

{
extends: ['plugin:react/recommended'],
}

如果不想使用內(nèi)置的規(guī)則,我們也可以自定義規(guī)則

{
plugins: ['react'],
parserOptions: {
ecmaFeatures: {
jsx: true,
},
},
rules: {
'react/jsx-no-undef': ['error', { "allowGlobals": true }],
},
}

如果是新的轉(zhuǎn)化版本,則需要做一點(diǎn)小小的更改,以便在使用 JSX 的時(shí)候,不會(huì)要求我們引入 React。

{
extends: ['plugin:react/recommended', 'plugin:react/jsx-runtime'],
}

StyleLint

在完成了以上的配置之后,我們已經(jīng)可以對(duì) .js 文件、.vue 文件的 template 和 script 模塊實(shí)現(xiàn)代碼規(guī)范和保存時(shí)自動(dòng)格式化了。但是對(duì)于 .css、.less、.scss 文件和 .vue 文件的 style 模塊,我們還需要做額外的配置,否則樣式部分不規(guī)范,我們也是沒(méi)法檢測(cè)并自動(dòng)修復(fù)的。

我們需要做的是:

  1. npm i stylelint stylelint-config-standard stylelint-scss。
  2. 安裝 Stylelint插件。
  3. 配置 .stylelintrc  文件。
  4. 配置 VSCode 的 setting.json 文件。

其中,第四步也是必須的,我們需要做如下配置:

// 防止編輯器內(nèi)置的 [css] [less] [scss] 校驗(yàn)和此擴(kuò)展 [stylelint] 報(bào)告相同的錯(cuò)誤
"css.validate": false,
"less.validate": false,
"scss.validate": false,
// 保存時(shí)使用 eslint 和 stylelint 進(jìn)行修復(fù)
"editor.codeActionsOnSave": {
"source.fixAll.eslint": true,
"source.fixAll.stylelint": true
},
// 默認(rèn)會(huì)對(duì)很多文件進(jìn)行檢測(cè),這是不必要的,我們只讓他檢測(cè)樣式
"stylelint.validate": [
"css",
"html",
"less",
"postcss",
"sass",
"scss",
"source.css.styled",
"styled-css",
],

以上,我們的目標(biāo)已經(jīng)達(dá)成啦!

Prettier

代碼格式化工具。很多同學(xué)都接觸過(guò)這個(gè)工具,我個(gè)人深入了解了一下這個(gè)工具,以下是我的個(gè)人見(jiàn)解。先看下 Prettier 官方的一段話(huà)吧。

So why choose the “Prettier style guide” over any other random style guide? Because Prettier is the only “style guide” that is fully automatic. Even if Prettier does not format all code 100% the way you’d like, it’s worth the “sacrifice” given the unique benefits of Prettier, don’t you think?

可以看到,這個(gè)工具旨在讓不同公司不同團(tuán)隊(duì)不需要考慮代碼規(guī)范,實(shí)現(xiàn)自動(dòng)化保存格式化。犧牲掉個(gè)性化內(nèi)容。

但是往往不同的團(tuán)隊(duì)對(duì)規(guī)則的使用是不一致的,如果強(qiáng)制所有文件都使用 prettier 自動(dòng)格式化,會(huì)出現(xiàn)與公司配置的代碼規(guī)范檢查工具(例如 ESLint) 沖突的情況。實(shí)際表現(xiàn)為自動(dòng)保存之后,依然出現(xiàn) ESLint 格式報(bào)錯(cuò)。

想讓 prettier 生效,需要我們?cè)?VSCode 里配置:

// 所有文件都使用 prettier 格式化
"editor.defaultFormatter": "esbenp.prettier-vscode",
// 只對(duì) js 文件使用 prettier
"[javascript]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
}
// 所有文件都不指定自動(dòng)格式化方式
"editor.defaultFormatter": null,
// js文件不指定自動(dòng)格式化方式
"[javascript]": {
"editor.defaultFormatter": null
}

可以使用 .prettierrc 文件、VSCode 的 setting.json 、.editorConfig 來(lái)配置 prettier。

推薦不常使用的文件類(lèi)型,使用 prettier 去格式化。js,json,jsx,html,css,less,vue 等這些文件,使用工程統(tǒng)一的規(guī)范去格式化。

所以,我覺(jué)得完全可以卸載它。不知道你怎么看呢?

以上就是全部?jī)?nèi)容了,希望對(duì)你有所幫助~

責(zé)任編輯:龐桂玉 來(lái)源: 前端開(kāi)發(fā)
相關(guān)推薦

2022-03-10 10:24:45

Vim代碼Linux

2010-08-03 10:46:41

Flex代碼格式化

2022-08-28 10:08:53

前端代碼前端

2015-01-07 15:21:30

Android Stu代碼格式化

2010-07-29 11:03:53

Flex代碼格式化

2010-08-10 13:35:26

Flex代碼格式化

2019-05-17 13:20:57

Black格式化工具Python

2022-06-26 08:39:19

Spring容器字段格式化

2009-08-03 14:25:59

C#日期格式化

2009-06-05 15:27:23

Eclipse工具格式化模板應(yīng)用

2020-09-02 07:19:41

printf 格式化輸出Unix

2018-05-07 09:12:17

Linuxgroff -me格式化

2009-09-04 13:19:59

C#代碼格式化

2010-08-10 13:28:21

Flex代碼格式化

2022-11-02 08:28:05

huskyLinter 工具

2012-03-22 09:15:29

開(kāi)發(fā)代碼

2020-11-03 10:21:33

MySQL

2009-08-03 16:24:05

C#格式化

2010-07-29 11:12:30

Flex日期格式化

2018-11-02 10:45:35

windowsU盤(pán)格式化
點(diǎn)贊
收藏

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

欧美激情亚洲一区| 日韩精品一区二| 欧美亚洲免费在线| 亚洲天堂狠狠干| 国产精品jizz在线观看美国| 日韩av在线网页| 我要看一级黄色大片| 超碰在线观看免费版| 成人黄色网址在线观看| 国产精品爱久久久久久久| 日韩a级片在线观看| 窝窝社区一区二区| 欧美一区二区三区喷汁尤物| 日本一本二本在线观看| 51xtv成人影院| 国产欧美日韩视频在线观看| 国产精品一区视频| 国产精品爽爽久久久久久| 99在线|亚洲一区二区| 自拍偷拍亚洲欧美| 欧美丰满少妇人妻精品| 日本一区二区三区播放| 在线亚洲一区观看| 国产精品一区二区免费在线观看| 麻豆影视国产在线观看| 久久久久久9999| 国产精品久久久久久久天堂第1集| 中文字幕丰满人伦在线| 乱人伦精品视频在线观看| 欧美极品美女电影一区| 国产又粗又硬又长又爽| 欧美男gay| 亚洲老板91色精品久久| 国产a√精品区二区三区四区| 欧美天堂一区| 欧美天天综合网| 国产精品免费观看久久| free性欧美| 亚洲综合免费观看高清完整版在线 | 亚洲激情免费观看| 欧美熟妇另类久久久久久多毛| 韩国精品主播一区二区在线观看 | 欧美精品久久久久久久免费| 18网站在线观看| 亚洲免费看黄网站| 不卡中文字幕在线| 五月婷婷在线视频| 日本一区二区成人| 天堂一区二区三区| avtt亚洲| 国产精品传媒视频| 一区二区三区免费看| 春暖花开成人亚洲区| 国产天堂亚洲国产碰碰| 欧美一区二区高清在线观看| 免费福利在线观看| 久久色.com| 日韩av影视| 中国日本在线视频中文字幕| 国产精品家庭影院| 老汉色影院首页| 伊人222成人综合网| 一区二区三区高清在线| www.成年人视频| 成人福利电影| 欧美性猛交视频| av视屏在线播放| 伦一区二区三区中文字幕v亚洲| 欧美日韩国产不卡| 性欧美在线视频| 日韩一二三区| 亚洲精品国产精品久久清纯直播 | 9191国语精品高清在线| 久久综合免费视频| 久久亚洲av午夜福利精品一区| 伊人激情综合| 日韩美女中文字幕| 国产精品美女一区| www.日韩av| 日本一区二区三区视频免费看| 欧美成人二区| 亚洲一卡二卡三卡四卡无卡久久 | 日韩成人网免费视频| 波多野结衣片子| 99re66热这里只有精品8| 不卡av电影在线观看| 91看片在线播放| 免费高清成人在线| 国产精品果冻传媒潘| 黄色片在线看| 一区二区三区欧美在线观看| 欧美色图另类小说| 青青国产精品| 亚洲国产精品va| 成年人看的免费视频| 欧美日韩国产一区精品一区| 欧洲一区二区视频| 国产精品午夜福利| 91日韩一区二区三区| 一本色道久久综合亚洲精品婷婷 | 7777奇米亚洲综合久久| 全色精品综合影院| 亚洲精品欧美激情| 搡女人真爽免费午夜网站| 91欧美极品| 中文字幕亚洲欧美日韩2019| 精品无码久久久久| 免费观看成人鲁鲁鲁鲁鲁视频| 国产视频一区二区三区四区| 日韩欧美小视频| 欧美性生交xxxxx久久久| 亚洲精品中文字幕乱码无线| 欧美日韩播放| 97视频人免费观看| 国产精品久久久久久久久久久久久久久久 | 99国产精品久久久久| 中文字幕欧美日韩一区二区三区| 周于希免费高清在线观看| 日韩一区二区三区四区| 亚洲天堂最新地址| 西西裸体人体做爰大胆久久久| 99se婷婷在线视频观看| 视频一区二区三区不卡| 日韩欧美一区视频| 亚洲成人av免费在线观看| 欧美精品一级| 国产精品久久久久久久久影视| 色呦呦免费观看| 亚洲精品大片www| 中文字幕 91| 国产一区2区| 青草青草久热精品视频在线网站 | 国产 日韩 亚洲 欧美| 精品视频在线观看免费观看| 三级精品视频久久久久| 丰满熟女人妻一区二区三| 久久久蜜臀国产一区二区| 亚洲熟妇国产熟妇肥婆| 久久久久影视| 777777777亚洲妇女| 日韩一级片免费在线观看| 亚洲国产精品人人做人人爽| 国产综合内射日韩久| 日韩欧美午夜| 国产日韩在线播放| 理论片午午伦夜理片在线播放| 欧美专区亚洲专区| 2019男人天堂| 久久精品免费观看| 一区二区在线不卡| а天堂中文最新一区二区三区| 色狠狠久久aa北条麻妃| 国产精品怡红院| 亚洲精品国产品国语在线app| 爱情岛论坛亚洲自拍| 欧美日韩精品| 国产亚洲一区二区三区在线播放| 99在线视频影院| 亚洲精品国精品久久99热| 国产成人免费看| 久久久91精品国产一区二区精品| 激情网站五月天| 日韩大片在线播放| 亚洲自拍偷拍区| a级片免费在线观看| 亚洲国产精品99| 免费av中文字幕| 国产精品久久久久久久久图文区| 三级性生活视频| 欧美视频亚洲视频| 精品一卡二卡三卡四卡日本乱码| 日韩精品99| 日韩在线观看免费| 国产精品视频a| 午夜电影一区二区| 手机看片日韩av| 国产成人精品三级麻豆| 男人操女人逼免费视频| 欧美一区二区三区高清视频| 91香蕉亚洲精品| 黄色漫画在线免费看| 一区二区三区视频在线| www天堂在线| 欧美日韩在线免费| 北条麻妃在线观看视频| 成人黄色网址在线观看| 日本888xxxx| 亚洲无线视频| 日韩电影天堂视频一区二区| 91丨精品丨国产| 88国产精品欧美一区二区三区| av资源种子在线观看| 精品福利av导航| 这里只有精品9| 午夜精品一区二区三区电影天堂| 欧美xxxx精品| www.亚洲人| 污污的视频免费观看| 国产精品一二| 久久免费一级片| 国产一区不卡| 精品一区久久| 中文字幕一区二区三区日韩精品| 国产v综合ⅴ日韩v欧美大片| 国产乱码在线| 播播国产欧美激情| 噜噜噜在线观看播放视频| 欧美电视剧在线看免费| 在线观看免费视频a| 黄网站色欧美视频| 欧美成人综合色| 国产精品入口麻豆九色| 特级西西人体4444xxxx| 国产精品99久久久久| 国产喷水theporn| 欧美在线综合| 国产极品在线视频| 欧美日韩国产免费观看 | 黄色网在线免费看| 国产一区二区日韩| 天堂在线中文字幕| 911国产精品| 伊人22222| 欧洲日韩一区二区三区| 五月天综合激情网| 亚洲电影第三页| 久久久久久久蜜桃| 亚洲精品va在线观看| 自拍偷拍第9页| 日本一区二区三区视频视频| 久久亚洲AV成人无码国产野外| 粉嫩aⅴ一区二区三区四区五区| 91日韩精品视频| 蜜臀久久99精品久久久久久9| 毛葺葺老太做受视频| 可以免费看不卡的av网站| 国产成人无码精品久久久性色| 激情丁香综合| 久久99久久99精品| 激情欧美日韩| 一卡二卡三卡视频| 欧美日一区二区在线观看| 麻豆视频传媒入口| 91精品一区二区三区综合在线爱| 亚洲一区二区精品在线| 久久中文字幕二区| 亚洲午夜高清视频| 小处雏高清一区二区三区| 一本久道久久综合| 亚洲欧洲日韩| 99re6这里有精品热视频| 欧美激情麻豆| 97超碰在线人人| 在线亚洲免费| 日本xxxxxxx免费视频| 午夜影院日韩| 色免费在线视频| 精品一区二区三区av| 国产传媒免费观看| 国产福利91精品一区| 国产女人18毛片水真多18| www.性欧美| 日韩在线免费观看av| 国产人伦精品一区二区| 很污很黄的网站| 亚洲精品一卡二卡| 亚洲天堂日韩av| 欧美在线啊v一区| 国产强被迫伦姧在线观看无码| 欧美一区二区三区不卡| 秋霞欧美在线观看| 亚洲色图35p| 国产美女在线观看| 97精品在线视频| 亚洲电影有码| 999精品视频一区二区三区| 国内精品麻豆美女在线播放视频| 快播亚洲色图| 国产精品久久久久久久免费观看| www.亚洲视频.com| 日本不卡免费在线视频| 日韩不卡的av| 2014亚洲片线观看视频免费| 欧美激情久久久久久久| 夜夜亚洲天天久久| 免费看毛片网站| 日韩一区二区三区精品视频| 日夜干在线视频| 久久视频免费观看| 中文在线免费视频| 91美女片黄在线观| 无码日韩精品一区二区免费| 亚洲成年人专区| 鲁大师成人一区二区三区| 古装做爰无遮挡三级聊斋艳谭| 久久婷婷色综合| 精品视频久久久久| 欧美日韩免费在线视频| 天堂在线资源网| 久久精品青青大伊人av| 波多视频一区| 成人激情直播| 99久久夜色精品国产亚洲1000部| 秋霞无码一区二区| 国产精品影音先锋| 免费成人深夜天涯网站| 五月天丁香久久| 99国产精品久久久久久久成人| 亚洲欧美中文字幕| h片在线观看视频免费免费| 成人av番号网| 欧美亚洲激情| 日韩中文字幕免费在线| 国产精品一卡二卡在线观看| 亚洲精品国产精品国自| 日韩欧美中文字幕在线播放| 国产91麻豆视频| 久久综合亚洲社区| 欧洲美女精品免费观看视频| 日本精品一区二区| 一本色道久久精品| 91精品又粗又猛又爽| 亚洲人一二三区| 91精品视频免费在线观看| 国产一区二区黑人欧美xxxx| 樱桃视频成人在线观看| 国产青春久久久国产毛片 | 国产免费黄色av| 成人精品小蝌蚪| 欧美毛片在线观看| 5858s免费视频成人| 伊人在线视频| 国产精品三级久久久久久电影| 一区二区三区韩国免费中文网站| 黄色网页免费在线观看| 成人激情动漫在线观看| 久久成人国产精品入口| 日韩欧美综合一区| 中文字幕在线观看播放| 亚洲sss综合天堂久久| 91九色精品国产一区二区| 91欧美一区二区三区| 日韩码欧中文字| 97久久人国产精品婷婷| 久久精品一本久久99精品| 一区二区三区| 成人免费看片视频在线观看| 国产裸体歌舞团一区二区| 日本a级片视频| 欧美精品一区二区三区高清aⅴ | 3d蒂法精品啪啪一区二区免费| 91精品国产福利在线观看麻豆| 成人黄色一级大片| 亚洲男人天堂一区| 亚洲精品喷潮一区二区三区| 久久久视频在线| 天天躁日日躁成人字幕aⅴ| 国产主播在线看| 国产精品视频看| 国产免费黄色录像| 久久久久久久久国产精品| 色天天色综合| 999精品视频在线| 亚洲四区在线观看| 亚洲国产成人精品一区二区三区| 久久久久久中文| 九九热精品视频在线观看| 嫩草影院国产精品| 亚洲人精品午夜| 欧美自拍第一页| 国产精品激情av在线播放 | 久久久久久亚洲精品| 亚州av一区| 青青草原国产在线视频| 亚洲综合成人在线视频| 男人的天堂在线免费视频| 国产在线视频一区| 亚洲视频中文| 亚洲欧美va天堂人熟伦| 欧美大胆人体bbbb| 亚洲成a人片| 99re6这里有精品热视频| 久久无码av三级| 国产夫妻自拍av| 日韩免费av在线| 午夜精品久久久久99热蜜桃导演| 久久久久久国产精品无码| 91精品国产福利在线观看| 中文在线а√天堂| 国产又粗又长又爽视频| 久久久www成人免费毛片麻豆| 国产wwwxxx| 国产精品激情av在线播放| 国内精品久久久久久久影视麻豆| 欧美性猛交xxxx乱| 欧美va亚洲va| 日韩欧乱色一区二区三区在线| 激情五月宗合网| 一区二区三区在线观看网站| 国产福利第一视频在线播放|