步入前端已經一年了,是時候寫個總結了。
一個自不量力的承諾,我步入了前端。
去年的10月份來到北京尋找工作,在面試中,總經理問我,能否仿照某網站做出一個官網來,我那個時候連jquery都寫不熟練,甚至都不會寫,css沒有學過,html也知道的可憐,但由于我特別喜歡這個公司,所以當時自不量力的說我可以,于是開始了我人生的前端開發。現在回想起來,真的很慶幸當時的自不量力。人生是需要一些自不量力的,萬一實現了呢。
去年的10月份,我的能力確實是如此,去年畢業開始從事javaweb開發,還不分前后端,什么都學,導致我什么都沒學會。來到北京后的這個公司,開始從事前端開發。最先開始的工作是用jquery,css,html來搭建我們的官網,加上修修改改,前前后后,用了大約兩個月的時間。這兩個月的時間熟練使用了,jquery,css,html。然后開始轉戰公司的IOT(Internet Of Things)項目前端開發,IOT項目用的是時下比較流行的技術,html5,angular1.x,bootstrap3.x,requirejs,gulp,nodejs,npm,bower,圖標字體等等,剛進入這個項目,真的是一頭霧水,最開始看了好多天的《用Angularjs開發下一代wen應用》,但還是沒什么頭緒,后來按著我司大神的代碼,復制粘貼修改,做個簡單的頁面,有不懂得就問大神,就這樣開始一點點的起步。這里有一點需要注意的是,盡量結合實踐學習。紙上得來終覺淺,絕知此事要躬行。
就這樣開始學習angular,bootstrap,總是會遇到各種各樣的問題,不停地百度(那個時候我還不用Google),總是會煩擾大神,每天都加班學習,一般都是8,9點上班,晚上9,10點下班,我喜歡這樣的工作,在能吃苦的年紀,不要選擇安逸。要知道功夫不負有心人,這句話是對的,隨著時間的推移,我掌握了越來越多的知識,遇到的一個個問題,都一個個的被解決,漸漸地能熟練的在當前的框架下面寫代碼,雖然還是不懂這個框架深層原理,至少實現產品功能已經沒有太大的阻力。這個時候大約是今年的4,5月份了。
這個階段,我開始看一些基礎書籍,《JavaScript權威指南》,《Html5程序設計》,《瘋狂Html5/css3/javascript講義》,《響應式web設計》,《移動優先與響應式設計》,《Bootstrap實戰》等,這些書籍大約都是這個階段開始深入學習的,對前端的基礎有了更深入的學習掌握。比如要重視響應式設計,移動優先準則,h5的新元素,css3的新特性,js的原型,閉包,設計模式等等。
后來加入我司ARK產品的前端開發工作,并開始獨立負責這個產品的前端開發,這又是一個新的從無到有的項目。這個階段我把以往學到的技術都應用到這個項目中,但有一點是沒有適應手機,因為PC端的網站去適配手機還是會有很多的問題,看了阿里云,天貓等網站,他們都是單獨做的手機端的網站,這個后期我想我們也要單獨做這種適配。這個階段也遇到了很多問題,但大多都是一個人去解決,要知道能自己完成的盡量自己完成,實在弄不了的或者會影響產品發布時要請求他人,每個人的時間都是寶貴的,沒有人有責任義務愿意花很多時間來教你,成長更多的是來自于內心的渴望,而不是外界環境的施壓。這個階段主要學習了nodejs,webpack,canvas(可能大家都比較熟悉的是知乎的背景就是一個canvas),javascript設計模式(這個還是很有深度的,目前還沒能全部學會),并且自己寫了個nodejs的項目已開源到GitHub,還主要學習了很多的教學視頻,推薦一些app,《極客學院》,《慕課網》,《百度傳課》,《網易云課堂》,《麥子學院》等這里面都有很多的前后端的知識視頻教學,能學習到很多知識。
最近,ARK產品已經收尾,又要開始新的產品,新的征程,這次是我自己搭建了前端框架
JS框架:Angular1.x
html/css框架: bootstrap3.x
模塊加載器兼打包工具:webpack
css預編譯器: sass
包管理器: npm
后期會更加詳細的介紹這個前端框架,這里要說的是sass和webpack,其他的都是最熟悉不過的了。sass距今已經至少4,5年了,已經很穩定并且得到廣泛好評,應用很廣,大家可以自己百度。webpack是2015年最火熱的前端項目模塊加載器兼打包工具,可以把各種資源作為模塊來使用和處理。今天的webpack更加穩定,而且一年來的時間,webpack社區發展豐富了很多內容,幾乎你遇到的任何問題,社區都會有答案。于是今年我引入了這個工具,這個工具有很多的優點,它的目標是:
Split the dependency tree into chunks loaded on demand
Keep initial loading time low
Every static asset should be able to be a module
Ability to integrate 3rd-party libraries as modules
Ability to customize nearly every part of the module bundler
Suited for big projects
這些目標的實現讓它成為最優秀的工具,這些是其他工具所不能達到的。它還有如下優點:
支持AMD/CMD規范
能模塊化的不僅僅是js,包括CSS,Json,scss等等
開發便捷,能替代部分gulp/grunt的工作,比如打包,壓縮混淆,圖片轉base64,scss編譯,熱加載等等
經過一年多的迅速發展,有了更多的插件,擴展性強,插件機制完善
可以通過配置打包成多個文件,有效利用瀏覽器的緩存功能提升性能
內置source-map,即使打包到一起,也方便調試
網上也有很多的webpack,gulp,requirejs等的對比,大家可以自行搜索查看。
所有的工具都是為了解決時下項目的某個痛點,使開發人員更加敏捷的開發,大可不必追求最火熱的技術(比如當前最新的ng2.x,vue2.x等,這些可以自己先寫寫測試),因為會有很多不確定因素。時下正是前端時代,日新月異,發展速度 飛快,每天都有新的庫或者插件產生,Javascript也是2016年github上面最火熱的語言,這是一個混亂的時代,這是一個好的時代。作為前端開發者,我們要抓住、珍惜這場機遇,首先最重要的是把基本技術打牢,然后不斷進取,穩步向前,追趕我們的時代。
2016年還有兩個月了,年初的計劃還有多少沒有完成?是時候做最后的沖刺了,對我而言,這是我前端的第一年,我的一年職業規劃就是把基本技術熟練掌握,還有兩個月,準備要再多學習鞏固一些基本知識。
最后,祝愿每個人2016大豐收,有所成長和進步。以上文字如果有不正確之處,煩請指正,大家一起學習一起進步。