簡(jiǎn)述:我的2017技術(shù)流水賬
***次使用 AngularJS 是在 2014 年,那時(shí)候正在做一個(gè)回合制的手游項(xiàng)目,編寫(xiě)后端的同時(shí),也順手編寫(xiě)了 GM 工具和 Web 頁(yè)戰(zhàn)斗模擬工具,為了方便,整個(gè)工具全部寫(xiě)在一個(gè)頁(yè)面中。頁(yè)面交互全部使用 jQuery 完成,寫(xiě)到中后期,已經(jīng)被獲取表單數(shù)據(jù)、綁定事件、修改 DOM 元素折騰得不行。于是嘗試了 AngularJS ,整個(gè)人都感覺(jué)不一樣了,完全是像寫(xiě)后端代碼一樣寫(xiě)前端代碼。尤其是雙向數(shù)據(jù)綁定,實(shí)在是解決了 GM 工具等管理平臺(tái)中的痛點(diǎn)——大量數(shù)量的處理。AngularJS 結(jié)合 Bootstrap,簡(jiǎn)直是編寫(xiě)管理后臺(tái)的大殺器。
可是隨著單頁(yè)應(yīng)用的規(guī)模越來(lái)越大, AngularJS 的劣勢(shì)也日益明顯,雖然服務(wù)可以實(shí)現(xiàn) JavaScript 代碼的復(fù)用,但這還不夠。指令雖然實(shí)現(xiàn)了 JavaScript 和 HTML 的復(fù)用,使用又太過(guò)繁瑣。雙向綁定雖然方便,但這種隨意到處修改值的結(jié)果就是值變化了你也不知道是哪里改的。代碼文件的組織,也只能按照 JavaScript / HTML / CSS 分別組織。文件打包最多用用 Browserify + Gulp。無(wú)論從本身的技術(shù),還是從社區(qū)的環(huán)境來(lái)看, AngularJS 的確已經(jīng)是過(guò)去的技術(shù)了。
你好,Vue
去年的時(shí)候,已經(jīng)開(kāi)始陸續(xù)試用 React 和 Vue 1.x ,React 的熱更新、徹底的組件化、完整的 ES6 支持,實(shí)在是讓人興奮。不過(guò)我始終沒(méi)有習(xí)慣 JSX ,而 Vue 1.x 的革命性又稍顯不足。但 Vue 2.0 的面世,徹底征服了我,博取眾家之長(zhǎng),新的生態(tài)工具的支持,在簡(jiǎn)單的嘗試之后,很快便投入了 Vue 2 的懷抱。現(xiàn)在的管理后臺(tái),基本都是 Vue + Element-ui 的組合。
干凈利落,ES6
轉(zhuǎn)移到 Vue 2 便可以在整個(gè)項(xiàng)目中使用 ES6 了。最喜歡的還是簡(jiǎn)潔的箭頭函數(shù)和放心使用的局部變量,再加上 eslint 的強(qiáng)制語(yǔ)法檢查,讓所有人都編寫(xiě)格式一致的代碼。唯一不爽的就是我喜歡的 'sid' === name 的寫(xiě)法要放棄了。
快快快,Elasticsearch
Elasticsearch 的確是所有的后端開(kāi)發(fā)人員都該試一試的技術(shù),讓人震驚的速度,與生俱來(lái)的備份機(jī)制,幾乎完全零配置開(kāi)箱即用, DSL 可能相對(duì) SQL 要復(fù)雜一些,但入門(mén)也還好。
有了 Elasticsearch ,與數(shù)據(jù)存儲(chǔ)和統(tǒng)計(jì)相關(guān)的事情,幾乎都不再是問(wèn)題。在 MySQL 中有了幾百萬(wàn)數(shù)據(jù),想要流暢的查詢統(tǒng)計(jì),就得開(kāi)始規(guī)劃字段建立索引了,在 Elasticsearch 中完全不用考慮,更何況它的統(tǒng)計(jì)功能經(jīng)甩 MySQL 無(wú)數(shù)條街。還不提 Elasticsearch ***大的檢索功能。
Elasticsearch 是今年讓我最有幸福感的技術(shù)。
淺嘗轍止,Python / Go
前不久一個(gè)項(xiàng)目,需要獲取圖片 hash,查了一下 Python 這方面的庫(kù)比較豐富,于是看了一下 Python 的語(yǔ)法就上手了,花了半天工夫折騰出來(lái)。后來(lái)看到還有 Go 的版本,便也試了一下。運(yùn)行結(jié)果有點(diǎn)震驚,Go 比 Python 快了至少 5 倍,果然 CPU 密集的事情,還是編譯語(yǔ)言比較拿手。Go 的 defer 和強(qiáng)制代碼格式 gofmt,給我留下了深刻的印象。感覺(jué)是時(shí)候開(kāi)始一個(gè)新的后端語(yǔ)言了。
半途而廢,Docker
原計(jì)劃是準(zhǔn)備放棄 VirtualBox,不過(guò) Docker 并不能方便的執(zhí)行各種 linux 命令,它更偏重于代碼的運(yùn)行環(huán)境,而我現(xiàn)在又基本不再掌控后端,所以對(duì)我的意義已經(jīng)不大。Docker 最終便沒(méi)有用到工作之中。
Github Desktop
SourceTree 現(xiàn)在是越來(lái)越慢了,而且經(jīng)常需要打開(kāi)關(guān)閉項(xiàng)目 Tab 之后才能發(fā)現(xiàn)文件修改,啟動(dòng)也很慢。終于我開(kāi)始了新的 Git GUI 工具的選擇,最沒(méi)有抱希望的 Github Desktop 卻是我最終的選擇。超出想像的快,簡(jiǎn)潔的界面,雖然不支持 ssh key 登陸,功能也比較簡(jiǎn)陋,但只要速度快,小問(wèn)題是可以忍受的。
Coding.NET
已經(jīng)用了兩三年 Coding.NET 了,以前碼幣容易掙的時(shí)候,還換了件 T 恤,開(kāi)始是個(gè)人使用,后來(lái)推廣到團(tuán)隊(duì)使用,出了企業(yè)版后,還動(dòng)員公司也付了費(fèi)。但現(xiàn)在免費(fèi)用戶取消了 Coding Pages 自定義域名功能,后來(lái)還限制五個(gè)私有項(xiàng)目,這讓 Coding.NET 成為了另一個(gè)被放棄的服務(wù)。
2017 的***一天,用 Gogs 搭建了自己的 Git 服務(wù),花 6 塊錢(qián)把 n 年前的花生殼賬號(hào)做了個(gè)認(rèn)證,開(kāi)始了自建之路。