這是我在掘金的第一篇原創文章,主要是總結一下2018年技術上的學習與思考,也想對2019年進行一下規劃和展望。
2018 從小程式開始
2018年,是我工作的第二年。17年,主要的學習和實踐的技術是vue,我們組用vue做了一套 sass 化的商城系統。但是17年末,因為公司業務的調整,在18年初,我們組專注於了小程式的開發。
在經過獨立負責前端開發一個比較小的禮品卡小程式之後。我們組開發的第一個小程式是某手機品牌商城。在這一年中我大概參與了八九個小程式的開發,從開始小程式的商城,到目前在做的智慧門店專案。
首先想談的是選型,我們當時有原生,mpvue 和 wepy 可選。當時的考慮是想既然是新的東西,要先了解它的本身是怎麼寫的,所以就選擇了用原生開發。但是我們又很想用scss來寫樣式,所以使用了前端工具,主要是為了轉換 scss。關於前端開發工具,我在之後的部分也會著重介紹。
其次,在小程式技術的學習上,在開始時,感覺沒有遇到太大的問題,因為之前有vue的基礎,所以轉換為小程式的開發中,還算比較自然。在這一年裡,我總結下來比較難的點有:
- 實現一些複雜的效果的時候,小程式有一些瓶頸。比如小程式的效能,比如一些內建的元件一些事件想修改的時候,沒辦法完全的修改和控制,有些還有相容性問題。例如video元件對播放條的控制。需要多去研究,微信開發者社群也是一個好地方。
- 對於小程式授權的控制。因為小程式對授權管理還是比較嚴格的,而且需要授權的規則也在改變。在整個商場系統中,什麼時候獲得許可權,可以拿到比如 UnionId,頭像等,需要在開始時就討論和設計好。
- 小程式效能的優化。現在還只是在優化介面的請求,儘量減少無用或者複用的介面。在未來也希望有更多的探索。
小程式cli工具和前端工程化淺嘗
在18年9月份左右的時候,當時我們組內已經做了十幾個左右定製化的小程式商城。但是在這個過程中,我們寫了一些UI元件和業務元件來加速開發,無論是樣式元件,或者是對接後端的業務元件,都沒有一個統一的管理,碎片化比較多。可能不同的商城實現同樣的功能的時候,是兩套程式碼。加上之前是用的別人寫好的cli工具,所以這時候我的想法是自己寫一個cli的工具,可以把樣式元件和業務元件統一管理起來,並且進行版本控制。這樣,在之後討論中也逐漸明確了以下幾個功能:
- 把UI元件庫,業務元件庫和編譯環境配置檔案分別放到三個git倉庫進行管理。
- 能夠初始化開發專案,cli工具可以把我們寫好的元件庫按照所需版本新增到初始化的專案裡。這樣剛初始好的專案的功能也是統一的。
- 能夠更新兩個元件庫以及cli工具自身。
- 能夠編譯 scss 檔案,並且解決 scss 在轉為 wxss 過程中的重複編譯和與wxss @import功能不同的問題(最後我們把 scss 檔案分為兩類,一類裡面只寫樣式,一類裡面寫一些變數和有功能的語句,這個之後再寫一篇文章細談)。
- 能更方便的切換開發環境(這是之前的工具就有的,這裡做了一些擴充套件)
這是這個cli工具規劃的一期的功能,以上的功能基本都實現了,也算運用了一點前端工程化的思想去管理我們小程式的開發,最後我完善了這個工具的文件並且上傳到了公司私有的Npm源上。但是這個工具還是有個小遺憾,就是我 webpack 用的不好,在處理 scss 檔案重複編譯的問題上沒有找到好的方法,最後是在百度出的比較 fis3 這個打包工具上找到了方法。但是 fis3 本最近也沒有更新了,裡面的東西都比較老,希望之後可以用 webpack 解決,把編譯核心換成 webpack。
當然也通過這個小工具的編寫,我也學了一些關於編寫命令列工具的以及一點點node的知識。
Taro,一套 react 程式碼,編譯多端小程式
年底的時候,我們有了支付寶小程式和釘釘小程式的一些探索。也希望可以一套程式碼編譯多端小程式。我就嘗試了一下把一個不是很複雜的小程式轉換為Taro的專案。
當時選擇Taro也是經過了一些比較,相較於其它的多端編譯的框架, Taro 相對來說出來的比較早,用的比較多,github上issue解答比較多,腳手架工具也好用,也出了小冊可以學習。
Taro有一個功能感覺很好用,只要在一個已經寫好的小程式上執行 taro convert
可以把一套小程式程式碼轉換為 taro 的專案。 雖然我們的小程式程式碼可能因為用 <template>
巢狀的有點多,使得轉換的過程中有報錯。但是還是很方便的直接轉換為了react程式碼。
現在使用起來的小問題就是一個是taro本身有一些限制,但是會有提示,要看一下文件什麼不能用。還有就是可能對其它除了微信小程式的小程式的相容性的支援(文件也希望儘快更進)。
現在已在嘗試或19年感興趣的點
現在已經19年了,下面有些東西已經在嘗試學習,但也可能有些點19年學習不到,還是加油吧。
- react全家桶
- canvas基礎
- webpack
- TS
- node基礎
- tensorflow.js
總結
18年感覺主要精力還是在小程式上,對其它方面還是技術上的進步還是不多,而且沒有一個好的規劃、感覺學習的點還是不夠深,不夠精。希望在19年能有所規劃,有所改善。在工作上,也希望在組內,能更發揮自己的技術影響力,19年再加油!