最好似乎有個(gè)叫jqGrid的最強(qiáng)大筛璧。
行高不允許不平均逸绎,造成不平均的列應(yīng)該單獨(dú)放在彈出或右側(cè)的面板中。
過多不允許換行夭谤,直接在行內(nèi)省略棺牧。
過高也不允許。
layui有最后列的固定朗儒。
如何實(shí)現(xiàn)颊乘?目前有太多可選方案。別人的實(shí)現(xiàn)可能都丑陋醉锄。要以實(shí)現(xiàn)美觀乏悄。貼近原生table。
開發(fā)grid最好是使用類似react恳不,每次都使用初始邏輯檩小,未來的變化是沒有規(guī)律的,可能是行交換烟勋,可能是列交換规求,以行為單位或以列為單位的復(fù)用、面向?qū)ο舐训耄坪醵疾惶米柚住<行薷暮诵哪P停苯佑|發(fā)布局改變沮尿,vue也能做到丛塌,但computed關(guān)注局部節(jié)點(diǎn)怎樣變化,而react式重新生成,以核心影響全局姨伤。所有的復(fù)用都不太科學(xué)哨坪。
函數(shù)不需要重新生成,函數(shù)是惰性的乍楚,直到調(diào)用時(shí)才會(huì)去訪問核心模型改變效果当编。所以重繪是綁定函數(shù)。重繪的依據(jù)徒溪,與其說是XML忿偷,不如說是結(jié)構(gòu)體,每次重繪整個(gè)結(jié)構(gòu)體都得重新生成臊泌,完全沒復(fù)用的可能性鲤桥。結(jié)構(gòu)體或叫做類,因?yàn)橛邢鄳?yīng)的函數(shù)調(diào)用渠概,而函數(shù)是定義在類里面的茶凳,結(jié)果又回到react。最多復(fù)用是享元復(fù)用播揪。
重新生成有局部的有全局的贮喧,局部是內(nèi)部變化,全局的可能叫導(dǎo)航變化猪狈。緩存節(jié)點(diǎn)為組件(類似于函數(shù))箱沦。而組件系統(tǒng)復(fù)雜到不區(qū)分局部導(dǎo)航與局部?jī)?nèi)部變化——切換頁面總是要銷毀與生成的,什么多窗口復(fù)用與手動(dòng)復(fù)用雇庙?
react是對(duì)人最友好的方案谓形。
局部改變是自身的重新render,不是父組件通知render疆前。集中在一起的叫組件寒跳,分散在各處的強(qiáng)耦合呢?分散在各種峡继,但相互影響而同步冯袍,是通過閉包同時(shí)render自身的數(shù)據(jù)中心。
過早優(yōu)化是萬惡之源碾牌,先用類似react式的局部實(shí)現(xiàn)功能,最后再來細(xì)分組件與優(yōu)化(必須改變的)儡循,這種優(yōu)化細(xì)分就是模塊化舶吗,分化后就受到了限制,失去了全能性择膝。是否有復(fù)用性誓琼?
針對(duì)具體需求的優(yōu)化。
總之使用react,但優(yōu)化性地腹侣,不再關(guān)注控制器等了叔收。
父組件不用自身都render了,只是要調(diào)用子組件的某個(gè)public方法傲隶。如果將組件內(nèi)所有public方法都掛載到render上饺律。
如果要復(fù)用資源,將模板初始化與賦值分開跺株。初始化一次复濒,賦值多次∑故。——這又回到了什么地段巧颈?不是以核心和核心的渲染來區(qū)分?IMGUI式的袖扛。改變模型中心砸泛,然后根據(jù)模型來刷新。像CSS一樣蛆封,至于生成了多少中間結(jié)構(gòu)體晾嘶,并不關(guān)心。確實(shí)又必須生成結(jié)構(gòu)體娶吞,渲染層根據(jù)結(jié)構(gòu)體來繪圖垒迂。繪圖根據(jù)最終結(jié)構(gòu)體,人不是操作最終結(jié)構(gòu)體妒蛇。人操作DOM机断,或許掃描DOM這個(gè)結(jié)構(gòu)何體來刷新。
列為基本單位或行為基本單位绣夺,也許應(yīng)該拆分成不同模式的幾個(gè)控件吏奸。
vue的寫法果然不符合傳統(tǒng)的思維模式。react用jsx陶耍,字符串模版也許比實(shí)體有優(yōu)化性奋蔚,但綁定事件回調(diào),局部閉包烈钞,還是得實(shí)體化泊碑,不如jsdom,或者說毯欣,jsdom是jsx到j(luò)s的中間層馒过。
逐步優(yōu)化,最開始grid全局一個(gè)render酗钞,grid的初始化參數(shù)腹忽,任何一個(gè)改變都會(huì)觸發(fā)render重新生成来累。比如增加減少列,任何參數(shù)改變窘奏,改變?nèi)魏螀?shù)嘹锁,就是其public的方法。模型外部注入着裹,初始化與動(dòng)態(tài)改變一致领猾。關(guān)注使用,而不像react或vue改變模型求冷。全局render增加減少行是不合算的瘤运,但又符合更底層imgui依自定義模型繪圖。逐步優(yōu)化匠题,renderRow與renderColumn拯坟。renderColum更高階,row會(huì)完全重新生成韭山,而renderRow包含insert/update/delete郁季,以行為單位重新生成。以行為單位而不是格钱磅,因?yàn)楦窨赡苁莚ender受多個(gè)鍵影響梦裂。在vue中事實(shí)上自動(dòng)實(shí)現(xiàn)了這種優(yōu)化。
那么打破傳統(tǒng)表格盖淡,表格只是列的集合年柠,調(diào)整列的順序更容易了,調(diào)整行卻要通過模型中心通知褪迟,像多個(gè)影子一樣冗恨。
像函數(shù)積累,react越復(fù)雜會(huì)越慢味赃。組件內(nèi)部也會(huì)調(diào)用render掀抹,即是模型。
參數(shù)與方法的一致性心俗,即props傲武。如ligerGrid,參數(shù)只有數(shù)組與固定鍵的Object城榛,vue的實(shí)現(xiàn)也是這樣揪利。
IE8不能使用vue,要么把鍵變成函數(shù)吠谢,甚至Object變成函數(shù)土童,要么實(shí)現(xiàn)自己的電路鏈語言。這時(shí)的jsObject樹工坊,又像DOM樹献汗。數(shù)組是可變的。
電路鏈?zhǔn)秸Z言仍然跟vue相似王污,computed是計(jì)算的中心罢吃,可能并不關(guān)心計(jì)算了幾次,模型則是入口昭齐,像vue可以操作任何一層尿招。