初接觸vue,驚為天人,它的更新方式極為取巧,但也是人們保持路人的原因:似乎沒有乙個嚴格的數學證明保證按它的方式能精確更新到dom。不過腦子裡推演的似乎不會發生失敗,而且每次介面都能按預期更新的效果十分動人——這似乎是目前mvvm中最快最準確的更新方式。
試用過幾回,不滿的地方,vue是乙個框架,必須、最好按它的方式來編碼,xml與jscss混編,使用.vue檔案。雖然後來放開可以使用template字串。以及它內聚成字典的寫法,xml語法都是我不習慣的地方,我只想用純粹的js語言來程式設計。經過一翻網路搜尋,勉強明白了依賴更新的實現方式,便嘗試著自己去實現乙個框架。
沒接觸vue之前,我製作了乙個叫jsdom的小模組,使用其中乙個叫parseelement的函式,接受乙個巢狀的字典/陣列作引數。因為js的字典/陣列宣告跟json一樣樹狀巢狀,而且更加靈活(key不必雙引號,value可以是函式),而html/xml也是樹狀的,便可以模擬html/xml,不用像模板引擎或jquery一樣拼湊xml字串,內部遞迴呼叫dom元素的建立修改方法,也就很好地避免了注入攻擊。而且傳統的各種介面程式設計使用各種xml,訪問屬性呼叫方法又在原始碼檔案,這種分離很不方便,因此在這種巢狀的object/array中內建函式,至少減少了**,明確了呼叫。字典中如果有id,將字典解析生成的元素節點放置進me.k這個字典裡,用來修改dom元素,也可以實現區域性模組化(jsdom原始碼也在附的開源**中,可進入檢視)。而且在js這種完整的語言下,也可以對區域性片段像模板引擎一樣輕鬆重複。效能,我是沒考慮的,但至少安全是保證了的,因為已經快到超過人的感知,而且相信用純粹一種語言,肯定比幾種語言混編效能高。
//簡單示例
jsdom.parseelement(,
style:,
children:[,}
}]
},me);
但jsdom.parseelement使用要回寫dom,使用dom的api修改元素屬性,這很麻煩,這也是各家mvvm建立的原因。如果attr節點,或style節點下的value不是字串或數字,而是函式,就能動態更新這些屬性,這就是我理想中的mvvm方式。如今有vue依賴更新這種技術的存在,我覺得找到了可能。
實現mve的過程中,我發現元件的watch需要在銷毀時**,於是不得不改變mve的呼叫方式,和jsdom.parseelement不同。具體可以參見開源**中的示例。
github
gitee
附:s-lisp
gitee
github
建設以需求為核心的知識庫
根據1996年經濟合作與發展組織 oecd 的 以知識為基礎的經濟 報告,知識包括四大類 知道是什麼 的事實知識 know what 知道為什麼 的原理知識 know why 知道怎樣做 的技能知識 know how 知道是誰 的人際知識 know who 由此可見,知識的概念比資訊的概念要廣泛得多...
workerman怎樣統計框架裡的函式執行情況
不同的框架,略有不同。首先,在index.php檔案中,需要加入。載入vendor,統計服務 rpc client等.require dir vendor bootstrap autoloader.php bootstrap autoloader instance addroot dir init ...
以資料庫為核心的軟體時代已經過去
以資料庫為核心的軟體時代已經過去,資料庫時代早已結束,當我看到j2ee征途中那麼多人在物件和資料庫之間彷徨痛苦ing的時候,我想我該出來喊一聲了。很多年前,包括我自己在內的大部分企業程式設計師都是從資料庫開始我們的職業生涯,最早的是dbase foxpro,後來有了 sql系列資料庫,oracle將...