如今才總結彷佛有點晚,但聊勝於無,記錄一下個人2016,畢業的第一年,對於人生意義重大的一年。javascript
打從進入了大四以後,便深深的意識到了就業的壓力,並一直在作着邁向社會的準備。從2015年9月開始,便開始投簡歷(技術類的招聘通常都比較早),天天8點出8點歸,總算沒有辜負辛苦了兩個月的本身,斬下一些很差不壞的offer。前端
11月開初,技術類的招聘已經基本結束了。不甘於閒賦在學校的我又開始了本身的實習之路。
提及來也是慚愧,在這實習期間,我竟展轉了三家公司進行實習。java
在4399實習期間,鍛鍊了我很是多的東西。感謝勇哥、新哥,給予我機會去作更多的嘗試。react
在4399中,我有幸進入到UED部門,在設計組中擔任前端工程師。android
在這期間,我頭一回面向多項目編程,在這期間積累了很是多的實戰經驗,也開始有了本身書寫HTML、CSS、JS的規範。同時,在此期間本身蚍蜉撼樹地嘗試起了前端代碼構建工具——gulp,以本身的理解寫了一篇粗鄙的gulp介紹——Gulp Introduction。ios
研究完gulp以後,本身摸索着將gulp運用到實際的開發工做當中,在勇哥的指點下,開始跳出項目外去思考,嘗試利用工具解放雙手,向模塊化邁進,寫出文章——在項目中使用gulp。git
在4399的這段寶貴的實習經歷中,讓我對大前端、「技術選型」、「構建工具」、「腳手架」有了一個更加深入的認識,讓從前僅會隨便寫一下簡單頁面的菜鳥跳出一切都已經準備好的溫馨區,從無到有的學習、創做、進步。github
過完春節,在濱豪的推薦、南風姐的幫忙下,有幸進入到UC進行實習,再次開始一個全新的旅程。正則表達式
在UC中,我就任於海外業務組,基於NodeJS進行爬蟲的開發。npm
在此以前,雖對NodeJS已經有一個初步的認識,也曾從書籍上學習過。但我始終認爲,在前端、乃至技術的學習中,若是沒有項目驅動(不管是工做業務仍是本身創造的需求),都是很難真正的學會的。
從一入職,我所作的第一件事就是學習項目組裏面的編碼規範,包括命名規範、代碼縮進、編寫風格、註釋規範等,我才深深的感覺到一個精良的規範對於一個團隊的良好運行,是多麼重要的事情。
在以後的爬蟲開發當中,我愈加的感覺到編碼規範、代碼可讀性、code review等對於團隊的重要性。之前一直覺得這些東西都是很虛的,但當團隊日益龐大,業務日益繁重時,若是不能保證代碼的可讀性,是會嚴重的拖慢團隊進度的。同時,嚴格的code review,能夠防範於未然,規避不少往後意想不到的問題發生。歷來沒想過,本身寫的代碼原來挺爛的...
在爬蟲開發中,愈來愈感受NodeJS對於「前端」的革命是那麼的巨大。它讓「前端」再也不侷限於所謂的「切圖」當中,僅僅幾十行代碼,一個爬蟲就能寫出來了,並且運行良好,足以支撐巨大的業務。同時,NodeJS的出現,也讓先後端沒有了編程語言上的溝通障礙,可以更好的協做。
而我,也在此次實習中接觸學習並熟悉了不少必備的技能:正則表達式、Promise、命令行操做等。
在一系列的機緣巧合之下,我來到了現東家,從入職到如今工做了8個月的時間,在其中飽嘗酸甜苦辣,技術獲得了飛躍的進步。
感謝老大,沒有他當時的拍板就沒有如今的我,無盡感激~(雖然到如今我也不知道爲何當時他會看中我...)
如何入職暫且不表,但這段經歷對於我來講,是一個絕對重大的人生轉折點,它讓我開啓了一個全新的職業生涯,也讓我對創業有了更深、更全的認知。
對的,我就是進入到了一家前景很是可期的創業公司!
在這裏,我是最初期的團隊中的一員,在老大的指引下,一步步從無到有的在前端這條路上越走越遠。
我們團隊是「JavaScript 全棧開發團隊」,在此打個小廣告,歡迎志同道合的你。入職以來,個人title是「客戶端開發工程師」,主要開發我們的APP。對的,你猜到了,用的就是REACT NATIVE
。
在老大給我搭好了開發所需的初始框架以後,我便開始投入到工做當中。然而,我要怎麼開始呢?!當時的我幾度懵逼,咬咬牙便開始摸索起來。
那時候我但是一個連github.com都不怎麼會用的人呀,因此只能從文檔、老大給的starter-kit
入手,一步步地啃並動手學習。
從搭建開發環境開始,我便陷入了深深的蛋疼當中...怎麼讓windows中跑起starter-kit
,我足足研究了兩天,折騰了一大堆,後來總結起來,嘔出了Windows下安裝React Native的安卓環境這篇文章。
說實話,搭建RN環境,挺累的...
開發環境搭好以後,就抓緊學習RN的寫法了。RN用的是一套全新的XML標籤,與一套全新的CSS語法,雖然看樣子格式仍是那種格式,但背後卻有不一樣的學習成本。在摸索完以後,我便開始以我以前積累下來的移動端網頁開發經驗,開始摸索着開發移動端的頁面了。對着設計稿,摸索這RN中使用了REM、百分比、flex,以打造一個能夠多屏幕適配的頁面。
還記得當時開發第一個頁面的時候,打一行代碼須要重寫三遍,一個頁面基本作完,又推倒重作,用2天時間,終於弄出了一個與設計稿大致類似的頁面。看到成果時,感受沒白熬。
以後固然就是連續不斷的爬坑啦。總之,在這段日子裏,我摸出了:
github插件選擇(star,issue),找RN的插件的話,js.coach/react-native/是個不錯的選擇
npm版本控制很重要
技術選型
代碼組織的藝術
項目架構的前瞻性、拓展能力
深挖業務需求,凡事多想一想,避免對代碼打上「往後一定重寫」的tag
APP開發到了必定程度,就碰到了JS所不能解決的瓶頸——原生SDK的接入。由於當時的業務需求,已經到了第三方插件沒法知足需求的時候了。爲了實現功能,必須進入到android和ios中去寫RN能夠用的插件。當時看到客戶端原生代碼(java, Objective-C)的時候真的是一臉懵逼,尤爲是Objective-C,全新的寫法讓我無可奈何思考了一天的人生。
沒辦法,只得抄着現有的第三方插件庫,半抄半寫。途中已然忘記在多少個QQ羣中問人,也記不起找過多少個朋友,多少個羣友去問問題了,只記得同事們都對我說:「駿馬面前無溝壑」...
終於,我對RN的熟悉度愈來愈高,開發起來也沒那麼吃力了。固然爬坑是少不了的,但已然沒有那麼痛苦。趁着在業務不是那麼多的時候,我趕忙買了幾本android、ios的入門書籍啃起來。感受回到了剛開始學前端的時候,啃「JavaScript高級程序設計」那段日子...
在項目開發到必定體量的時候,以前寫得很爛的代碼、不太合適項目的架構,已經嚴重的拖了後腿了,讓項目開發變得難以高效迅速。在深思熟慮事後,我決定來一次項目代碼重構。
此次重構,的確預備了好久了。我把平時寫業務代碼時碰到的一些不爽的點都收集起來,而後天天下班回家就在想要如何作纔可以更好的在知足業務需求的前提下,高效迅速的開發。這一次代碼重構主要針對下面幾點:
將很是通用的組件(入Toaster, Confirm, Picker等),從以xml的格式應用,轉變爲函數調用。例如我以前須要在頁面中引入錯誤提示Toaster這個組件,是要在render中加上<Toaster />
這個標籤的。而如今,只須要在須要的時候,協商Toaster.error(new Error('錯誤提示'));
,便可完成調用。這個必定程度上避免了react + redux
下if-else
嵌套過多的問題;
重整項目中store
冗餘,不夠精細的問題。目前以頁面爲維度,來進行store
的組織,同時補充一些全局通用的store
。
重整頁面代碼的組織結構,將其調整爲一個較爲通用、規範的組織結構。
革本身的老命,可不是開玩笑的...
已讀但不限於:
<瘋狂Android講義> <Javascript語言精粹> <Javascript函數式編程> <Javascript設計模式> <你不知道的javascript(上卷)> <深刻淺出NodeJS> <CSS權威指南>
<第二屆FEDay前端年會> <騰訊IMWeb> <第三屆CSS大會>
在此特別感謝裕波
大大與前端圈
可愛的工做人員們,爲咱們廣州人民帶來了這兩場盛大的高質量前端技術分享會議。
多參加技術會議,能極大的開拓本身的技術視野哦!
在技術上,不懂的仍是太多了。2017年,但願本身可以再接再礪,向當一名優秀的前端工程師
這個夢想繼續努力。
多讀(15本書),多寫,多總結(15篇分享)。
同時,但願本身可以多多接觸除技術之外的事物,努力拓展、拓寬本身的視野,交際!