摘要:新版本允許多任務(wù)操作,這意味著你可以通過同時(shí)打開多個(gè)文件,在側(cè)邊欄中可以方便地進(jìn)行切換你可以通過拖拽文件的方式把文件直接添加到的工作空間當(dāng)中最大的變化,在于工具欄的升級。
隨著Vue2.0的正式推出,我也正好籍此機(jī)會對我的開源項(xiàng)目Markcook進(jìn)行重構(gòu)。這一次重構(gòu)既打發(fā)了我在高速路上堵車的無聊時(shí)光,又加深了對Vue2.0和Vuex2.0使用的認(rèn)識,可謂一舉多得。
什么是Markcook?項(xiàng)目地址:https://github.com/jrainlau/m...
在線地址:http://jrainlau.github.io/mar...
桌面程序下載(僅windows):markcook2.0-win32-x64.zip
在上一個(gè)版本中我寫了一篇文章,叫做Markcook 1.2,超輕的開源markdown編輯器,但是仍然缺乏對Markcook的一個(gè)完整的定義。在2.0版本中,Markcook的定義是:
更新內(nèi)容A smart and beautiful markdown editor.
一個(gè)聰明且好看的markdown編輯器。
2.0版本使用了Google的Material Design作為設(shè)計(jì)規(guī)范,對UI部分進(jìn)行了完全的重構(gòu),提供了更加方便的操作,同時(shí)在視覺上也更加舒適。對于用戶體驗(yàn)也有著更為詳細(xì)和人性化的設(shè)計(jì),在最大限度上提供最舒適的編輯環(huán)境。
新版本允許多任務(wù)操作,這意味著你可以通過Markcook同時(shí)打開多個(gè)markdown文件,在側(cè)邊欄中可以方便地進(jìn)行切換:
你可以通過拖拽文件的方式把文件直接添加到Markcook的工作空間當(dāng)中:
最大的變化,在于工具欄的升級。你可以通過點(diǎn)擊工具欄的按鈕,在頁面中插入markdown格式的語句,或者直接把一段文字變成markdown格式:
你可能會好奇為什么Markcook并沒有像其他的編輯器一樣提供“保存進(jìn)度”的功能。其實(shí)Markcook會在你輸入的過程中自動(dòng)地為你保存內(nèi)容,這樣即使你把頁面關(guān)掉,在下一次打開Markcook的時(shí)候,你會發(fā)現(xiàn)你之前的內(nèi)容仍然留在原地。
2.0版本使用了Vuex2.0作為全局的狀態(tài)管理工具,組件之間完全解耦,可以方便地進(jìn)行維護(hù)和定制,其主要目錄結(jié)構(gòu)如下:
|__ index.html |__ src |__ App.vue |__ components |__ inputer.vue |__ navBar.vue |__ outputer.vue |__ sideMenu.vue |__ main.js |__ vuex |__ store.js
可以看到,Markcook被拆分成了5個(gè)組件,包括一個(gè)根組件App.vue以及4個(gè)放在/components文件夾下的功能性組件。組件之間的狀態(tài)完全通過/vuex/store.js進(jìn)行管理,其過程可以通過下面的架構(gòu)圖說明:
關(guān)鍵邏輯也是放在store.js里面進(jìn)行,下面簡要分析一些關(guān)鍵功能的實(shí)現(xiàn)原理:
輸入的內(nèi)容進(jìn)入store.js,經(jīng)過處理后實(shí)時(shí)輸出到output.vue,以實(shí)現(xiàn)同步輸入輸出的效果。
每一篇文章都是一個(gè)對象,里面有三個(gè)屬性:id,content,current。在store.js內(nèi)部有一個(gè)articleList數(shù)組,專門用來存放文章對象。每次新建文件,都會往數(shù)組內(nèi)添加一個(gè)新的文章對象,在切換文件的時(shí)候,只需要根據(jù)對應(yīng)的ID切換文章對象的current屬性即可。
articleList: [ { id: createID(), content: "Untitled --- ", current: true } ]
文章的自動(dòng)保存進(jìn)度功能,是通過localStorage實(shí)現(xiàn)的。每一篇文章都在localStorage里面根據(jù)ID分配了位置,在輸入的過程中會實(shí)時(shí)更新對應(yīng)ID下的內(nèi)容。同時(shí)在localStorage里面有一個(gè)叫idArr的對象,專門用于存放文章的ID。文章的自動(dòng)讀取等操作,都是根據(jù)idArr獲取文章ID,再獲取對應(yīng)ID下的文章內(nèi)容來實(shí)現(xiàn)的。
更詳細(xì)的內(nèi)容請直接閱讀源碼,由于篇幅有限,在這里就不作過多的介紹了。
后記在高速公路上一遍堵車一邊coding的感覺真的很神奇,在完全沒有網(wǎng)絡(luò)沒法google的情況下,反而大大激發(fā)了獨(dú)立思考的能力,真是受益良多。
最想多說的反而是UI設(shè)計(jì)。Material Design是我最喜歡的設(shè)計(jì)風(fēng)格,在上一版本中已經(jīng)有所使用了,但還是丑。這一版雖然和專業(yè)設(shè)計(jì)師比起來還是會有很大差距,但是對我來說,著實(shí)是順眼了很多,也不枉我即使在睡覺也在思考Markcook2.0應(yīng)該長什么樣。
升級到Vue2.0,在開發(fā)體驗(yàn)上并沒有太大的變化,反而是Vuex2.0的使用讓我稍微有些不習(xí)慣,因?yàn)樗团f版本的用法有著比較大的不同。不過得益于文檔的詳細(xì),在仔細(xì)閱讀了文檔以后,遇到的問題基本都能夠得以解決。經(jīng)過一定的開發(fā)摸索,發(fā)現(xiàn)Vuex2.0其實(shí)會更容易理解和使用,因?yàn)樗?b>store,mutation,action和getter都放在了一起,在組件中只需要通過this.$store就能夠?qū)?b>store進(jìn)行操作,邏輯非常清晰易懂,所以也很容易理解為什么我項(xiàng)目中每一個(gè)組件的邏輯都非常簡單,代碼量也非常少。
由于水平有限,項(xiàng)目代碼難免會有錯(cuò)漏和不完美的地方,非常期待能夠得到大家能夠建議,后續(xù)也將繼續(xù)對Markcook進(jìn)行維護(hù)。
謝謝大家~
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/80591.html
摘要:年底,公司項(xiàng)目番茄表單的前端部分,開始了從傳統(tǒng)的到的徹底重構(gòu)。上傳流程圖不重要看文字事件觸發(fā)后,先去如果是圖片,可以同時(shí)通過以及將圖片預(yù)覽在頁面上后臺請求七牛的上傳,將拿到的和以及通過傳遞過來的一起到中。 關(guān)于上傳,總是有很多可以說道的。16年底,公司項(xiàng)目番茄表單的前端部分,開始了從傳統(tǒng)的jquery到vue 2.0的徹底重構(gòu)。但是上傳部分,無論是之前的傳統(tǒng)版本,還是Vue新版本,都是...
摘要:普通的回調(diào)函數(shù)調(diào)用執(zhí)行后續(xù)邏輯使用了以后的復(fù)雜邏輯獲取到正確的結(jié)果輸出兩個(gè)文件拼接后的內(nèi)容雖說解決了的問題,不會出現(xiàn)一個(gè)函數(shù)前邊有二三十個(gè)空格的縮進(jìn)。所以直接使用關(guān)鍵字替換原有的普通回調(diào)函數(shù)即可。 從今年過完年回來,三月份開始,就一直在做重構(gòu)相關(guān)的事情。 就在今天剛剛上線了最新一次的重構(gòu)代碼,希望高峰期安好,接近半年的Node.js代碼重構(gòu)。 包含從callback+async.w...
摘要:升級的區(qū)別與的斷層式升級不同,延續(xù)了自己的風(fēng)格。在命名方式和上有一些區(qū)別,掌握它們是你升級整個(gè)項(xiàng)目的關(guān)鍵。以下內(nèi)容都是來源于個(gè)人項(xiàng)目的一些經(jīng)驗(yàn)之談,并非系統(tǒng)性的闡述。總目錄前端經(jīng)驗(yàn)收集器轉(zhuǎn)載自個(gè)人建了前端學(xué)習(xí)群,旨在一起學(xué)習(xí)前端。 升級的區(qū)別 與angular的斷層式升級不同,vue延續(xù)了自己的風(fēng)格。在命名方式和API上有一些區(qū)別,掌握它們是你升級整個(gè)項(xiàng)目的關(guān)鍵。以下內(nèi)容都是來源于個(gè)人...
摘要:友盟社會化組件正式上線了此次相比于以往的版本,是一次顛覆性創(chuàng)新是友盟社會化組件自年版本推出后最大的一次版本重構(gòu)升級經(jīng)過近半年的內(nèi)測和開發(fā),現(xiàn)在終于正式上線此次版本升級,本著幫助開發(fā)者省時(shí)省力省事的方針,將主要包體積減少了,刪除了舊版本中所有 友盟社會化組件Android SDK 5.0正式上線了!此次Android SDK5.0相比于以往的版本,是一次顛覆性創(chuàng)新;是友盟社會化組件自20...
閱讀 877·2021-11-22 09:34
閱讀 1013·2021-10-08 10:16
閱讀 1826·2021-07-25 21:42
閱讀 1795·2019-08-30 15:53
閱讀 3528·2019-08-30 13:08
閱讀 2186·2019-08-29 17:30
閱讀 3349·2019-08-29 17:22
閱讀 2182·2019-08-29 15:35