成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專(zhuān)欄INFORMATION COLUMN

以vue依賴(lài)統(tǒng)計(jì)為核心的框架(函數(shù)),mve

Carl / 2143人閱讀

摘要:試用過(guò)幾回,不滿(mǎn)的地方,是一個(gè)框架,必須最好按它的方式來(lái)編碼,與混編,使用文件。經(jīng)過(guò)一翻網(wǎng)絡(luò)搜索,勉強(qiáng)明白了依賴(lài)更新的實(shí)現(xiàn)方式,便嘗試著自己去實(shí)現(xiàn)一個(gè)框架。如今有依賴(lài)更新這種技術(shù)的存在,我覺(jué)得找到了可能。

初接觸vue,驚為天人,它的更新方式極為取巧,但也是人們保持路人的原因:似乎沒(méi)有一個(gè)嚴(yán)格的數(shù)學(xué)證明保證按它的方式能精確更新到DOM。不過(guò)腦子里推演的似乎不會(huì)發(fā)生失敗,而且每次界面都能按預(yù)期更新的效果十分動(dòng)人——這似乎是目前mvvm中最快最準(zhǔn)確的更新方式。

試用過(guò)幾回,不滿(mǎn)的地方,vue是一個(gè)框架,必須、最好按它的方式來(lái)編碼,xml與jscss混編,使用.vue文件。雖然后來(lái)放開(kāi)可以使用template字符串。以及它內(nèi)聚成字典的寫(xiě)法,xml語(yǔ)法都是我不習(xí)慣的地方,我只想用純粹的js語(yǔ)言來(lái)編程。經(jīng)過(guò)一翻網(wǎng)絡(luò)搜索,勉強(qiáng)明白了依賴(lài)更新的實(shí)現(xiàn)方式,便嘗試著自己去實(shí)現(xiàn)一個(gè)框架。

沒(méi)接觸vue之前,我制作了一個(gè)叫jsdom的小模塊,使用其中一個(gè)叫parseElement的函數(shù),接受一個(gè)嵌套的字典/數(shù)組作參數(shù)。因?yàn)閖s的字典/數(shù)組聲明跟json一樣樹(shù)狀嵌套,而且更加靈活(key不必雙引號(hào),value可以是函數(shù)),而html/xml也是樹(shù)狀的,便可以模擬html/xml,不用像模板引擎或jquery一樣拼湊xml字符串,內(nèi)部遞歸調(diào)用DOM元素的創(chuàng)建修改方法,也就很好地避免了注入攻擊。而且傳統(tǒng)的各種界面編程使用各種xml,訪(fǎng)問(wèn)屬性調(diào)用方法又在源碼文件,這種分離很不方便,因此在這種嵌套的Object/Array中內(nèi)置函數(shù),至少減少了代碼,明確了調(diào)用。字典中如果有id,將字典解析生成的元素節(jié)點(diǎn)放置進(jìn)me.k這個(gè)字典里,用來(lái)修改DOM元素,也可以實(shí)現(xiàn)局部模塊化(jsdom源碼也在附的開(kāi)源代碼中,可進(jìn)入查看)。而且在js這種完整的語(yǔ)言下,也可以對(duì)局部片段像模板引擎一樣輕松重復(fù)。性能,我是沒(méi)考慮的,但至少安全是保證了的,因?yàn)橐呀?jīng)快到超過(guò)人的感知,而且相信用純粹一種語(yǔ)言,肯定比幾種語(yǔ)言混編性能高。

//簡(jiǎn)單示例
jsdom.parseElement({
    type:"div",
    attr:{
        a:1,
        b:2
    },
    style:{
        color:"red",
        "background-color":"green"
    },
    children:[
        {
            type:"div",
            id:"a"
        },
        {
            type:"button",
            text:"點(diǎn)擊",
            action:{
                click:function(e){
                    console.log(e);
                }
            }
        }
    ]
},me);

但jsdom.parseElement使用要回寫(xiě)DOM,使用DOM的API修改元素屬性,這很麻煩,這也是各家mvvm創(chuàng)建的原因。如果attr節(jié)點(diǎn),或style節(jié)點(diǎn)下的value不是字符串或數(shù)字,而是函數(shù),就能動(dòng)態(tài)更新這些屬性,這就是我理想中的mvvm方式。如今有vue依賴(lài)更新這種技術(shù)的存在,我覺(jué)得找到了可能。

實(shí)現(xiàn)mve的過(guò)程中,我發(fā)現(xiàn)組件的watch需要在銷(xiāo)毀時(shí)回收,于是不得不改變mve的調(diào)用方式,和jsdom.parseElement不同。具體可以參見(jiàn)開(kāi)源代碼中的示例。

后來(lái)越來(lái)越覺(jué)得js很煩人(即使已經(jīng)比各面向?qū)ο笳Z(yǔ)言方便多了;我一直使用其函數(shù)式的部分lambda的部分而不使用其原型式的部分),逗號(hào)很多很容易寫(xiě)錯(cuò),函數(shù)聲明很煩,字符串必須包含在引號(hào)中難免前后空格,字典沒(méi)有默認(rèn)順序。。。。為了優(yōu)化js的寫(xiě)法,我去研究lisp,然后有了我的另一個(gè)開(kāi)源項(xiàng)目S-Lisp這套語(yǔ)法方案,越深入思考越發(fā)現(xiàn)這套方案的威力強(qiáng)大,甚至C++版實(shí)現(xiàn)的S-Lisp可以通過(guò)引用計(jì)數(shù)精確回收內(nèi)存,因此順帶推薦。同時(shí)mve下有一個(gè)js實(shí)現(xiàn)的S-Lisp,及這個(gè)S-Lisp實(shí)現(xiàn)的mve,然而只是部分實(shí)現(xiàn),children的repeat還未實(shí)現(xiàn)。歡迎大家關(guān)注,希望能夠幫助到大家,同時(shí)也希望大家如果有什么好的改進(jìn),不要吝惜分享出來(lái),共同進(jìn)步。

開(kāi)源地址

github
gitee

附:S-Lisp
gitee
github

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/96830.html

相關(guān)文章

  • ESLint 在中大型團(tuán)隊(duì)應(yīng)用實(shí)踐

    摘要:自動(dòng)化接入和升級(jí)方案通過(guò)命令行工具提供一鍵接入升級(jí)能力,同時(shí)集成到團(tuán)隊(duì)腳手架中,大大降低了工程接入和維護(hù)的成本。原始代碼經(jīng)過(guò)解析器的解析,在管道中逐一經(jīng)過(guò)所有規(guī)則的檢查,最終檢測(cè)出所有不符合規(guī)范的代碼,并輸出為報(bào)告。 引言 代碼規(guī)范是軟件開(kāi)發(fā)領(lǐng)域經(jīng)久不衰的話(huà)題,幾乎所有工程師在開(kāi)發(fā)過(guò)程中都會(huì)遇到,并或多或少會(huì)思考過(guò)這一問(wèn)題。隨著前端應(yīng)用的大型化和復(fù)雜化,越來(lái)越多的前端工程師和團(tuán)隊(duì)開(kāi)始重...

    alogy 評(píng)論0 收藏0
  • 前端每周清單第 34 期:Vue 現(xiàn)狀盤(pán)點(diǎn)與 3.0 展望,React 代碼遷移與優(yōu)化,圖片優(yōu)化詳論

    摘要:工程實(shí)踐立足實(shí)踐,提示實(shí)際水平內(nèi)聯(lián)函數(shù)與性能很多關(guān)于性能優(yōu)化的文章都會(huì)談及內(nèi)聯(lián)函數(shù),其也是常見(jiàn)的被詬病為拖慢性能表現(xiàn)的元兇之一不過(guò)本文卻是打破砂鍋問(wèn)到底,論證了內(nèi)聯(lián)函數(shù)并不一定就會(huì)拖慢性能,過(guò)度的性能優(yōu)化反而會(huì)有損于應(yīng)用性能。 showImg(https://segmentfault.com/img/remote/1460000011481413?w=1240&h=825); 前端每周...

    CoderStudy 評(píng)論0 收藏0
  • 從0開(kāi)始構(gòu)建一個(gè)屬于你自己PHP框架

    摘要:如何構(gòu)建一個(gè)自己的框架為什么我們要去構(gòu)建一個(gè)自己的框架可能絕大多數(shù)的人都會(huì)說(shuō)市面上已經(jīng)那么多的框架了,還造什么輪子。 showImg(https://segmentfault.com/img/bVNg9F?w=500&h=500); 如何構(gòu)建一個(gè)自己的PHP框架 為什么我們要去構(gòu)建一個(gè)自己的PHP框架?可能絕大多數(shù)的人都會(huì)說(shuō)市面上已經(jīng)那么多的框架了,還造什么輪子?。我的觀(guān)點(diǎn)造輪子不是目...

    vpants 評(píng)論0 收藏0
  • 前端每周清單第 48 期:Slack Webpack 構(gòu)建優(yōu)化,CSS 命名規(guī)范與用戶(hù)追蹤,Vue.

    摘要:發(fā)布是由團(tuán)隊(duì)開(kāi)源的,操作接口庫(kù),已成為事實(shí)上的瀏覽器操作標(biāo)準(zhǔn)。本周正式發(fā)布,為我們帶來(lái)了,,支持自定義頭部與腳部,支持增強(qiáng),兼容原生協(xié)議等特性變化。新特性介紹日前發(fā)布了大版本更新,引入了一系列的新特性與提升,本文即是對(duì)這些變化進(jìn)行深入解讀。 showImg(https://segmentfault.com/img/remote/1460000012940044); 前端每周清單專(zhuān)注前端...

    sean 評(píng)論0 收藏0
  • 2017年前端框架、類(lèi)庫(kù)、工具大比拼

    摘要:相比于開(kāi)發(fā)人員的數(shù)量,目前框架類(lèi)庫(kù)和工具的數(shù)量似乎更多一些。本文將會(huì)討論目前最為流行的客戶(hù)端框架類(lèi)庫(kù)和工具以及它們之間的基本差異。典型的類(lèi)庫(kù)包括字符串處理日期元素事件動(dòng)畫(huà)網(wǎng)絡(luò)請(qǐng)求等功能。所以不需要明確的區(qū)分類(lèi)庫(kù)框架和工具。 相比于JavaScript開(kāi)發(fā)人員的數(shù)量,目前JavaScript框架、類(lèi)庫(kù)和工具的數(shù)量似乎更多一些。截至2017年5月,GitHub上的快速搜索顯示,有超過(guò)110...

    Alliot 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

Carl

|高級(jí)講師

TA的文章

閱讀更多
最新活動(dòng)
閱讀需要支付1元查看
<