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

我熬夜開發了一款簡約實用、支持多平臺的Markdown在線編輯器(開源)

開發 開發工具
之前,一直想開發一款屬于自己的Markdown編輯器,主要是自己平常寫文章可以更加靈活操作,另外擴寬自己的視野也是非常不錯的選擇啊!所以在周末就決定玩耍一番。首先我調研了很多線上熱門的md編輯器,都很優秀。不為超過他們,主要自己用著舒服點。這篇文章主要是記錄下我是如何從0到1是完成一款還算拿得出手的Markdown編輯器。

[[385871]]

 前言

之前,一直想開發一款屬于自己的Markdown編輯器,主要是自己平常寫文章可以更加靈活操作,另外擴寬自己的視野也是非常不錯的選擇啊!所以在周末就決定玩耍一番。首先我調研了很多線上熱門的md編輯器,都很優秀。不為超過他們,主要自己用著舒服點。這篇文章主要是記錄下我是如何從0到1是完成一款還算拿得出手的Markdown編輯器。

完成項目一覽



調研Markdown編輯器

國內、國外關于Markdown編輯器有很多。

editor.md

網址:https://pandao.github.io/editor.md/

是一款開源的、可嵌入的 Markdown 在線編輯器(組件),基于 CodeMirror、jQuery 和 Marked 構建。這個組件好像是國內開發的,個人之前用著還可以。

typora

網址:https://www.typora.io/

Typora是一款免費的輕量級Markdown編輯器,它沒有Mou,Haroopad等Markdown編輯器那么大名鼎鼎,算是較為小眾的一款產品。憑良心說話,我用過的Markdown編輯器也有好幾款,其中包括:小書匠,Haroopad,Atom等,但Typora是最合我心意的一款編輯器了,其輕量、快速、易于上手,使用起來簡直不要太舒服!!

tui-editor

網址:https://ui.toast.com/tui-editor

這是一款Markdown組件,通過調研決定用它。為什么?確認過眼神~

技術棧

  • Vue.js
  • tui-editor

實戰

確定好技術棧之后,我們就得腳踏實地地干活了。

1. 搭建Vue腳手架

我們會使用VueCLI搭建一個最基礎的項目,這里暫時不需要Vue-router、Vuex這些插件,所以盡可能輕裝。

2. 創建編輯器組件

我們會在components文件目錄下創建一個Editor.vue文件,這個文件也就是我們的主戰場,大部分操作都會在這個文件。

3. 配置編輯器組件

在配置編輯器時,有以下幾點使我非常困惑,以致于花費了大量時間。

  1. 代碼沒有被高亮
  2. 語言不是中文
  3. 編輯器樣式有問題

以上這幾個問題通過以下措施才得以解決:

  1. 通過閱讀文檔:https://nhn.github.io/tui.editor/latest/
  2. 訪問Github網站:https://github.com/nhn/tui.editor

Editor.vue

  1. <template> 
  2.   <div class="main"
  3.     <div id="editor"></div> 
  4.   </div> 
  5. </template> 
  6. <script> 
  7. import Editor from "@toast-ui/editor"
  8. import hljs from "highlight.js"
  9. import codeSyntaxHighlight from "@toast-ui/editor-plugin-code-syntax-highlight"
  10. import '@toast-ui/editor/dist/i18n/zh-cn.js'
  11.  
  12. import "highlight.js/styles/github.css"
  13. import "codemirror/lib/codemirror.css"; // Editor's Dependency Style 
  14. import "@toast-ui/editor/dist/toastui-editor.css"; // Editor's Style 
  15. import "@/styles/index.css"
  16. export default { 
  17.   components: {}, 
  18.   data() { 
  19.     return { 
  20.       editor: null 
  21.     }; 
  22.   }, 
  23.   mounted() { 
  24.     this.editor = new Editor({ 
  25.       el: document.getElementById("editor"), 
  26.       plugins: [[codeSyntaxHighlight, {hljs}]], 
  27.       previewStyle: "vertical"
  28.       height: "100vh"
  29.       initialEditType: "markdown"
  30.       minHeight: "200px"
  31.       initialValue: ""
  32.       placeholder: "你想寫點什么..."
  33.       language:'zh-CN'
  34.       useCommandShortcut: true
  35.       useDefaultHTMLSanitizer: true
  36.       usageStatistics: false
  37.       hideModeSwitch: false
  38.       viewer: true
  39.       toolbarItems: [ 
  40.         "heading"
  41.         "bold"
  42.         "italic"
  43.         "strike"
  44.         "divider"
  45.         "hr"
  46.         "quote"
  47.         "divider"
  48.         "ul"
  49.         "ol"
  50.         "task"
  51.         "indent"
  52.         "outdent"
  53.         "divider"
  54.         "table"
  55.         "image"
  56.         "link"
  57.         "divider"
  58.         "code"
  59.         "codeblock"
  60.       ], 
  61.     }); 
  62.     this.editor.getUI().getToolbar().removeItem("21"); 
  63.   }, 
  64. }; 
  65. </script> 

看似上面幾行代碼,但是也是很費勁才得以完成。

增加功能

首先,我開發這個程序的初衷是更好地方便自己寫文章,所以,我定下了這幾個需求:

  1. 可復制HTML格式文本,方便復制到微信公眾號
  2. 可復制Markdown文本,方便可以復制到稀土掘金、csdn這些博客網站上發布
  3. 可下載Markdown文件,更加方便保存和移動

因篇幅原因,先奉上主要邏輯代碼。這里我使用了clipboard這個將文本復制到剪貼板的插件。網址:https://clipboardjs.com/。

另外,downloadBlobAsFile方法主要是創建Blob對象,然后通過a標簽的download屬性進行下載。

downloadBlobAsFile.js

  1. export default function downloadBlobAsFile(data, filename) { 
  2.     const contentType = 'application/octet-stream'
  3.     if (!data) { 
  4.         console.error(' No data'); 
  5.         return
  6.     } 
  7.  
  8.     if (!filename) { 
  9.         filename = 'filetodonwload.txt'
  10.     } 
  11.  
  12.     if (typeof data === 'object') { 
  13.         data = JSON.stringify(data, undefined, 4); 
  14.     } 
  15.  
  16.     let blob = new Blob([data], {type: contentType}); 
  17.     let e = document.createEvent('MouseEvents'); 
  18.     let a = document.createElement('a'); 
  19.  
  20.     a.download = filename; 
  21.     a.href = URL.createObjectURL(blob); 
  22.     a.dataset.downloadurl = [contentType, a.download, a.href].join(':'); 
  23.     e.initMouseEvent('click'truefalse, window, 0, 0, 0, 0, 0, falsefalsefalsefalse, 0, null); 
  24.     a.dispatchEvent(e); 

Editor.vue

  1. <template> 
  2.   <div class="main"
  3.     <div class="tools"
  4.       <el-button 
  5.           size="mini" 
  6.           type="primary" 
  7.           @click="drawer = true" 
  8.       >工具</el-button> 
  9.       <el-button 
  10.           size="mini" 
  11.           type="primary" 
  12.           @click="aboutView = true" 
  13.       >關于</el-button> 
  14.       <el-dialog 
  15.           :title="'工具'" 
  16.           :visible.sync="drawer" 
  17.           :append-to-body="true" 
  18.       > 
  19.         <div class="tool-innter"
  20.           <el-button type="primary" @click="getHtml" class="htmlbtn" 
  21.           >復制HTML 
  22.           </el-button 
  23.           > 
  24.           <el-button type="primary" @click="getMd" class="mdbtn" 
  25.           >復制MarkDown 
  26.           </el-button 
  27.           > 
  28.           <el-button type="primary" @click="downloadMd" class="downloadbtn" 
  29.           >下載MarkDown 
  30.           </el-button 
  31.           > 
  32.         </div> 
  33.       </el-dialog> 
  34.       <el-dialog 
  35.           :title="'關于'" 
  36.           :visible.sync="aboutView" 
  37.           :append-to-body="true" 
  38.       > 
  39.         <h3>Simple·MarkDown編輯器</h3> 
  40.         <ul class="functionList"
  41.           <li v-for="(item,index) in functionList" :key="index"
  42.             {{item}} 
  43.           </li> 
  44.         </ul> 
  45.         <h3>作者</h3> 
  46.         <ul class="functionList"
  47.           <li v-for="(item,index) in authorList" :key="index">{{item}}</li> 
  48.         </ul> 
  49.         <div class="wxcode"
  50.           <img src="../assets/wxcode.jpeg" alt=""
  51.         </div> 
  52.       </el-dialog> 
  53.     </div> 
  54.     <div id="editor"></div> 
  55.   </div> 
  56. </template> 
  57. <script> 
  58. import Editor from "@toast-ui/editor"
  59. import Clipboard from "clipboard"
  60. import hljs from "highlight.js"
  61. import codeSyntaxHighlight from "@toast-ui/editor-plugin-code-syntax-highlight"
  62. import '@toast-ui/editor/dist/i18n/zh-cn.js'
  63. import downloadBlobAsFile from "../utils/download"
  64.  
  65. import "highlight.js/styles/github.css"; //https://github.com/highlightjs/highlight.js/tree/master/src/styles 
  66. import "codemirror/lib/codemirror.css"; // Editor's Dependency Style 
  67. import "@toast-ui/editor/dist/toastui-editor.css"; // Editor's Style 
  68. import "@/styles/index.css"
  69. export default { 
  70.   components: {}, 
  71.   data() { 
  72.     return { 
  73.       editor: null
  74.       drawer: false
  75.       aboutView: false
  76.       functionList:['頁面簡約','功能實用','支持稀土掘金、CSDN、微信公眾號、知乎','可復制HTML、MarkDown','可下載MarkDown文件'], 
  77.       authorList:['作者:Vam的金豆之路','歡迎關注我的公眾號:前端歷劫之路','我創建了一個技術交流、文章分享群,群里有很多大廠的前端大佬,關注公眾號后,點擊下方菜單了解更多即可加我微信,期待你的加入'
  78.     }; 
  79.   }, 
  80.   methods: { 
  81.     // 復制HTML 
  82.     getHtml() { 
  83.       const clipboard = new Clipboard(".htmlbtn", { 
  84.         target: () => this.editor.preview.el, 
  85.       }); 
  86.       clipboard.on("success", () => { 
  87.         this.$message({ 
  88.           message: "復制成功"
  89.           type: "success"
  90.         }); 
  91.         clipboard.destroy(); 
  92.       }); 
  93.       clipboard.on("error", () => { 
  94.         this.$message.error("復制失敗"); 
  95.         clipboard.destroy(); 
  96.       }); 
  97.     }, 
  98.     // 復制Markdown 
  99.     getMd() { 
  100.       const clipboard = new Clipboard(".mdbtn", { 
  101.         text: () => this.editor.getMarkdown(), 
  102.       }); 
  103.       clipboard.on("success", () => { 
  104.         this.$message({ 
  105.           message: "復制成功"
  106.           type: "success"
  107.         }); 
  108.         clipboard.destroy(); 
  109.       }); 
  110.       clipboard.on("error", () => { 
  111.         this.$message.error("復制失敗"); 
  112.         clipboard.destroy(); 
  113.       }); 
  114.     }, 
  115.     // 下載Markdown 
  116.     downloadMd() { 
  117.       if (this.editor.getMarkdown().trim()) { 
  118.         downloadBlobAsFile(this.editor.getMarkdown(), "unnamed.md"); 
  119.       } else { 
  120.         this.$message.error("下載失敗"); 
  121.       } 
  122.     }, 
  123.   }, 
  124.   mounted() { 
  125.     this.editor = new Editor({ 
  126.       el: document.getElementById("editor"), 
  127.       plugins: [[codeSyntaxHighlight, {hljs}]], 
  128.       previewStyle: "vertical"
  129.       height: "100vh"
  130.       initialEditType: "markdown"
  131.       minHeight: "200px"
  132.       initialValue: ""
  133.       placeholder: "你想寫點什么..."
  134.       language:'zh-CN'
  135.       useCommandShortcut: true
  136.       useDefaultHTMLSanitizer: true
  137.       usageStatistics: false
  138.       hideModeSwitch: false
  139.       viewer: true
  140.       toolbarItems: [ 
  141.         "heading"
  142.         "bold"
  143.         "italic"
  144.         "strike"
  145.         "divider"
  146.         "hr"
  147.         "quote"
  148.         "divider"
  149.         "ul"
  150.         "ol"
  151.         "task"
  152.         "indent"
  153.         "outdent"
  154.         "divider"
  155.         "table"
  156.         "image"
  157.         "link"
  158.         "divider"
  159.         "code"
  160.         "codeblock"
  161.       ], 
  162.     }); 
  163.     this.editor.getUI().getToolbar().removeItem("21"); 
  164.   }, 
  165. }; 
  166. </script> 

針對微信公眾號進行樣式優化

::v-deep是深度作用選擇器,主要是為了覆蓋原有的樣式所用。

  1. ::v-deep ul li { 
  2.   list-style-type: disc !important; 
  3.  
  4. ::v-deep ol li { 
  5.   list-style-type: decimal !important; 
  6.  
  7. ::v-deep ul li::before, ::v-deep ol li::before { 
  8.   content: none; 
  9. ::v-deep .tui-editor-contents p>code{ 
  10.   background-color: #fff5f5; 
  11.   color: #ff502c; 
  12. ::v-deep .tui-editor-contents pre { 
  13.   width: 100%; 
  14.   overflow: auto; 

線上體驗

https://www.maomin.club/site/mdeditor/

結語

謝謝閱讀,希望沒有浪費你的時間。

源碼地址:

https://github.com/maomincoding/simpleMdEditor

 

責任編輯:姜華 來源: 前端歷劫之路
相關推薦

2023-06-20 00:04:18

框架開發UMD

2021-11-24 09:12:11

Markdown編輯器Linux

2020-09-18 06:00:51

開源Markdown編輯器

2020-09-16 10:27:50

MarkDown編輯器編程

2024-03-06 08:26:29

2021-08-26 05:15:22

圖片編輯器 H5-DooringMitu-Doorin

2022-08-31 08:32:22

數據可視化項目nocode

2017-05-23 19:19:16

開源Markdown編輯器

2021-10-21 10:58:03

Markdown編輯器

2021-10-27 14:55:57

Mark TextMarkdown編輯器

2022-04-27 08:42:20

Markdown編輯神器

2021-04-08 14:58:59

開發前端編輯器

2021-06-23 06:12:38

Subtitld編輯器開源

2021-04-04 08:16:09

NewsFlash閱讀器開源

2022-09-05 13:16:42

MicroVim編輯器

2022-01-10 18:16:24

編輯器Typora Markdown

2023-09-10 23:22:33

Zettlr筆記編輯器

2021-04-12 08:31:53

PC-Dooring項目PC端搭建

2015-06-01 07:37:42

開發產品

2021-12-23 10:59:30

開源技術 軟件
點贊
收藏

51CTO技術棧公眾號

中文字幕不卡在线视频极品| 亚洲欧美另类图片小说| 欧美在线视频一区| 粉嫩精品久久99综合一区| 国产电影一区二区| 姬川优奈aav一区二区| 少妇免费毛片久久久久久久久| 国产精品欧美激情在线| 狠狠爱综合网| 中文一区二区视频| 精品视频站长推荐| 日韩精品第二页| 精品欧美国产一区二区三区| 手机看片福利永久国产日韩| 黄色三级网站在线观看| 蜜臀av一区二区在线免费观看 | 黄色成人在线观看| 懂色av一区二区三区免费看| 国产精品免费久久久久影院| 日本系列第一页| 久久美女精品| 亚洲美女福利视频网站| 中文字幕无人区二| 少妇高潮一区二区三区99| 国产jk精品白丝av在线观看| 爱看av在线| 综合久久成人| 精品成人乱色一区二区| 日韩最新中文字幕| h视频网站在线观看| 成人av中文字幕| 亚洲va国产va天堂va久久| 日本丰满少妇做爰爽爽| 亚洲免费在线| 午夜精品久久久久久99热| 国产97免费视频| 日韩理论在线| 在线播放日韩专区| 亚洲久久久久久久| 任我爽精品视频在线播放| 精品久久久久久久久久久久包黑料 | 免费网站在线观看人| 中文字幕中文乱码欧美一区二区| 久热这里只精品99re8久| 懂色av蜜臀av粉嫩av分享吧| 国产在线一区观看| 成人做爰www免费看视频网站| 中国一区二区视频| 日韩av在线免费观看不卡| 日韩免费视频在线观看| 一级成人黄色片| 久久人人精品| 日本亚洲欧洲色α| jizz国产在线| 老司机一区二区| 91系列在线播放| 国产熟女一区二区三区五月婷 | av在线播放网址| 日韩超碰人人爽人人做人人添| 亚洲第一福利网| 一二三不卡视频| 九色精品国产蝌蚪| 在线观看免费高清视频97| 波多野结衣一二三四区| 99国产精品免费视频观看| 北条麻妃在线一区二区| 外国一级黄色片| 亚洲电影在线| 日本午夜在线亚洲.国产| 亚洲国产无线乱码在线观看| 美女爽到高潮91| 99中文字幕| 婷婷久久久久久| 久久久久国色av免费看影院| 亚洲国产一区在线| gogogogo高清视频在线| 亚洲成人在线观看视频| 激情内射人妻1区2区3区| 日韩精品一级毛片在线播放| 精品国产伦一区二区三区观看体验| 午夜剧场免费看| 国产一区二区精品久| 久久久精品一区二区| 精品少妇theporn| 久久久精品日韩| 亚洲综合大片69999| 午夜福利视频一区二区| 欧美国产在线观看| 欧美亚洲黄色片| 成人网ww555视频免费看| 337p亚洲精品色噜噜噜| 亚洲视频在线播放免费| 91麻豆精品国产91久久久平台| 欧美日本中文字幕| 无码人妻aⅴ一区二区三区有奶水| 久久精品国产久精国产爱| 99在线高清视频在线播放| 免费在线高清av| 亚洲精品久久7777| 国产天堂在线播放| 亚洲福利合集| 中文字幕免费精品一区高清| 亚洲国产精品午夜在线观看| 老色鬼精品视频在线观看播放| 国产成人亚洲欧美| 91在线视频| 黑人巨大精品欧美一区二区一视频 | 亚洲人成影视在线观看| 岛国av在线网站| 91精品国产免费| caopeng视频| 欧美午夜不卡| 国产综合久久久久久| 日本成人一区| 亚洲第一av色| 免费观看黄网站| 成人羞羞网站入口免费| 26uuu另类亚洲欧美日本一| 国产片高清在线观看| 国产欧美综合在线观看第十页| 午夜免费福利小电影| www.久久热| 色哟哟网站入口亚洲精品| 日韩三级小视频| 粉嫩aⅴ一区二区三区四区五区| 亚洲欧美日韩在线综合| 免费观看成人性生生活片 | 国产日韩专区| 成人在线免费网站| 超碰在线caoporn| 欧美日韩大陆在线| 亚洲精品色午夜无码专区日韩| 99在线精品免费视频九九视| 国产精品久久久久久久免费大片| gogo在线观看| 日韩欧美区一区二| 丁香花五月激情| 韩国成人精品a∨在线观看| 亚洲第一导航| 久久福利在线| 日韩在线不卡视频| 伊人精品一区二区三区| 中文字幕欧美国产| 中文字幕第36页| 精品高清久久| 国产精品久久一| jizz在线观看中文| 欧美在线播放高清精品| 日本猛少妇色xxxxx免费网站| 天堂va蜜桃一区二区三区| 欧美日韩综合精品| 欧美在线va视频| 一区国产精品视频| 在线观看不卡的av| 中文字幕在线不卡一区| 一级淫片在线观看| 国产精品豆花视频| 国产精品国产亚洲精品看不卡15| 123区在线| 日韩大陆毛片av| 99久久久久久久久| 中文文精品字幕一区二区| 少妇一级淫免费播放| 亚洲成av人片乱码色午夜| 96久久精品| 岛国在线视频网站| 在线播放日韩欧美| av高清一区二区| 午夜精品一区在线观看| 成年人网站免费在线观看| 日本不卡高清视频| 国产成人免费高清视频| 国偷自产av一区二区三区| 琪琪第一精品导航| 黄色片免费在线观看| 亚洲国产高清高潮精品美女| 亚洲国产精品无码久久久| 国产精品久久久爽爽爽麻豆色哟哟| 中文字幕在线视频一区二区三区| 好吊视频一区二区三区四区| 免费一区二区三区| 日韩国产91| 97久久精品国产| 91精彩在线视频| 精品三级av在线| 中文字幕免费高清网站| 伊人开心综合网| 短视频在线观看| 国产在线视频精品一区| 免费观看美女裸体网站| 欧美激情另类| 久久精品久久精品国产大片| 欧美aaa级| 欧美俄罗斯性视频| 成人一区二区不卡免费| 精品久久久久一区二区国产| 中文字幕第315页| 亚洲第一搞黄网站| 天天操夜夜操av| 97成人超碰视| 日本美女久久久| 日韩中文字幕区一区有砖一区| 4444亚洲人成无码网在线观看 | 精品一区二区成人免费视频| 无码日韩精品一区二区免费| 91免费版网站入口| 天天综合网站| 亚州成人av在线| 国产在线观看a视频| 亚洲人av在线影院| 老牛影视av牛牛影视av| 在线电影一区二区三区| av毛片在线免费观看| 亚洲国产中文字幕| 欧美色图亚洲天堂| 国产精品福利电影一区二区三区四区 | 国产精品久久久久久久久久久久久久久| 欧美与黑人午夜性猛交久久久| 午夜dj在线观看高清视频完整版| 中文字幕日韩av综合精品| 五月婷婷深深爱| 精品美女一区二区| aaa国产视频| 9191久久久久久久久久久| 欧美三级网站在线观看| 欧美视频在线视频| 日韩激情在线播放| 亚洲自拍偷拍图区| 欧美激情国产精品免费| 亚洲日本在线天堂| 三级黄色免费观看| 中文一区在线播放| 性猛交ⅹxxx富婆video| 久久久国产综合精品女国产盗摄| 欧美xxxx×黑人性爽| 成人丝袜视频网| 麻豆av免费看| 成人中文字幕电影| 蜜桃色一区二区三区| 国产精品一区二区你懂的| 国产精欧美一区二区三区白种人| 免费视频最近日韩| 天天色综合社区| 麻豆91精品视频| 中文字幕久久av| 九九热在线视频观看这里只有精品| 午夜久久久精品| 久久99精品国产91久久来源| 在线能看的av网站| 国产自产视频一区二区三区| 四虎1515hh.com| 国产白丝网站精品污在线入口| 亚洲成年人av| 91在线一区二区| 国产中年熟女高潮大集合| 久久久精品国产99久久精品芒果| 1024在线看片| 中文字幕亚洲欧美在线不卡| 日韩黄色免费观看| 亚洲成人黄色影院| 精品免费囯产一区二区三区 | 日韩国产综合| 福利在线小视频| 国产欧美亚洲一区| 88av.com| 国产麻豆精品一区二区| 黑森林av导航| 2024国产精品| 亚洲精品自拍视频在线观看| 一区二区三区四区不卡视频| 日韩精品视频免费播放| 在线免费观看日本一区| 一区二区三区www污污污网站| 日韩一区二区三区在线视频| 午夜福利视频一区二区| 日韩亚洲国产中文字幕| 大黄网站在线观看| 国产91在线播放精品91| www.久久久.com| 美媛馆国产精品一区二区| 99久久99热这里只有精品| 欧日韩免费视频| 日韩精品一卡二卡三卡四卡无卡| 亚洲视频在线不卡| 91在线免费播放| 蜜臀av午夜精品久久| 亚洲v精品v日韩v欧美v专区 | 亚洲国产精品推荐| 在线播放毛片| 亚洲大胆人体av| 午夜在线观看一区| 中文字幕日韩精品一区 | 欧美一区二区三区高清视频| 免费观看黄色的网站| 国产欧美短视频| 国产永久免费网站| 91麻豆精品一区二区三区| 青青操在线播放| 欧美日韩一区免费| 国产成a人亚洲精v品无码| 亚洲性线免费观看视频成熟| 欧美卡一卡二| 国产精选久久久久久| 欧美亚洲国产日韩| 超碰10000| 蜜臀av性久久久久蜜臀av麻豆| 国产 xxxx| 亚洲欧美国产77777| 99超碰在线观看| 精品国产乱码久久久久久久| 黄色精品在线观看| 国产精品丝袜视频| 亚洲日产av中文字幕| 日本天堂免费a| 久久精品国产99久久6| 免费污网站在线观看| 五月天精品一区二区三区| 99久久久久成人国产免费| 国产一区二区三区在线看| 在线中文字幕播放| 国产麻豆日韩| 午夜精品久久99蜜桃的功能介绍| 福利片一区二区三区| 国产精品美女一区二区在线观看| 亚洲欧美精品一区二区三区| 亚洲国产精品国自产拍av秋霞| 香蕉久久aⅴ一区二区三区| 91精品综合久久久久久五月天| 日韩免费av| 男人搞女人网站| 国产亚洲精品超碰| 伦av综合一区| 亚洲视频专区在线| 日韩欧美精品电影| 日韩精品久久久| 日韩综合小视频| www.黄色在线| 欧美自拍偷拍午夜视频| 成人资源www网在线最新版| 国产成人精品免高潮费视频| av中文一区| 亚洲色图 在线视频| 国产女主播一区| 中文字幕一级片| xxx一区二区| 欧美片网站免费| 成人黄色片免费| 成人av网址在线| 精品欧美一区二区三区免费观看 | 免费成人深夜夜行视频| 一区二区三区高清视频在线观看| 懂色av成人一区二区三区| 女人天堂av在线播放| 国产精品久久久久久av福利软件| 妖精视频一区二区三区免费观看| 欧美日韩性生活片| 99久久伊人精品| 日本高清不卡码| 在线播放国产一区二区三区| 亚洲一区二区三区四区| 亚洲精品中文字幕在线| 国产综合久久久久久鬼色| 精品无码人妻一区二区三| 亚洲精品成人网| 草民电影神马电影一区二区| 国产精品久久成人免费观看| 成人黄色小视频在线观看| 日韩免费av网站| 欧美成年人视频网站| 欧洲亚洲成人| 久久久精品三级| 亚洲精品视频在线看| 亚洲欧美日本在线观看| 国产精品一区二区女厕厕| 欧美日韩亚洲一区在线观看| 中文字幕5566| 欧美另类videos死尸| hd国产人妖ts另类视频| 日韩av在线一区二区三区| 九色综合狠狠综合久久| 国产成人精品a视频一区| 伊人久久大香线蕉av一区二区| 精品国产鲁一鲁****| 大肉大捧一进一出好爽视频| 日本一区二区视频在线| 成人免费公开视频| 国产精品爱久久久久久久| 911久久香蕉国产线看观看| 丰满少妇一区二区三区| 欧美丰满美乳xxx高潮www| 麻豆mv在线看| 中文一区一区三区免费| 99久久免费视频.com| 国产精品嫩草影院精东| 98精品国产高清在线xxxx天堂| 欧美电影免费播放| 搡老熟女老女人一区二区| 日韩午夜在线观看视频| 欧美精选视频一区二区| 久久久久久人妻一区二区三区|