先上結論
先上結論吧,從題主的提問來看,應該是有編程基礎的,然后我看了下題主的答題情況,是相關Java方面的知識,那相對于題主來說,web前端入門是非常容易的,因為至少,初級階段,你就不需要考慮Java那種多線程的處理。因為基于瀏覽器開發的web是單線程的。
男女平等而編程其實沒有什么適不適合男生女生的,又不是什么體力活,只要有編程思維,男女都可以。我堂妹就在鵝場做Web前端開發,我身邊前端開發的妹子至少占了三分之一。
好吧,問題已經回答完了,感覺太短了,而且沒有給你指明道路,要不我再短話長說,用故事的形式,講下你進入Web前端之后發生的事情吧。
一個故事來,上套路。
你發現,最近Web前端火的不要不要的,各大招聘網站上工資給的老高了,你想著如果成為Web前端高手,就可以天天吃香的喝辣的,再鄙視下之前說你女孩學編程無用論的人一下。
于是你準備開始學習Web前端,由于你已經有一定的編程基礎,所以編程語法啥的,你完全不擔心。很快,你就找到了相關的Web前端學習知識。
Web基礎三劍客你發現,Web前端的基礎,還是那老三樣,HTML、JavaScript和CSS,果然是人面桃花依舊在,幾十年了還不是這三樣,你心想,老娘我即使沒吃過豬肉,還沒看過豬跑嗎?
于是你很快的學習了HTML、JavaScript和CSS,你知道了HTML原來是標記語言,哇,簡單,比XML還簡單(假如你會Java,XML應該會),JavaScript原來是腳本語言,語法定義比Java輕松,還沒有多線程,不過這個事件驅動麻煩了點,是個新概念,花了你一點時間,而CSS,基本上就是更簡單了,負責一些皮膚優化。
你發現,這很像Java中的MVC框架,邏輯視圖分離,很棒的設計,通過HTML里面打上指定的標簽,把JavaScript和CSS與HTML進行關聯。
W3C在學習的過程中,你發現了W3C,原來,這家伙才是老大,用來定制標準的,然后你又發現,最近的標準是HTML5、ES6+、CSS3,你很淡定,不就是升個版本,加點新特性嗎?
ES6+然后你也很快速的學習了新特性,發現了很多新功能,這時你看到ES6+,等等,這家伙怎么冒出來的?JavaScript呢?你好奇的繼續看,發現原來ES全稱是EMCAScript,是一個標準,而JavaScript是按這個標準實現的一個語言,而你長看到的JavaScript其實是ES5,原來如此,于是你開始學習ES6+,學習過程,發現ES6+增加了好多東西,定制了很多規范,當然,也讓JavaScript更好用了,你知道了Promise,知道了同步函數,然后你看到了Babel.js
兼容性等等,怎么又出來一個Babel,不急,你再繼續看,發現原來JavaScript是可以直接在瀏覽器上運行的,他不像Java,需要編譯后才能運行,但這樣也有一個問題,市場上瀏覽器版本很多,用戶是不經常升級版本的,所以你用ES6寫的語法,舊版本的瀏覽器是不能運行的,這時候得把ES6轉成ES5了,怎么轉?當然就是用Babel了,一點就通的你,自然就懂,感嘆的說了下:這不就相當于加個編譯器嗎?
NPM于是你看了下怎么使用babel,除了有Script引用外,還有個Npm方式加包,這是什么鬼?怎么又多了一個概念?你想起花木蘭替父從軍,心想,老娘我今天就和你扛上了,然后你又開始找NPM的資料,發現了,原來這個東西是前端的工具庫,有點像Java中的Maven庫,不找還好,一找果然,拔出蘿卜帶出泥,你又把Node.js給帶出來了
Node.js然后你又入坑了,哦不,又開始學習了,你了解了,原來前端不止三劍客,是因為有了Node.js,讓前端真正開始模塊化、組件化的發展,甚至將魔抓伸入了服務端方向。
是的,通過Node.js,你了解了什么是前端模塊化,什么是前端組件化,什么是Node服務端
開始練手你覺得,老娘學的也差不多了吧,然后就開始做項目吧,于是你想,前端是不是有類似服務端之類的像Spring之類的框架呢?
還真有,你一搜索,發現現在前端最熱的三個框架,React、Vue和Angular,然后你又開始了入坑,哦不,學習之路。
通過React,你了解了什么叫組件化開發的詳細細節,通過Vue,你知道了什么叫漸近式開發,通過Angular,你知道了原來這貨是雙向綁定的鼻祖。
工程化你選了一個React框架,寫了一段時間,要發布了,這時候懵逼了,怎么編譯呢?這時候你又發現了Webpack,原來前端是通過Webpack進行打包編譯,但這貨的配置有夠復雜的,你又花了好多時間學習,通過了解,你還了解了其它的編譯工具,如果Grunt、Rollup,發現他們的適用場景還有不同。
優化部署完后,你看了下效果,感覺還不錯,可是怎么這么慢,另外好像還有報錯,于是你又學習了Chrome Web開發者工具,知道了怎么對瀏覽器進行優化,也知道了還有個Web緩存機制,Web數據庫,了解了請求的HTTP相關信息,慢慢的,你逐漸成了一個Web端牛人。你開始不自稱老娘,改叫本女王大人。
BFF已經成為女王的你發現,前端總是在調用服務端的RESTFul接口,過多的請求,過多的無用信息,已經成為你優化性能的一個問題所在,所以你決定做一個Node中間層,進行請求聚合和轉發。慢慢的,你的魔抓已經伸向了服務端。
小程序公司的業務向小程序方向全面遷移,你做為女王大人,當仁不讓的,要占領這個高地,你一看,呀,小樣的,這寫法完全和Vue差不多嘛,于是,理所當然的,你又開始入坑了……
總在學習慢慢的,你留下了瀟瀟背影,在Web前端的征途之中,你發現,呀的,太難了,技術每個月都在更新,你除了學習就是在學習的路上,這何時是個頭呀,你留下一聲嘆息,又開始WebAI和WebAR方向進行研究了。
80% 的人都覺得編程難。前端不用懂編程,做個頁面就行了,而編程需要對問題進行透徹的分析,理清其涉及的所有細節,預測可能發生的所有意外與非意外的情況,列出解決方案的所有步驟,以及對解決方案進行盡量全面的測試。而這些正是編程難的地方。任何一點遺漏都會成為bug,輕則導致挨罵,重則導致經濟損失甚至危害安全。
新手學習前端開發的話,一般需要5到8個月的時間。
如何學習前端開發,
Web前端的學習路線
結合我的學習經歷、近年來輔導學生的經驗以及公司中實際項目的需求,在這里將Web前端的學習分為以下幾個階段,具體的學習路線圖如圖所示。
第一階段——HTML的學習。
超文本標記語言(HyperText Mark-up Language 簡稱HTML)是一個網頁的骨架,無論是靜態網頁還是動態網頁,最終返回到瀏覽器端的都是HTML代碼,瀏覽器將HTML代碼解釋渲染后呈現給用戶。因此,我們必須掌握HTML的基本結構和常用標記及屬性。
HTML的學習是一個記憶和理解的過程,在學習過程中可以借助Dreamweaver的“拆分”視圖輔助學習。在“設計”視圖中看效果,在“代碼”視圖中學本質,將各種視圖的優勢發揮到極致,這種對照學習的方法彌補了單純識記HTML標簽和屬性的枯燥乏味,想必對各位初學的小盆友們來說必定是極好的!
在學習了HTML之后,我們只是掌握了各種“原材料”的制作方法,要想蓋一幢樓房就還需要把這些“原材料”按照我們設計的方案組合布局在一起并進行一些樣式的美化。
于是進入第二個階段——CSS的學習。
CSS是英文Cascading Style Sheets的縮寫,叫做層疊樣式表,是能夠真正做到網頁表現與內容分離的一種樣式設計語言。相對于傳統HTML的表現而言其樣式是可以復用的,這樣就極大地提高了我們開發的速度,降低了維護的成本。
同時CSS中的盒子模型、相對布局、絕對布局等能夠實現對網頁中各對象的位置排版進行像素級的精確控制。通過此階段的學習,我們就可以順利完成“一幢樓房”的建設。
“樓房”建設完成之后,我們可以交給用戶使用,但是如果想讓用戶獲得更佳的體驗,我們還可以對“樓房”進行更深一步的“裝修”,讓它看起來更“豪華”一些。
為了完成這個任務,我們進入第三個階段——JavaScript的學習。
JavaScript是一種在客戶端廣泛使用的腳步語言,在JavaScript當中為我們提供了一些內置函數、對象和DOM操作,借助這些內容我們可以來實現一些客戶端的特效、驗證、交互等,使我們的頁面看起來不那么呆板,屌絲瞬間逆襲高富帥!有么有?
此時,也許你還沉浸在JavaScript給你帶來的驚喜之中,但你的項目經理卻突然對你大吼道
JavaScript的兼容性和復雜性有時候的確讓我們頭疼,還好有“大神”幫我們做了封裝。
接下來我們進入第四個階段——jQUery的學習。
jQuery是一個免費、開源的輕量級的JavaScript庫,并且兼容各種瀏覽器(jQuery2.0及后續版本放棄了對IE6/7/8瀏覽器的支持),同時現在有很多基于jQuery的插件可供選擇,這樣在我們實現一些豐富的動態效果時更方便快捷,大大節省了我們開發的時間,提高了開發速度,這也充分體現了其write less,do more的核心宗旨。這個Feel倍兒爽!有么有?
“豪華大樓”至此拔地而起,但是每天這樣日復一日,年復一年的蓋樓,好繁瑣!能不能將大樓里面每一個單獨部件模塊化,當需要蓋樓時就像堆積木一樣組合在一起,這樣豈不是爽歪歪?可以實現嗎?答案是肯定的。
這種思想在Web前端開發中也是適合的,于是乎就出現了各種前端框架,在這里推薦給大家的是Bootstrap。
Bootstrap是Twitter推出的一個開源的用于前端開發的工具包,是一個CSS/HTML框架,并且支持響應式布局。一經推出后頗受歡迎,一直是GitHub上的熱門開源項目。
在項目開發過程中,我們可以借助Bootstrap提供的CSS樣式、組件、JavaScript插件等快速的完成頁面布局和樣式設置,然后再有針對性的微調樣式,這樣基于框架進行開發大大縮短了開發周期。站在巨人的肩膀上就是爽!
Web前端的學習建議
最后給大家聊聊在學習Web前端中的一些建議和方法。
自己是一個五年的全棧工程師,這里推薦一下我的前端學習交流群:開始484然后757最后760,里面都是學習前端的,群里會不定期更新最新的教程和學習方法,有想學習web前端的,或是轉行,或是大學生,還有工作中想提升自己能力的web前端黨歡迎加入,
在CSS布局時需要注意的一個問題是很多同學缺乏對頁面布局進行整體分析,不能夠從宏觀上對頁面中盒子間的嵌套關系進行把握,就急于動手去做,導致頁面中各元素間的關系很混亂,容易出現盒子在浮動時錯位等情況。建議大家在布局時采用“自頂向下,逐步細化”的思想,先用幾個盒子將頁面從整體上劃分,然后逐步在盒子中繼續嵌套盒子。
“君子生非異也,善假于物也”,在學習的過程中還要多瀏覽一些優秀的網站,善于分析借鑒其設計思路和布局方法,見多方能識廣,進而才可以融會貫通,取他人之長為我所用。
同時還要善于使用Firebug這個利器。Firebug一方面可以在我們學習過程中幫助我們調試自己的頁面,另一方面我們可以使用Firebug方便地查看、分析別人網站的源代碼,“偷”也是一種技能!
隨著移動互聯網熱潮的到來,移動開發越來越受到大家的追捧,響應式布局、微網站等需求量不斷增加,也是我們Web前端未來的發展方向之一,學有余力的同學可以多多關注。最后祝愿大家能在Web前端開發道路上走出一片更寬更廣的天地!