色五月色开心色婷婷色丁香,五月婷婷丁香花综合网,婷婷丁香五月激情综合在线,五月婷婷六月丁香动漫,婷婷丁香五月激情综合在线,丁香花中文字幕在线观看,播五月色五月开心五月网,开心激情综合网,狠狠色丁香婷婷综合最新地址,丁香视频在线观看,狠狠做六月爱婷婷综合av,久久激情五月丁香伊人

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運(yùn)營(yíng)的一線實(shí)戰(zhàn)洞察。

數(shù)據(jù)可視化建模與自動(dòng)布局:從數(shù)據(jù)結(jié)構(gòu)到可復(fù)用圖編輯器

數(shù)據(jù)可視化建模與自動(dòng)布局:從數(shù)據(jù)結(jié)構(gòu)到可復(fù)用圖編輯器 “diagram-design”這個(gè)項(xiàng)目名第一眼容易讓人覺(jué)得只是個(gè)畫(huà)圖Demo但實(shí)際上它要做的事是“把一張圖變成一套可描述、可計(jì)算、可復(fù)用的數(shù)據(jù)模型”。我在拿到這個(gè)項(xiàng)目時(shí)很快就意識(shí)到它的重點(diǎn)不是“畫(huà)得好看”而是“讓圖自己會(huì)排、會(huì)算、會(huì)適配”。簡(jiǎn)單來(lái)說(shuō)它解決的是手工拖拽畫(huà)圖效率低、后期維護(hù)成本高、圖表表達(dá)不一致這三類(lèi)老問(wèn)題。無(wú)論是做架構(gòu)圖、知識(shí)圖譜、依賴關(guān)系圖還是項(xiàng)目匯報(bào)里的數(shù)據(jù)流向圖只要是需要把復(fù)雜關(guān)系可視化的場(chǎng)景這個(gè)工具鏈都值得參考。適合想自己實(shí)現(xiàn)一個(gè)可視化編輯器的前端開(kāi)發(fā)、需要搭建低代碼圖表平臺(tái)的技術(shù)負(fù)責(zé)人以及準(zhǔn)備做圖形化表達(dá)但不知道如何拆解實(shí)體、關(guān)系、布局、渲染四層關(guān)系的初學(xué)者。1. 項(xiàng)目到底解決了什么問(wèn)題1.1 手工畫(huà)圖的三個(gè)老大難我在很多項(xiàng)目里看到團(tuán)隊(duì)用白板工具或者繪圖軟件畫(huà)各種圖剛開(kāi)始很爽畫(huà)完發(fā)出去也很有面子。但最多兩個(gè)月問(wèn)題就集中爆發(fā)業(yè)務(wù)變了要改字段、加模塊可原圖的作者已經(jīng)不在這個(gè)組了剩下的人只能重新畫(huà)一遍又或者同一套數(shù)據(jù)在不同人手里畫(huà)出了三種風(fēng)格匯報(bào)時(shí)老板問(wèn)“到底哪個(gè)是準(zhǔn)確的”沒(méi)人敢拍板。這類(lèi)問(wèn)題的本質(zhì)是“圖的語(yǔ)義沒(méi)有和數(shù)據(jù)綁定”。圖只是一張圖片而不是一組結(jié)構(gòu)化對(duì)象。diagram-design的項(xiàng)目思路不同它把圖拆成了節(jié)點(diǎn)Node、連線Edge、分組Group和標(biāo)注Annotation并把這些元素映射到一份配置文件里。這樣當(dāng)數(shù)據(jù)源變化時(shí)圖可以自動(dòng)刷新而不是讓人去手動(dòng)移動(dòng)箭頭。另外一個(gè)我特別在意的問(wèn)題是“改圖成本”。很多團(tuán)隊(duì)會(huì)把系統(tǒng)架構(gòu)圖畫(huà)進(jìn)文檔里架構(gòu)一變文檔就過(guò)期翻新文檔又沒(méi)人愿意干。如果圖本身是由代碼或配置生成的那么每次提交代碼時(shí)順帶更新配置文檔圖就永遠(yuǎn)是最新的。這是我始終認(rèn)為“配置即圖表”比“拖拽即圖表”更值得投入的原因。1.2 從“畫(huà)圖”到“描述圖”的思路轉(zhuǎn)變傳統(tǒng)繪圖工具的交互邏輯是“選中-拖拽-對(duì)齊-微調(diào)”它更偏向藝術(shù)家視角而diagram-design更傾向于程序員視角你描述圖里有哪些實(shí)體、它們之間有什么關(guān)系、方向是什么、層級(jí)怎么定義剩下的位置計(jì)算交給布局算法。我舉個(gè)最簡(jiǎn)單的例子一個(gè)依賴關(guān)系圖A依賴BB依賴CC又依賴A。如果用手工畫(huà)連線的交點(diǎn)會(huì)讓你頭大。但如果用布局算法先把三者的依賴關(guān)系抽象成一張有向圖再用拓?fù)渑判蚺袛鄬蛹?jí)然后用同層對(duì)齊算法計(jì)算每層的上下順序最后用正交連線算法把邊轉(zhuǎn)化成橫平豎直的折線那整個(gè)過(guò)程就是“數(shù)據(jù)進(jìn)圖形出”完全不需要人干預(yù)。這個(gè)思路非常核心它帶來(lái)的好處有幾點(diǎn)數(shù)據(jù)驅(qū)動(dòng)圖中的每個(gè)節(jié)點(diǎn)可以直接對(duì)應(yīng)數(shù)據(jù)庫(kù)里的一張表、接口里的一個(gè)字段、運(yùn)維平臺(tái)里的一臺(tái)機(jī)器。確定性強(qiáng)同一份配置永遠(yuǎn)生成同一張圖不會(huì)因?yàn)楫?huà)圖的人不同而風(fēng)格迥異??蓴U(kuò)展要加新的節(jié)點(diǎn)類(lèi)型、連線樣式、布局策略都只是增加一個(gè)類(lèi)或一段配置的問(wèn)題。1.3 項(xiàng)目邊界與適用場(chǎng)景認(rèn)清邊界比急著寫(xiě)代碼更重要。diagram-design不適合做成Photoshop那種自由畫(huà)布工具它更適合做“半結(jié)構(gòu)化”的可視化場(chǎng)景。什么意思就是用戶能調(diào)整節(jié)點(diǎn)位置和分組區(qū)域但圖的總體結(jié)構(gòu)仍然由數(shù)據(jù)模型和布局算法決定。判斷一個(gè)場(chǎng)景適不適合這類(lèi)項(xiàng)目我一般看三個(gè)條件數(shù)據(jù)是否有明確的實(shí)體關(guān)系圖是否需要頻繁更新多人協(xié)作時(shí)是否需要保證表達(dá)一致性。如果三個(gè)條件至少滿足兩個(gè)那diagram-design這類(lèi)方案就比通用繪圖軟件合適。典型場(chǎng)景包括業(yè)務(wù)流程圖、系統(tǒng)架構(gòu)圖、微服務(wù)調(diào)用圖、組織架構(gòu)圖、知識(shí)圖譜預(yù)覽以及數(shù)據(jù)血緣分析面板這類(lèi)需要嵌入到后臺(tái)產(chǎn)品里的局部功能。2. 核心模塊拆解與方案選型2.1 數(shù)據(jù)模型圖的抽象層級(jí)diagram-design的底層不是面、線、顏色這些視覺(jué)概念而是數(shù)據(jù)模型。我設(shè)計(jì)這個(gè)項(xiàng)目時(shí)把模型分成四層第一層是Graph它是最頂層容器保存全局屬性比如畫(huà)布尺寸、縮放比例、布局類(lèi)型。第二層是Node節(jié)點(diǎn)必須包含id、type、position、size、data五類(lèi)信息其中data是業(yè)務(wù)數(shù)據(jù)體和圖形展示解耦。第三層是Edge保存source、target、direction、points它描述兩節(jié)點(diǎn)之間的關(guān)系但不關(guān)心箭頭長(zhǎng)什么樣。第四層是ViewState記錄用戶縮放水平、已展開(kāi)的分支、被選中的節(jié)點(diǎn)等交互狀態(tài)。這個(gè)分層最大的好處是“數(shù)據(jù)層和渲染層可以獨(dú)立測(cè)試”。我經(jīng)常先只寫(xiě)一堆JSON跑一遍布局算法確認(rèn)坐標(biāo)都正確了再去做視覺(jué)美化。如果一上來(lái)就綁定了DOM操作調(diào)試會(huì)痛苦得多。實(shí)際建模時(shí)我建議Node的data字段不要直接塞對(duì)象而是存一個(gè)引用或者key通過(guò)store取出。這樣當(dāng)幾百個(gè)節(jié)點(diǎn)需要序列化保存時(shí)圖描述文件不會(huì)無(wú)限膨脹而且還方便做增量更新。2.2 布局引擎為什么算法是靈魂布局是diagram-design里最容易被低估的部分同時(shí)也是我認(rèn)為最值得細(xì)細(xì)打磨的部分。如果節(jié)點(diǎn)位置全靠用戶手動(dòng)拖那再好的圖形引擎也只是一塊大白板。而要自動(dòng)布局就需要一套可插拔的布局策略。我初期實(shí)現(xiàn)時(shí)只做了三種足夠覆蓋80%的業(yè)務(wù)場(chǎng)景層級(jí)布局適合依賴關(guān)系圖、流程圖核心是用最長(zhǎng)路徑分層再按層內(nèi)規(guī)模做垂直對(duì)齊。力導(dǎo)向布局適合知識(shí)圖譜、社交網(wǎng)絡(luò)圖用彈簧模型讓關(guān)聯(lián)緊密的節(jié)點(diǎn)自然靠近。網(wǎng)格布局適合工單看板、卡片大盤(pán)純粹按照行列排布簡(jiǎn)單直接。布局算法必須保證“無(wú)重疊”和“連通性可見(jiàn)”。很多初級(jí)實(shí)現(xiàn)容易踩的坑是算完坐標(biāo)后節(jié)點(diǎn)疊成一團(tuán)連線全部穿過(guò)節(jié)點(diǎn)。這個(gè)問(wèn)題沒(méi)有銀彈只能通過(guò)兩個(gè)手段規(guī)避布局前對(duì)圖做連通分量劃分把不相關(guān)的子圖拆開(kāi)單獨(dú)排列布局后對(duì)每一個(gè)節(jié)點(diǎn)做AABB碰撞檢測(cè)發(fā)現(xiàn)重疊就局部迭代外擴(kuò)。2.3 渲染方案SVG還是Canvas我在這件事上糾結(jié)過(guò)很長(zhǎng)時(shí)間最終結(jié)論是“按場(chǎng)景混用”而非二選一。diagram-design的默認(rèn)渲染層用SVG原因是節(jié)點(diǎn)數(shù)量一般不超過(guò)上千SVG的DOM語(yǔ)義讓事件綁定和樣式定制都太方便了——比如節(jié)點(diǎn)hover變色、點(diǎn)擊彈出詳情面板都是天然支持。而且SVG導(dǎo)出為矢量圖在匯報(bào)場(chǎng)景里很實(shí)用。但是當(dāng)節(jié)點(diǎn)數(shù)量上萬(wàn)時(shí)SVG的DOM節(jié)點(diǎn)壓力會(huì)非常明顯滾動(dòng)和縮放都會(huì)卡頓。所以我額外實(shí)現(xiàn)了一個(gè)Canvas渲染通道專門(mén)處理大規(guī)模只讀預(yù)覽場(chǎng)景。這個(gè)通道不處理點(diǎn)擊交互只負(fù)責(zé)把布局引擎算好的坐標(biāo)批量畫(huà)成圖像。簡(jiǎn)單說(shuō)SVG通道負(fù)責(zé)“編輯態(tài)”Canvas通道負(fù)責(zé)“展示態(tài)”。這里分享一個(gè)細(xì)節(jié)兩套渲染通道對(duì)應(yīng)同一份數(shù)據(jù)模型用戶在編輯態(tài)拖拽了節(jié)點(diǎn)位置模型里更新position展示態(tài)重新繪制時(shí)直接用新坐標(biāo)。兩個(gè)通道之間沒(méi)有任何同步問(wèn)題因?yàn)楫?huà)布永遠(yuǎn)是模型的影子絕不能反過(guò)來(lái)讓DOM成為數(shù)據(jù)源。2.4 交互設(shè)計(jì)拖拽、縮放、折疊交互層容易做得很“重”很多編輯器把拖拽、縮放、框選、連線全部堆在一起。diagram-design我做得相對(duì)克制拖拽是移動(dòng)單個(gè)節(jié)點(diǎn)縮放是按住畫(huà)布平移和滾輪縮放分組折疊則通過(guò)點(diǎn)擊分組標(biāo)題欄切換。這三個(gè)交互覆蓋了大多數(shù)查看和微調(diào)需求。值得強(qiáng)調(diào)的是“拖拽過(guò)程中要實(shí)時(shí)觸發(fā)布局重算嗎”這個(gè)問(wèn)題的選擇。我的經(jīng)驗(yàn)是不重算拖拽只是改變VieweState里的覆蓋坐標(biāo)全部拖完點(diǎn)擊“自動(dòng)整理”按鈕才回到布局算法重新排列。這么做有幾個(gè)好處操作響應(yīng)不卡用戶手動(dòng)調(diào)整的結(jié)果不會(huì)被算法搶走真正需要重排時(shí)用戶有明確預(yù)期。另外交互層的所有操作都要進(jìn)入操作歷史棧也就是支持撤銷(xiāo)重做。這看起來(lái)是編輯器標(biāo)配但實(shí)現(xiàn)起來(lái)涉及節(jié)點(diǎn)增刪、位置更新、分組變更等多類(lèi)操作的類(lèi)型判定如果不提前抽象成一個(gè)command模式后期填坑會(huì)非常痛苦。3. 實(shí)操過(guò)程從零搭起一個(gè)可用版本3.1 定義數(shù)據(jù)模型的JSON Schema一個(gè)新項(xiàng)目最容易犯的錯(cuò)誤是一上來(lái)就畫(huà)界面。我現(xiàn)在習(xí)慣從一開(kāi)始就用一份JSON Schema把數(shù)據(jù)結(jié)構(gòu)釘死界面寫(xiě)得再快也不如數(shù)據(jù)模型穩(wěn)定帶來(lái)的節(jié)省多。下面是我在diagram-design里用的一份示例配置為了演示做了精簡(jiǎn)但字段結(jié)構(gòu)和高保真版本一致。{ graph: { type: hierarchy, width: 1400, height: 900, nodeDefaultWidth: 160, nodeDefaultHeight: 60 }, nodes: [ { id: svc-payment, type: box, data: { title: 支付服務(wù), status: ready, version: v2.3.0 } }, { id: svc-order, type: box, data: { title: 訂單服務(wù), status: warning, version: v1.9.0 } }, { id: svcpool-mysql, type: cylinder, data: { title: 核心庫(kù)主實(shí)例, role: primary } } ], edges: [ { id: e1, source: svc-order, target: svc-payment, kind: sync-call }, { id: e2, source: svc-payment, target: svcpool-mysql, kind: read-write } ], groups: [ { id: grp-order-line, title: 訂單域, nodeIds: [svc-order, svc-payment] } ], viewState: { zoom: 1, unfoldGroups: [grp-order-line], selectedIds: [] } }這份Schema雖然簡(jiǎn)單但骨架已經(jīng)很完整。注意我在Node里沒(méi)有直接存坐標(biāo)而是交給布局引擎去計(jì)算這樣可以避免手工寫(xiě)布局造成的牽一發(fā)動(dòng)全身。真正的坐標(biāo)會(huì)保存在運(yùn)行時(shí)的一個(gè)Map里序列化時(shí)也不會(huì)寫(xiě)進(jìn)配置除非用戶主動(dòng)拖拽形成了覆蓋坐標(biāo)。3.2 編寫(xiě)一個(gè)輕量的層級(jí)布局算法以依賴關(guān)系圖為例我實(shí)現(xiàn)過(guò)一個(gè)經(jīng)典的分層布局算法核心邏輯分三步拓?fù)浞謱?、層?nèi)排序、坐標(biāo)換算。拓?fù)浞謱拥拇a邏輯如下def assign_layers(graph): indegree {n: 0 for n in graph.nodes} out_edges {n: [] for n in graph.nodes} for edge in graph.edges: out_edges[edge.source].append(edge.target) indegree[edge.target] 1 queue [n for n in graph.nodes if indegree[n] 0] layer {} depth 0 while queue: for n in queue: layer[n] depth next_queue [] for n in queue: for t in out_edges[n]: indegree[t] - 1 if indegree[t] 0: next_queue.append(t) queue next_queue depth 1 # 簡(jiǎn)單處理環(huán)剩余未分層節(jié)點(diǎn)放到最后一層 return layer層內(nèi)排序我通常用的是“減少交叉邊”的啟發(fā)式算法也就是同層節(jié)點(diǎn)按與其前驅(qū)節(jié)點(diǎn)連接數(shù)量的加權(quán)和排序這樣可以大幅降低連線交叉。坐標(biāo)換算則更簡(jiǎn)單同一層節(jié)點(diǎn)按順序放到一條水平線上層與層之間用固定間距縱向排開(kāi)。這個(gè)算法的輸出是一份坐標(biāo)映射表nodeId - (x, y)。整個(gè)過(guò)程不依賴任何渲染代碼所以我可以用單測(cè)驗(yàn)證任意復(fù)雜的依賴圖是否會(huì)出現(xiàn)重疊。這是整個(gè)項(xiàng)目里收益最高的測(cè)試強(qiáng)烈建議把這個(gè)單測(cè)寫(xiě)起來(lái)。3.3 渲染與樣式系統(tǒng)實(shí)現(xiàn)渲染層我做了一套比較靈活的模板方案每種節(jié)點(diǎn)類(lèi)型對(duì)應(yīng)一個(gè)渲染函數(shù)傳入數(shù)據(jù)模型返回帶樣式的SVG節(jié)點(diǎn)組件。比如普通服務(wù)節(jié)點(diǎn)渲染為圓角矩形內(nèi)部有標(biāo)題和狀態(tài)圓點(diǎn)數(shù)據(jù)庫(kù)節(jié)點(diǎn)渲染為圓柱形干系人節(jié)點(diǎn)渲染為圓形頭像。這樣后續(xù)增加新節(jié)點(diǎn)類(lèi)型時(shí)不用改動(dòng)主流程只要新增一個(gè)渲染函數(shù)并注冊(cè)進(jìn)去。樣式系統(tǒng)要與主題分離。我定義了三層主題基礎(chǔ)主題負(fù)責(zé)字體、畫(huà)布底色、網(wǎng)格線節(jié)點(diǎn)主題負(fù)責(zé)節(jié)點(diǎn)顏色、描邊、陰影連線主題負(fù)責(zé)直線還是折線、顏色和粗細(xì)。切換深色模式時(shí)只替換主題配置不需要重繪模型。寫(xiě)渲染代碼時(shí)我踩過(guò)一個(gè)坑SVG的auto換行支持很差text標(biāo)簽不會(huì)自動(dòng)換行。我的解決辦法是在渲染前用Canvas的measureText估算文本寬度如果超出節(jié)點(diǎn)寬度就提前拆行再逐行渲染。以下是一段核心的換行邏輯function splitText(text, maxWidth, fontSize) { const ctx measureContext; // 預(yù)先創(chuàng)建的離屏canvas上下文 const chars Array.from(text); const lines []; let current ; for (const ch of chars) { const testLine current ch; if (ctx.measureText(testLine).width maxWidth current) { lines.push(current); current ch; } else { current testLine; } } if (current) lines.push(current); return lines; }這段代碼看起來(lái)普通但它在實(shí)際項(xiàng)目中價(jià)值巨大。因?yàn)樽詣?dòng)布局算出來(lái)的節(jié)點(diǎn)寬度都是統(tǒng)一的如果標(biāo)題超長(zhǎng)不換行要么溢出到節(jié)點(diǎn)外面要么被裁剪掉兩種情況都會(huì)讓使用者覺(jué)得這個(gè)工具“不太聰明”。做了拆行之后節(jié)點(diǎn)高度會(huì)自適應(yīng)觀感會(huì)提升一個(gè)檔次。3.4 規(guī)?;秩九c性能優(yōu)化當(dāng)圖里節(jié)點(diǎn)數(shù)超過(guò)兩千時(shí)優(yōu)化點(diǎn)的順序就變得很重要。我的實(shí)測(cè)結(jié)論是最先優(yōu)化的不是算法而是渲染調(diào)度和事件委托。先說(shuō)渲染調(diào)度。SVG的appendChild操作過(guò)多會(huì)阻塞主線程所以我把初始化渲染改成了分幀渲染每幀只處理200個(gè)節(jié)點(diǎn)加上requestIdleCallback的權(quán)重區(qū)分高優(yōu)先級(jí)節(jié)點(diǎn)先渲染低優(yōu)先級(jí)區(qū)域后補(bǔ)。這樣即使整圖有五千節(jié)點(diǎn)首屏也不會(huì)白屏。再說(shuō)事件委托。拖拽、點(diǎn)擊這類(lèi)交互如果給每個(gè)節(jié)點(diǎn)都綁定監(jiān)聽(tīng)器內(nèi)存壓力大且不好清理。我用了事件委托在SVG根元素上監(jiān)聽(tīng)pointermove、pointerup等事件再用data-node-id屬性反查目標(biāo)節(jié)點(diǎn)。這個(gè)方案不僅性能好還能自然支持新增節(jié)點(diǎn)無(wú)需重新綁定事件。第三個(gè)優(yōu)化是視口裁剪。我計(jì)算當(dāng)前視口在模型坐標(biāo)系里的可見(jiàn)范圍只渲染落在范圍內(nèi)的節(jié)點(diǎn)和邊其余節(jié)點(diǎn)全部跳過(guò)。等于說(shuō)無(wú)論數(shù)據(jù)量多大單幀渲染量維持在千級(jí)以內(nèi)滾動(dòng)切換視口時(shí)才增量渲染。三檔優(yōu)化下來(lái)一萬(wàn)節(jié)點(diǎn)在普通辦公電腦上也能流暢平移和縮放這就夠用了。4. 常見(jiàn)問(wèn)題與排查實(shí)錄4.1 文本溢出與節(jié)點(diǎn)尺寸失配癥狀節(jié)點(diǎn)標(biāo)題長(zhǎng)一點(diǎn)就頂出圓角矩形邊界或者兩個(gè)節(jié)點(diǎn)之間重疊。排查思路先看字體度量。SVG里同一字號(hào)在不同操作系統(tǒng)下的實(shí)際渲染寬度不同直接按CSS像素字體估算容易不準(zhǔn)。最佳方案是用離屏Canvas的measureText獲取真實(shí)像素寬度再乘以1.2的系數(shù)做安全余量。另一個(gè)隱蔽因素是邊距。節(jié)點(diǎn)文本的padding如果沒(méi)納入尺寸計(jì)算布局引擎按160寬度排布文本卻需要180那必然溢出。所以我建議預(yù)留8~12像素的padding并且layout引擎計(jì)算碰撞時(shí)要用完整的外部包圍盒也就是sizepadding而不是只用內(nèi)層文本區(qū)域。4.2 連線交叉嚴(yán)重癥狀自動(dòng)布局后一半以上的連線交叉圖根本沒(méi)法看。這是布局算法的問(wèn)題不是渲染bug。交叉的根源往往是層內(nèi)節(jié)點(diǎn)順序不匹配比如source層的A、B對(duì)應(yīng)target層的X、Y如果target層順序是Y、X兩條線必然交叉。我的改進(jìn)方案是給層內(nèi)排序增加“祖先節(jié)點(diǎn)加權(quán)”先統(tǒng)計(jì)每個(gè)節(jié)點(diǎn)到上一層所有連接目標(biāo)的節(jié)點(diǎn)索引計(jì)算中位索引再按中位索引排序。這個(gè)思路能立刻減少大部分交叉。再配合“分段線性插值”折線連接方式讓邊在預(yù)測(cè)空間內(nèi)走正交路徑視覺(jué)上比直線連貫穿插干凈很多。4.3 拖拽后坐標(biāo)漂移癥狀鼠標(biāo)按住節(jié)點(diǎn)拖拽節(jié)點(diǎn)比鼠標(biāo)慢半拍或停手后節(jié)點(diǎn)自動(dòng)跳回原位。多半是坐標(biāo)空間不一致。鼠標(biāo)事件的clientX和clientY是屏幕坐標(biāo)而節(jié)點(diǎn)position是模型坐標(biāo)兩者中間隔著畫(huà)布縮放比例和畫(huà)布平移偏移量。正確的換算公式是const rect svgRoot.getBoundingClientRect(); const modelX (event.clientX - rect.left - viewState.panX) / viewState.zoom; const modelY (event.clientY - rect.top - viewState.panY) / viewState.zoom;我遇到這個(gè)問(wèn)題的次數(shù)比預(yù)想多而且每次都是在小功能改動(dòng)后復(fù)發(fā)。所以現(xiàn)在會(huì)把這一小段坐標(biāo)換算封裝成一個(gè)函數(shù)并在拖拽啟動(dòng)時(shí)強(qiáng)制讀取一次畫(huà)布當(dāng)前的pan和zoom值不依賴內(nèi)存里可能存在延遲的舊狀態(tài)。4.4 導(dǎo)出圖片時(shí)背景和透明問(wèn)題很多編輯器都提供“導(dǎo)出PNG”功能diagram-design也不能少。但默認(rèn)導(dǎo)出經(jīng)常遇到兩個(gè)坑導(dǎo)出背景是黑色導(dǎo)出內(nèi)容只有當(dāng)前視口不是全圖。黑色背景通常是因?yàn)镾VG沒(méi)有顯式聲明fill導(dǎo)出時(shí)被默認(rèn)值覆蓋。解決方案是在導(dǎo)出前給根節(jié)點(diǎn)加一個(gè)白底的rect。全圖導(dǎo)出則需要先讀取模型里所有節(jié)點(diǎn)的包圍盒計(jì)算畫(huà)布尺寸然后臨時(shí)把viewBox改為全圖范圍等導(dǎo)出完成后再恢復(fù)原來(lái)的縮放狀態(tài)。這樣導(dǎo)出的圖片在任何平臺(tái)上看都是完整且干凈的。4.5 分組折疊后連線懸空折疊分組本身只是隱藏子節(jié)點(diǎn)但子節(jié)點(diǎn)與其他組的連線如果不處理就會(huì)出現(xiàn)“線從空地牽出來(lái)”的懸空效果。我給分組模型增加了一個(gè)entry節(jié)點(diǎn)和exit節(jié)點(diǎn)分組折疊時(shí)所有進(jìn)出邊先匯聚到分組邊界的錨點(diǎn)再由錨點(diǎn)連接到外部其他分組或其他孤立節(jié)點(diǎn)。本質(zhì)上是在抽象層面做了一次“邊的重連”視覺(jué)層面則靠給折線加垂直邊角來(lái)呈現(xiàn)。這個(gè)細(xì)節(jié)雖然復(fù)雜但做好之后分組折疊功能才能真正可用而不是單純隱藏圖層。5. 關(guān)于這個(gè)項(xiàng)目我最后還想說(shuō)的幾件事diagram-design做到后面我發(fā)現(xiàn)難點(diǎn)已經(jīng)不在視覺(jué)表現(xiàn)而在“如何讓數(shù)據(jù)與結(jié)構(gòu)保持同步”。一份配置對(duì)應(yīng)一張圖這句話說(shuō)起來(lái)輕松但真正常態(tài)化運(yùn)行需要把數(shù)據(jù)校驗(yàn)、布局算法、渲染調(diào)度、交互狀態(tài)管理全部打通。很多人在第一步就被困住了因?yàn)樗麄兛傁胫劝旬?huà)布做漂亮再回填數(shù)據(jù)結(jié)果每一步都在補(bǔ)洞。根據(jù)我的經(jīng)驗(yàn)最值得提前花時(shí)間的部分是JSON Schema設(shè)計(jì)和布局引擎的單測(cè)這兩塊做好之后后面的渲染和交互都會(huì)順理成章。最后再分享一個(gè)實(shí)用習(xí)慣項(xiàng)目中所有坐標(biāo)輸出都加一份“圖形預(yù)覽調(diào)試面板”每一步布局后能直觀看到坐標(biāo)分布而不是靠console.log猜測(cè)問(wèn)題在哪。這個(gè)面板在后期的性能優(yōu)化和維護(hù)中會(huì)幫你省下大量時(shí)間。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
精品大全99999| 亚洲AV无码翔田千里网站| 中文字幕在线观看丝袜| 亚洲小电影免费涩涩成人在线高清| 中国小夫妻勾搭露脸淫荡对白| 91九色网| 午夜大香蕉| 欧美日韩日产免费网站看| 国语精品av| 久草在| 九九碰九九爱97超碰| 91成人精品在线播放| 一区二区影视| 91痴汉| 久久超碰97中文字幕| 色婷婷九月天天综合| 91精片| 美女t无毒不卡不卡| 久久婷婷国产一区二区色| 精品国产肉丝袜在线拍国语| av在线播放国产一区| 色妇综合网| 99999这里都精品| 久妇网| 荡小穴在线观看| 五月天黄色激情视频| 精品日韩中文在线| 狠狠操官网| 亚洲无码一区成人免费午夜| 怡红院久久老司机| 99热婷婷一区二区三| 国产吹潮女在线观看| 亚洲综合有玛| 九一精品牛牛一区二区| 亚洲天天影视色综合| 久久这里精品国产99丫e6| 依人大香蕉| 黄片在线免费在线观看| 色色香蕉| 九九香蕉网| 国产成人精品亚洲日本| 青草av在线| 成人性爱AV在线免费观看| 久久久久久久久久久久97| 男人的天堂无码| 亚洲国产一区二区三区在线| 一区二区三区四区五区高清无码永久视频| 亚洲熟妇极品| 国产精品亚洲四五区在线观看| 97色冈| 丁香五月婷婷色| 国产粉嫩出水在线播放| 五月婷丁香| 69精品久久久久中文字幕| AV不卡在线| 国产中文大片资源中文字幕| 亚洲av国产av综合av卡| 欧亚性爱在线视频| 日本99视频| www.超碰| 熟女自慰久久久| 麻豆性爱视频在线播放| 97精品视频网站| 综合视频91| 91网站在线播放| 黄页网站成人免费| 99热这里只有精品18| 久久久无码精品人妻二区| 中文字幕无码不卡啪啪| 久久精品无码不卡| 久9九综合在线| 国产精品视频91久久| 亚欧无码线免费观看视频| 插入逼91| 精品九九国产无码| 日本三级久| 91色黑人少妇| 成人天天爽| 一区二区三区麻豆| 天天操天天射天天日| 一本精品日本在线视频精品| 久久久精品国产亚洲AV无码| 91老熟女逼| 九九热国产| 久久久一区二区三区四区五区| 久久大黄片| 国产成人午夜视频网址| 国产精品色色| 亚洲人妖网| 欧美91丝袜| 国产成人精品网站| 久操精品网| 国产suv精品一区二区四| 日韩另类色图| 天堂网 主播 亚洲| 搡老熟女免费视频| 天堂8在线新版官网| 欧苏综合色综合| 欧美日韩大陆黑人少妇99| 天操天操夜操夜月月年年操操| 91性片| 18禁免费视频| 欧美日日网| 大香蕉之青青草原| 丁香五六月啪啪| 熟女乱伦二区| 中文字幕AV片| 欧美呦呦性爱| 俺去久久| 精品玖九九久| 91成人久久 | 青青草在线视频播放器| 亚洲啪AⅤ永久无码| 色婷婷基地| 久久国语| 国产成人一级av88| 蜜桃久久久久久久| 久久久精品网站| 美女自卫慰黄网站免费| 亚洲成人在线资源| 操逼逼中文字幕| 欧美精品偷拍| 亚洲无码超碰免费| 亚洲色图国产另类| 大二网站亚洲| 成人网欧美风情| 97AV在线观看| AV天堂电影网| 精品久久久久久AV无码| 国产在线精品电影观看| 午夜一级免费毛片| 久久久九| 国产欧美一区激情交| 动漫av中文| 蜜乳中文字幕a在线| 丁香五月天社区| 亚洲国产福利视频| 亚洲自拍一区夜夜操| 78超碰| 99热最新| 久久色精品视频在线| 人人操人人uiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii | 午夜传煤十二区精品| 91高清无码下载| 欧美在线啊啊啊| 人人操人人操人人人操| 中文字幕女同在线| 91啪啪视频| 欧美九一精品久久久熟妇| 无码精品一区二区三区潘金莲| 久草色悠悠在线视频| 欧美极品美女aaaaaa级黄片| 日韩av色图综合| 久久久久久久免费A片国产成a人亚洲精∨品无码 | 欧美久久婷婷| 嗯啊抽插大香蕉网页| 999 久久久| 夜夜草我| 男人的天堂日韩| 国产精品一区二区黄片| 精品无码欧美三级| 中文字幕精品专区搜索结果91| 天天色综亚洲91污| 600国产精品视频| 老熟女区| 无码又爽又硬又激情免费视频| 蜜臀AV一区二区三区| 你操综合| 在线观看日韩av不卡| 九热中文字幕| 综合97久久| 韩日精品四区| 久草国产在线视频| 日本久久久久久久久久| 一区 欧美 日韩 麻豆| 日本免费专区| AV一起草在线| 五月天久久人妻| 亚州色站 日韩电影| 中文字幕交换人妻| 国产传媒日韩| 67914在线兔费成人视频| 久操高青| 色色色99| 另类图片欧美激情综合| 日韩精品午夜操呦呦不卡影院| 高凊专区人人操| 熟妇熟女亚洲天堂网| 日韩精品一区二区日韩| 中文乱码字幕观看视频| 久操九九九九九九九九九九九九九九九九九九九九九九九九九九九九 | 97精品国产手机| 丁香五月成人| 99人人干| 国产精品无码AV网站| 免费视频观看60秒| 午夜AV污污污| 久草电影网| 亚洲欧美首页| 动漫区日韩区欧美区| 欧美日韩中文亚洲v在线综合| 超碰97丝袜| 国产国产亚洲一二三久久| 久久水蜜臀亚洲AV无码精品| 欧美日韩超碰在线| 大奶啊啊好爽| 91九色在线| 国产亚洲性生活视频播放| 亚洲欧美不卡线| 亚洲色欧| 91综合网在线| 91爱啪| 久久精品视频一区三区小泽玛利亚| 婷婷国产精品九区| 久操视频免费在线观看| 骚逼高潮久久精品| 成功精品影院| 国产怡红院| 激情自拍 校园春色| 爱射综合| 五月丁香六月激情| 77777亚洲蜜臀精品久久综合蜜臀| 日韩丰满熟妇| 国产肏逼网站| 亚洲A曰本VA欧美VA视频| 欧美 亚洲精品首页| 人妻 欧美亚洲| 国产三级中文字幕粉嫩| 黄页网站成人免费| 好湿好紧视频| 青青免费在线视频一区| 国产日韩手机视频在线| 欧美αv.com| 极品销魂美女一区二区 | 国产99热| 女人精品内射国产99| 亚洲综合在线第一页| 欧美成人精品欧美一级乱黄一区二…| 天堂综合网| 精品美女少妇一区二区| 欧美激情性久久久久久| 欧美一级黄片视频在线| 国产热RE99久久6国产精品首| 操逼操网| 桃色五月天| 小草精彩毛片| 精品欧美乱码久| 日逼97| aa片毛片| 在线一道啪| 午夜爽爽爽在线观看永久入口姬片| 国产一级不卡在线观看| 无码伊人久久大杳蕉中文无码| 99色热| 丰满少妇人妻久久久久久| 欧美色图私拍91| 国产精品久久久久久久久久久久久久久| 日日干夜夜骑| 边做饭边操逼逼| 精品成人动漫一区二区| 99精品视频在线观看| 狼天天狼天天大香蕉| 人妻一区二区三区| 综合色久欲| 天天肏天天干| 成年人三级黄色片视频| 香蕉久久国产AV一区二区| 爱爱动态120秒| 日韩精品大香蕉伊人在线| 99久草| 亚洲**2021在线观看| 色综合av男人天堂| 亚洲AV高潮| 综合网97| 看免费一级在线播放毛片| 久久久久久国产精品免费网站| 国产精品亚洲一级av第二区| 一区二区三区精品黑丝白丝酒店对鸡 | 欧美综合娱乐久久| 一块操欧美| 色综合潮| 天天做天天爱| 一级A啪啪啪啪| 久久久久中出| 天美传媒AV在线播放| 亚洲精品影视老司机| 亚洲精品丝袜-不卡成人免费……| 色狠狠综合噜一二三区| 中文字幕99999| 18禁美女裸体无遮挡啪啪| 久久久久久久人妻| 校园春色欧美| 亚洲精品国产专区在线观看| 操我啊啊啊啊啊| 天天综合网视频91| 大香网站| 国产馆极品诱惑| 9118禁| 一区二区娱乐网站| 女上位精品在线| 精品国产一区二区三区在线播出| 天天干2019| 欧美在线永久天堂| 91网亚洲| 亚州性9| 精品伊人久久久大香线蕉小说| 台湾肥佬网一区二区三区| 日韩大香蕉| 欧美色图天堂在线| 天天伊人| 欧美综合97www| 亚洲天堂2020| 91是天天| 色吧5亚洲| 1区2区3区中文字幕日韩| 老熟女乱伦片| 玖玖爱综合| 亚洲熟妇一,二,三期| 亚洲情色91| 亚洲日韩人妻中文字幕一区| 国产AV人人 夜夜人人澡| 少妇久久久久久| 激情五月天社区| 日本五区不卡| 色婷婷狠狠18禁| 91天美免费| 99热这里是精品| 久久久日本电影| 久久熟女人| 99999精品| 97综合日韩| 超碰色男人操熟女| 亚洲国产亚洲天堂| 99热综合| 精品美女久久久久| 美女黄色91| 日韩啪啪啪啪啪| 亚洲欧美高清| 九九九九免费高| 黄网色一区二区三区四区精品| 青娱乐 青青青操 日逼| 美女啊啊啊啊pc| 91午夜无码| 一区二区不卡免费| 欧美AB在线观看| av在线观看不卡网站| 久久一二三四五六七八九区| 精品久久久久9999| 色综合av男人天堂| 搡老女人老91妇女老熟女| 欧美999999| www色婷婷| 少妇综合| 久久噜噜噜精品国产亚洲综合| 激情久久久| 人人操我人人干| 熟女久久| 精品9区| 熟女人妻av在线资源,黄色的资源| 国产精品又黄又猛又粗| 老熟女综合网| 亚州色阁| 久久久久久中文版| 激情第四色| 岛国视频一二三区| 国产又色又粗又黄又爽| 我要色综合网站| 97久久久精品| 日韩三级一区 | 97在线免费看视频| 欧美日韩黄片精品在线| 97欧美日韩精品| 九九热男人天堂| 激情干在线| 操操操五月天婷婷丁香影院| 人妻少妇精品视频一区二区三区| 东方亚洲在线操逼天堂| 天天碰操中国年青熟妇| 天美国产三级传媒| 午夜精品视频777| 国产AV色黄看到爽| 人妻天天爽天天爽三区| 99久草| 自拍啪啪视频| 少妇专区一二三四五| 日韩在线AB| 麻豆人妻精品一区二区| 亚洲一区二区性爱电影| 美女尤物人人操| 色综合V| 91久久九九精品国产综合| 91制服丝袜| 欧美综合亚洲| 久久精品免视看国产成人﹣蜜臀av一区. 久久精品免视看国产成人,蜜臀av一区 | 乱伦AVxx| 精品人妻中文字幕4399| av一区二区三区四区| 色在线视频导航| 91综合网站| 青青久久艹| 亚洲丝袜少妇在线| 综合色一区三区二区| 青青五月天| 美女黄色91| 97美日韩视频| 亚洲中文字幕在现观看| 天天草夜夜草高潮片| 国产精品久久久久久久电影渣男| 操逼天美3区| 日韩电影在线观看网址| 久9re热视频这里只有精品| 日韩欧无码一区二区三区免费不卡| 老鸭窝成人免费毛片视频| 天天cao在线| 色综合91好| 国产内射爽爽大片| 69av一区二区三区| 综合免费无码中文| 国产强奸超碰AV| 婷婷中文网| 亚洲操人| 91在线免费观看处女| 亚91亚洲网| 91欧美综合在线| 亚洲美腿丝袜香蕉影视欧美成人| 青青草公开在线免费不卡视频| 精品日日人妻| 色吧5亚洲| 色呦呦、国产精品| 久噜噜| 国产精品对白自产拍| 99热销国产这里有精品| 日韩精品字幕| 97摸视频| 不卡超碰护士AV在线免费播放| 日日AV加勒比| 青草伊人网| 97亚洲欧美| 亚欧成人综合影院| 囯产精品一区二区三区线|亚洲人成无码网WWW动漫|国产精品免费一级... | 殴美综合色88| 天天躁日日躁狠狠狠躁| 日韩 国产 欧美自拍| 天天天天天天天天天天干美女| 性色av婷婷久久一区二区点复制| 日本免费一区二| 亚洲精品久久一区二区三区蜜桃臀| 美女91| 国产野战露脸在线播放| 殴美,日韩国产伦精品| 九一综合网| 亚洲天堂男人天堂网| 亚洲国产成人福利在线观看| 女人的久久久| 懂色影视久久| 国产成年女人免费视频播放a| 操婷婷逼| 校园春色宗合网| 9美女超碰在线免费观看| 日欧操屄| 蜜桃成人1区2区3区| 精品乱码在线观看| 久综合国内精品自在自线| 亚洲国产成人精品无码专区| 看黑丝美女操逼青青网站| 亚洲精品91| 天天干夜夜操网| 九九英色视频| 污色区网站| 日韩欧美视频青青| 久操电影网| 丝袜熟女一区二区三区| 亚洲揄拍网| 中文字幕一区二区三区字幕| 国产精品视频电影| 亚洲天堂久久| 伊人五月天| 久草线上视频免费看| 国产日韩精品人妻久久久久色欲网站| 男人的天堂亚洲| 精品二区三四区五电影 | 五月激情小说| 诱惑网综合| 操碰97| 日韩本不卡视频在线观看| 伊人久久在线视频观看| 国产丝袜美腿美女麻豆| 伊人精品久久网站| 欧美在线55555| 国产精品美女久久久久久网站| 日韩人妻操B| 亚洲全色网| 97人妻色| 亚洲日韩精品久久久久一区壹牛 | 91精品丝袜在线观看| 日韩丨制服丨中文|在线| 天天激情干| 欧美亚洲激情一二三| 亚洲无码免费看| 色眯眯av| 91色色色| 男男H黄动漫啪啪无遮挡网站| 亚洲天堂美臀在线| 国产精品老师| 欧美天天综合网| 密臀在线免费观看| 少妇高潮流水av免费| 动漫区日韩区欧美区| 久久精品日韩| 欧美伊人电影| 久久久久国产亚洲一区欧美色图日韩| 猛猛干| 日本裸体久久色噜噜| 亚洲另类小说卡通动漫| 久久人妻少妇| 亚洲成人av色网| 在线视频免费观看午夜| 精品一二三区女同| 五月婷丁香| 日韩性爱长视频免费| 欧美色三级片91| 秋霞操逼片| 91热色| 800zy一区二区| 无码高清专| 91情色在线| 伊人一区二区三区| 欧美日韩91| 亚洲AV秘无码一区..| 久操在97| 人妻熟女字幕一区二区| 九色精品视频导航1| 97色欧洲| 鲁鲁色综合网| 99热99在线播放激情| 狠狠爱大香蕉| 色天使AV天堂| 国产男女无套97| 久热99| 国产一区自拍欧美日韩| 啊啊啊网站| 60秒免费视频| 夜夜嗨AV蜜臀av| 六月丁香久久| 国产A v无码专区| 亚洲啪啪综合?v一区综合精品区| 五月天欧美色图| 伊人丝袜美腿高跟在线观看高清 | 久草这里只有精品| 毛片麻豆91糖心精品毛情片| 97免费视频网| 91亚州日韩高清| 亚洲精品日韩国产欧美| 国产高清26uuu| 国产精品免费久久久久久久久久| 日本天堂在线播放| 加勒比伊人综合| 久久只有精品一区二区三区| 91狠| 狼人久草| AV九九| 8050无码八戒| 国产av波波国产精品| 囯产精品久久久久久久久久梁医生| 亚洲丝袜二区在线| 综合色久欲| 吊色| 色拍偷亚洲| 屌妞视频久久久久久久 | 超碰社区97| 国产精品亚洲日韩骚欢乐谷最新地址发布页huanieguty性屋娱乐妖精视频 | 少妇被c 黄 免费观看| AV色五月天| 亚洲性综合| 亚洲男人的天堂网| 99精品高潮| 鸥美极品| 超碰9 7女人 | 亚洲无码 国产无码| 97资源久久| 丰满少妇一区二区三区免费看| 91亚洲综合在线| 九九热三级片| 91狠狠综| 中文 人妻 制服| 久久久久久久9| 91春色| 亚洲日韩精品久久久久一区壹牛 | 97视频网站在线观看| 精品少妇后入一区二区三区四区人妻巨乳| 欧美拳交在线播放| 成人影 天天操 亚洲| 99999精品视频| 五月天色电影| 亚洲日韩久久精品一区| 极品出轨视频网站| 一区二区三区视频| 999久久久免费精品国产牛牛| 少妇厨房愉情理伦片bd在线观看| 日本熟女免费視颖| 黄色片大香蕉| 五月婷丁香| 久久九九一区二区三区成人| 在线亚洲丝袜视频网站| 亚洲第91页| 亚洲综合草草| aa片毛片| 国产精品久久久久久片| 亚洲激情四射| 欧美亚州综合图片| 欧美色九九| 一级一性爱免费视频| 视频黄色国产一级| 日韩一级二级| 91 丝袜在线观看| 深夜国产福利| 狠日操| 人妻中文在线| 亚洲欧洲综合| 最新精品久久蜜桃| 欧美亚洲韩国视频十五区| 日韩AV噜噜噜一区二区三区四区 | 欧美青青视频| 亚洲在饯| 人妻aa| 熟妇熟女一区二三区| 成人熟女视频一区二区三区| 骚日日av| 操逼免费视频无码国产| 欧美亚洲玖玖玖| 人妻五十路在线| 日韩肏逼视频| 性爱av网站| 色哟哟-国产专区| 老鸭窝成人| 乱伦一区二区三区‘| 婷婷啪啪| 夜夜嗨老熟女AV一区二区三区| 日本伦乱九九九综合| 日韩中文字幕视频在线观看| 在线97在线| 国产性爱强奸乱伦大全| 操婷婷逼| 欧美第二页午夜| 综合亚洲欧美精品日韩?v| 91狠狠综合久久久久久| 综合激情一一91| 手机午夜电影神马久久| 久久久久久久一级黄色打同平台| 亚洲精品乱码久久久久久蜜桃麻豆| 天天视频网站黄| 综合日本女人伊人| 久久免费9| 婷婷色影院| 蜜桃臀一区二区aV| 18禁精品网站在线看| 久久成年精品| 无码137片内射在线影院| 999狠狠综合| 欧美综合自拍亚洲综合图| 老熟妇一区二区三区…| 怡春苑东京热| 日韩黄片影院| 青青草色插素人| 极品综合| 久草男人天堂| 成人性爱美曰韩| 亚洲drav色图| 蜜桃av综合网发布| 欧美91网| 久久久久成人蜜桃精品| 欧美一二级| 牛牛aV| 9美女超碰在线免费观看| 国产夫妻一区二区| 激情婷婷综合久久| 中文字幕制服欧美久久一区| 97操| 插老姨肥穴| 中文字幕,人妻,日韩| 日本久操视频| 一本色道无码DVD中文字幕| 九一综合精品视品av| 乱伦一二三| 综合97亚洲| 日本道久久综合色色| 床戏久久久av一区二区麻豆| 99视频内射三四| 久久大香蕉97| 久热久一区二区三区| 久久受www免费人成| 夜夜操一区二区| 亚洲国产高清福利视频| 加勒比性爱成人在线| 亚洲国产一区二区三区四区国产| 欧美瑟综合| 91在线欧色| 都市久久精品激情亚洲| 东京热99999| 99热| 一类无码操逼视频| 夜夜 中文视频rt| 国产女乱淫真高清免费视频| 日韩欧美麻豆| 国产精品乱码久久久久久久久久久久| 欧美极品性爱天天射| 综合欧美日韩在线| 五月婷色| 天天弄天天操| 国产久久久| 欧美人妻色| 日日干日日| AV不卡在线| 日日日日做夜夜夜夜做无码97| 伊人天堂在线| 日韩人妻制服丝袜av| 97在线公开视频| 欧洲亚洲人妻无码中字久久三区四区| 无码高清专| 91精品国产91综合久久蜜臀| 操穴国产| 九色婷婷| 亚洲黄色网址视频| 黄片免费日韩| 精品无码久久| 狠操91,com| 欧美成人亚洲精品| 亚洲成人免费电影| 国产精品一级片在线看| 啪啪性爱免费视频| 高清视频一区| 激情小说亚洲视频| 九九成人精品| 97青青操视频| 五月色综合| 欧美强奸一区二区诱惑| 亚洲伊人a线观看视频| 亚洲综合在线第一页| 色偷偷男人的天堂麻豆| 禁十八久久| 99综合网| 性做久久久久久免费观看软件| 曰韩操B| 四虎国产精品永久在线囯在线| 国产精品久久久亚洲第一牛牛_在线观看| 国产精品亚洲四五区在线观看| 99热这里都是精品| 国产无码精品高清| TS人妖另类精品视频系列| 蜜臀一区二区三区亚洲最新章节在线观看 - 高清蜜臀一区二区三区亚洲全集播放 | 中 文字幕一区二区三四 五 区日 日 骚| 国产亚洲综合欧美一区| 亚洲成人性爱在线观看| 国产曰批免费观看久久久| 国产精品久久久久久高清无码免费看 | 狠狠爱综合网| 久操不卡视频| 欧美顶级黄片AAAAA在线免费看| 午夜操逼不卡| 在线欧美69V免费观看视频| 一级AV性爱| 久久伊人亚洲AV无码网站| 一中国女人毛片水真多| 亚洲无码AV九九九| 日韩探花精品在线视频| aaaa少妇高潮大片| 91人妻Pr| 六月激情婷婷| 色蜜AV| 午夜性| 日韩天天本| 亚欧美综合网。| 四虎免费在线播放| 青青操在线视频| 国产美女自拍视频| 91精片| 亚洲日韩在线a不卡99精品| 国产精品久久久久久亚洲色欲| 粉嫩av平台| 偷拍亚洲熟女视频播放| www.99中文字幕| 国产亚洲深夜激情| 色色色色日本| 丰满人妻大屁一区二区| 婷婷五月天成人| 四虎影库国产精品免费| www.高清无码诱惑一区.com| 97超碰久久色| www.人人摸在线视频| 五十路三区在线| 日韩熟女操逼| 把腿张开老子CAO烂你| 在线a v| 激情专区综合| 麻豆久久久久久久久丝袜 | 亚洲性综合11| 国产色图乱伦| 欧美日韩操逼动图| 日韩成人电影AV| 天堂资源欧美| 97国产综合欧美| 亚欧成人一级片在线播放| 日韩欧美操逼xxx| 久久男女激情视频网站| 国产久久久9999| 学生妹天天看| 大香蕉中文201| 亚洲色欲天天天堂色欲网女| 天堂8在线新版官网| 大香蕉在线86| 清纯唯美综合| 国产精品久久久久无码A√| 欧美日韩性爱精品| 欧美色997| 午夜精品久久久久久久久久久久久| 蜜乳中文字幕a在线| 免费人成在线观看网站品爱网| 99re久久| 青青欧美| 欧美一区二区一级岛国大片| 欧美99热| 97精品在线| 亚洲色91| 亚洲成?V人片在线观看福利| 久久天天躁日日躁狠狠躁 | 99热精品免费| 天天综合网合集91| 国产精品第一区第一页| 国产刺激视频| 欧美综合色综合| 免费a级毛片av无码久久精品中文字幕| 国产精品99久久久www| 热久日综合| 美女爽到高潮91| 尤物黄色在线观看网站| 久9久| 天天综合网91| 色色综合网站| 亚洲成人在线乱码色午夜| 国产精品不卡av免费在线观看| 色婷久久| 性高潮久久久| 日韩中文字幕在线视频观看| 天天摸夜夜摸| 9久在线视频只有精品| 色情综合网| 黑人性暴力毛片| 国产精品老师| 超碰 国产熟女精品一区| 国产精品亚洲高清在线| http://qxhbdz.com| 九九久久久| 99这里只有精品| 97chaopengongkai| 久久XX| 中文字幕AV中出| 亚洲国产无码精品首页久久久| 超碰 国产熟女精品一区| 伦伦成年午夜免费视频| 日韩欧美资源| 日韩一级成人毛片免费观看| 熟妇一区,二区,三区。| 天天爽天天干| 日韩欧美大片免费高清啪啪| 妇人噜噜| 蜜桃无码AV一区二区| 久草这里只有精品| 中文乱码99| 国产精品探花在线| 欧美色网络| 91网站视频在线观看| 在线观看国产黄色| 亚洲天堂男人的天堂| 青草香蕉网| aaa一级黄片| 中文字幕丰满人妻日本| 亚码人妻| 久久人妻丝袜一区二区三| 欧美成熟性爱精品| 99久在线精品99re8| 国产伦精品免编号公布| 国产AV久久野战精品| 久操免费观看| AV99热18这里只有精品| 婷婷综合久久| 亚洲免费在线探花| 后入国产| 国产精品乱码久久久久久| 女同在线视频一区| 91c色| a片自拍直播视频| 女人18精品一区二区三区| 久久综合乱子伦国产免费| 国产三级日产三级韩国三级| 欧美一区二区男人天堂| 96精品久久久| 日韩紧密久久| 9久久精品| 日本三级A片网站com| 亚洲视频精选| 亚洲交换| 亚洲国内精品成人不卡| 日韩无码嘿咻黑热久| 免费A V在线播放| 日本伦乱九九九综合| 国产区在线| 日韩中文字幕宗合在线| 亚洲影院小综合| 亚洲中文字幕噜噜噜久久久| 国产1769在线| 一个国产在线综合网站| 99re免费| 噜噜噜噜久久久精品免费| 午夜无码熟妇丰满人妻| 欧美熟女激情| 久久最新免费视频23| 在线99热| 丁香九月激情啪| 天堂中文日本在线观看| 人人操人人摸人人看人人插| 日韩97| 九九九九精| 精品美女少妇一区二区| 欧美激情黑人| 欧美日韩亚洲电影| 91色伦综合| 久久夜嗨| 四虎884a| 黄网站黄视频网站进入口 | 无码人妻一区二区三区色欲aⅴ| 九九九九九精品| 97资源久久| 色欧洲| 99国产精品| 麻豆美女丝袜人妻中文| 精品日韩| 国产传媒av天美传媒在线| 欧美78P| 天天综合网91| 热思思免费视频| 精品无码欧美三级| 澳门黄片一香蕉视频| 网站A V在线| 亚洲精品一区二区精品| 午夜福利无毒不卡| 人人操人人插人人摸人人干| 中文字幕中文字幕一区二区| 久久91精品国产9丨久久分亭| 国产精品亚洲天堂网址| 影音先锋视频在线| AV无码久久久精品| 色婷亚洲五月在线观看| 超碰av人人人| 婷婷国产精品九区| AV丝袜少妇| 欧美青青草视频| 2020天天色综合| 91精品人妻一区二区三区蜜臀| 精品999999| 日韩在线欧美精品一区二区| 国产女人高潮嗷嗷嗷叫小说| 欧美视频一区二区在线| 欧美有码激情视频一区二区三区| 日韩pv中文| 欧美精品偷拍| 欧美综合自拍亚洲综合图| 啊啊啊啊免费视频| 无遮挡男女激烈动态图| 欧美日韩亚洲一区二区在线观看| 久久一区二区三区入口| 大香蕉123| 久久伊人青青草| 91痴汉| 无码一区免费在线不卡| 国产精品无套内谢| 欧美男人一区| 99色日| www欧美91| 日本色色视频网站| 高清在线偷拍自拍视频| 久久99国产综合精品女同| 中出后入| 97超碰色| 欧美精品自慰系列寂寞少妇| 国产在线不卡导航| 国产高清在线自在拍69| 欧美一级在线观看成人| 欧美日韩激情无码专区| 少妇二级| 精品无码一区二区人妻久久蜜桃| 亚洲色交| 日韩黄色一区二区三区| 一区二区三区网站日日骚| 风骚少妇视频中文字幕| 免费a v| 国产激情片在线观看| 嗯嗯嗯,草死我| 97久久久网站| 国产成人精品无码久久| 日本熟妇熟色97一本在线观看| 偷拍片久久| 91精品国产91久久福利| 天天插天天操| 中文字幕女同在线| 日韩兔费看黄片| 丁香色色网| 熟妇激情| 亚洲97成人在线观看| 五月天激情网站| 中文字幕精品专区搜索结果91| 丝袜人妻av一区二区| 婷婷五月天AV| 九九九精品色乱九九九| 性色av大全| 十八禁网站在线| 2017天天插| 精品一区二区成人动漫| 久久久久斤小| 午夜操逼不卡| 亚洲网自拍| 91久久| 欧美 亚洲 制服 精品| 亚洲情色 自拍| 伊人久操| 本道在线| 日韩欧美俄罗斯A片| 色网1| 四虎影视永久在线免费| 久偷拍| 国产真乱mangent| AV一二区| 国产精品黑人一区二区三区| 国产精品久久久视频| AV中亚| 最新AVzaixian| 午夜爽爽爽| 天天狠| 可免费观看的av毛片中日美韩 | 免费a v| 国产久久久9999| 中文字幕97| 综合国产97| 欧美一级黄色免费专区| 欧美日日夜夜| 欧美18 在线观看| 日韩懂色网| 久久久亚洲高清不打码| 久久熟女久| 老司机射| 欲色综合| 欧美1727免费观看视频| 中欧人妻丝袜中文字幕| 久操99| A片A5445444| 欧美乱妇狂野欧美在线视频| 综合亚洲网| 日本超碰在线国产一区| 国产传媒操逼视频| 日韩少妇无码| 日韩av性爱在线播放| 亚洲限制级| 大香蕉一线视频| 亚洲激情在线| 老女人爆菊| 久久久久久人妻一区精品色欧美| 久久精品中文| 日韩精品一区的| 97超碰久久| 色偷偷色偷偷欧美日韩| 亚洲一卡2卡3卡4卡乱码网站| 亚洲综合色图欧美| 艳美熟妇先锋一二三区| 亚洲国产一区二区日韩专区| 高清不卡 中文 人妻| 五月综合激情| 色在线综合| 啊啊啊在线看| 九九热精品免费视频| 一级@啪啪视频| 亚洲一级性爱视频免费看| 性九九九九九九| 97超级久久强资源| 九月激情婷婷| 日本媚薬中文字幕在线| 97超碰逼| 色婷婷综合网站| 99久久久久久亚洲精品不卡| 呻吟 欧美 日本 中出| 区日韩亚洲乱码av电影| 26uuu国产日韩综合在线观看| 超碰4A| 超碰人妻中文在线| 99精彩视频| 一类无码操逼视频| 啊啊啊啊操死我| 天美麻豆黄色录像| 一个人在线看的黄色电影网站| 国产精品香蕉热久久新品| 一级片视频啪啪| 亚洲天堂久久| 一本一首道人妻少妇免费久久| 爱我干综合| 国产日韩在线播放av| 国产97在线视频| 亚洲天堂少妇| 久久这里| 97欧美精品综合| 亚洲综合色网| 欧美特大黄一级片片免费| 欧美性生活男人的天堂| 97亚洲中文| 男人天堂无码| 曰本91情色| 中文有码第五页| 黄色网址久久精品欧美喷水| 无码 有码 国产18p| 久久精品国产AV一区二区三区| 天天cao在线| 免费男人的天堂| 热的中文 热的有码 热的国产| 特级大荫道BBwBBwBBW| 99色综合| 九九性视频| 久久久久久AV无码免费网站| av一区二区三区四区| 91色综合| 97欧美精品| 亚洲欧美情色| 大香蕉淫人| 欧美少妇高潮视频| 涩亚洲欧洲| 91美女高潮| 大但人体久久久久| 亚州色阁| 色拍偷亚洲| 欲色啪| 中文字幕精品专区搜索结果91| 久久99草| 色偷偷男人的天堂麻豆| 校园春色中文字幕AV| 丝袜无码a片| 丰满少妇高潮无码| 91夜夜蜜桃臀1区2区3区| 蜜桃中文字日产乱幕4区| 日本少妇va7777| 国产精品久久发布| 美女久久久久久久| 熟妇艹鸡八| 久久国产精品熟女人妻| 亚洲综合图色在线| 大香蕉之青青草原| 日噜夜夜夜夜夜夜夜夜夜夜爽爽爽爽爽爽爽爽爽爽爽爽 | 男人下部插入女人下部| 亚洲日韩一区电影| 久久黄黄| 欧美拳交在线播放| 欧美嗯啊……在线观看视频免费| 天天做天天爱天天高潮| 婷婷色一区| 免费看污网站|