重回前端

後端之旅

記得幾年前剛作前端的時候,天天的工做就是HTML + CSS + JS三件套,其實說JQuery更準確一些,頁面佈局,模板嵌套,一套JQ走天下,隨着慢慢接觸到了前端工程化,模塊化,尤爲是ES6的普及,才發現本身的基礎那麼差,開始惡補JavaScript的基礎,看了幾本書,天天在網上找案例,看博客,漸漸的也能手寫一些原生JS,可不少軟件工程的東西都不瞭解,只是似懂非懂,應付業務尚可,像一些原型鏈、閉包、繼承的概念、MVC、分層、架構,都是知其然而不知其因此然,後來換了公司,接觸了Vue,SeaJs,RequireJs,MVVM,看着一套套層層封裝的框架,發現本身的知識結構如此薄弱,可又不知道該怎麼發力,相信這也是不少剛工做一兩年的前端程序員很迷茫的地方,明明書也看了,代碼也敲了,仍是感受不得其法。前端

18年初,公司的業務方向發生了一些改變,前端的項目開發進度也放緩,然後端的工做有一些空缺,在作小程序的同時,我開始了後端的學習。公司的後端用的.net平臺,因而從c#,SqlServer數據庫,到MVC,三層架構,Http協議,ROM,IOC等框架也慢慢接觸,隨着全面轉到後端開發,一年多的時間,也有了獨立負責了項目,雖然作的項目不是太複雜,但後端開發帶給個人,是一整套的webk開發流程,尤爲是對前端的反哺。程序員

反哺前端

  • 在作後端以後,我對前端的不少概念都有了新的認識,也有了和之前不一樣的看法。之前老是據說,前端的工程化是基於後端多年成熟的工程結構演變而來的,不少新的技術也都能在後端技術裏看到影子。前端做爲後端開發中MVC的View,負責頁面和數據的展現,而數據庫,業務邏輯,數據過濾,權限控制等等等一系列看不到的東西都由龐大的後端所支撐,考慮的東西也多了不少。回過頭再看一些之前不太明白的前端概念,忽然有一種恍然大悟的感受。web

  • 關於靜態語言和動態語言。之前雖然知道二者的區別,但也僅限於概念,爲何說JS做爲弱類型的語言,相對於強類型語言有先天的劣勢呢。對於JS,一個var基本走天下,後來出來了let和const,語法的性質仍是同樣的,對於JS來講,定一個變量,就是能夠隨便的修改的,歷來不用考慮的那麼多,這也是我剛寫C#時比較不習慣的地方。可隨着業務邏輯的複雜,強類型的代碼讓程序更加清晰,代碼編譯前就肯定了類型,並不容許改變,不管是字段,屬性,仍是方法,都各司其職,大大提升了程序的安全性。數據庫

  • 關於類。剛開始學習JS的時候就知道了面向對象,可到底什麼是面向對象,原本就是一個抽象的概念。因爲之前JS沒有提供類的定義,只是經過Function的構造函數或者原型對象來模擬類,學習起來就很吃力,雖然知道面向對象是什麼,可是腦子裏很難映射出相應的程序。而類做爲不少後端語言的最基礎的類型,能夠把字段,屬性,方法封裝到一塊兒,經過類的構造函數生成示例對象,能夠說是面嚮對象語言裏最重要的東西了,經過學習C#才真正瞭解到了面向對象的三大特性:封裝、繼承、多態。最近特別火的TypeScript,基本就是繼承了C#的精髓,真正的用面向對象的寫法去寫JS。編程

  • 繼承和原型。JS的繼承和原型、原型鏈一直是困擾我很久的東西,這裏要感謝一本書《你不知道的JavaScript》,講的很是詳細,怎奈之前沒有接觸後端的時候,老是印象不太深入,書中一直在強調類的概念,經過模擬類的特性,去理解繼承和原型的指向,可在沒有類的概念的時候,理解起來也仍是很是吃力的。在C#中,繼承做爲重要的概念,使用的實在是太普遍了,想沒有印象都難,尤爲在學習了C#的反射之後,不自主的就聯想到了JS中的原型。全部的函數默認都會擁有一個名爲prototype的公有且不可枚舉的屬性,它會指向一個對象,這個對象一般被稱爲函數的原型,經過prototype屬性引用來訪問它。反射能夠經過Type和GetType(),獲取實例的類型對象,實現動態建立對象,動態賦值,動態加載類型,動態調用方法,而JS正能夠利用函數的prototype屬性來實現了這一特性。小程序

重回前端

經過學習後端並實際應用開發,發現了C#語言的精妙和優雅之處,隨着後端的深刻,也讓我明白了不少JS書籍裏都會說的一句話,JS是把雙刃劍,做爲動態弱類型語言,因爲使用的領域不一樣,因此有優點也有劣勢。做爲近幾年最火熱的語言,若是能把JS深刻研究透徹,必定能讓本身的技術得到一個巨大的飛躍,而TypeScript做爲微軟開發的JavaScript的超集,就必須得學一下了。因而花了兩天時間,快速學習了一下TypeScript的語法。TypeScript本質上是向Javascript添加了可選的靜態類型和基於類的面向對象編程,讓Javascript也擁有了類、接口以及類型檢查等許多靜態語言纔有的特性。在學習後端一年半之後,我以爲,我要重回前端了。c#

End

之前在學習的時候,不敢思考,不會思考,雖然看了很多書,可是隻能跟着做者的思想走,學到了皮毛,卻沒有學到核心。一方面是接觸的大型項目不夠,很難抽絲剝繭,透過現象看到本質,其次,只侷限於前端,卻不知前端不僅是網頁,而是軟件工程的一部分,沒有系統的學習整個web開發的流程。向前走,回頭看,繼續學習,擴大視野,不只僅是前端程序員,而要成爲真正的軟件開發工程師。後端

相關文章
相關標籤/搜索