來源:互聯(lián)網(wǎng) 閱讀:-
你覺得JavaScript很難嗎?,你認(rèn)識(shí)的 JavaScript 只能用來操作DOM元素?增加網(wǎng)頁(yè)互動(dòng)性?還是用來寫一些超簡(jiǎn)單的小游戲來玩呢?NO!不要讓你的js只停留在DOM操作上,你應(yīng)該往下看看。
JavaScript作為全球每年穩(wěn)居前十的語言,2017年在GitHub盡然排到了第一,其受歡迎程度就無須多言了吧,行內(nèi)流行這么一句話:
任何可以用JavaScript來寫的應(yīng)用,最終都將會(huì)用JavaScript來寫。
確實(shí),JavaScript應(yīng)用之廣泛,語言之強(qiáng)大,在任何地方都有,真的無孔不入,如果你接觸過后端語言,你會(huì)發(fā)現(xiàn)后端的那些語言,什么Java、C/C++、Python、Ruby等等語言都可以編譯成JavaScript,在我們Web前端,那就不用說了,老大的地位一直沒人敢動(dòng),但很多小白就覺得JavaScript除了寫點(diǎn)交互效果平時(shí)也沒咋用???
說下面這些話,不是我有多么吹JavaScript,是應(yīng)為他確實(shí)很強(qiáng)大,只是你用的比較少而已。
除了我們平時(shí)在切頁(yè)面時(shí)候用它來寫交互效果以外,其實(shí)很多地方都用到了它,我剛工作那年,看見后端的那些老哥都會(huì)寫JavaScript,頁(yè)面啥的都會(huì)整,心里就想那招我來干啥啊,后來你切頁(yè)面的時(shí)候你會(huì)發(fā)現(xiàn)它們的CSS是真的爛,切出來的頁(yè)面簡(jiǎn)直沒法看,就純粹的實(shí)現(xiàn)功能和頁(yè)面顯示,那時(shí)候才明白了前端是干啥的,不錯(cuò),就是會(huì)設(shè)計(jì)的程序員。
后來當(dāng)自己學(xué)習(xí)JavaScript,期間掌握了一定的后端語言的基礎(chǔ)上,我才發(fā)現(xiàn)了JavaScript是真的狠,如今又有了NodeJs,更是風(fēng)聲水起,Node的出現(xiàn)打開了傳統(tǒng)后端與前端的連接大門,也翻新了固有的前端模式,讓那些JavaScript大神為所欲為,現(xiàn)在手下的“精兵悍將”越來越多,gulp、grunt、webpack,uni-app的相繼到來,更是如魚得水,堪比“五虎上將”,你說你現(xiàn)在不是劉備,如何作用西川,別說西川了,五虎都沒有,哈哈哈。還不學(xué)起來,程序員野心就要大。
框架之戰(zhàn)
除了我們前端用,這些方面也在用:
1、后端Nodejs
nodejs是一種用前端語言寫后端的解釋器,是一個(gè)JavaScript運(yùn)行環(huán)境,這就使JavaScript走向了服務(wù)端,如果你想當(dāng)熟練JavaScript,等你學(xué)完nodejs,差不多就是全棧工程師啦。nodejs是可以代替PHP或Java開發(fā)后端的中間件,也可以說是工具吧。
2、桌面應(yīng)用
像electron、nw.js、hex用的就是html/js/css/h5等開發(fā)的桌面程序,構(gòu)建跨平臺(tái)桌面應(yīng)用程序的一個(gè)開源庫(kù)。 Electron 通過將 Chromium 和 Node.js 合并到同一個(gè)運(yùn)行時(shí)環(huán)境中,并將其打包為 Mac,Windows 和 Linux 系統(tǒng)下的應(yīng)用來實(shí)現(xiàn)這一目的。由于體積大、調(diào)試繁瑣、成為不是很多人中理想應(yīng)用,但你想啊,Vue出來了,這些還是問題嗎?真的前端這幾年出的這些框架,語言,真的已經(jīng)奠定了大前端的趨勢(shì)。
3、移動(dòng)端應(yīng)用
像一些JavaScript移動(dòng)框架,如PhoneGap/Cordova、Titanium、jquery mobile、sencha Ext Js、recat Native、Msadqdeteor、nativeScript都是JavaScript移動(dòng)框架,為移動(dòng)設(shè)備選擇合適的JavaScript框架,為其開發(fā)降低成本,效率,豈不樂哉。
4、游戲
前幾天我在文章中寫到的three.js,利用它就可了開發(fā)微信小游戲,除了它,js本身就能些游戲,雖然不是什么大型的網(wǎng)游,Cocos Creator 游戲引擎可使用 JavaScript、TypeScript 編程語言為游戲提供組件腳本代碼,開發(fā)出的游戲可運(yùn)行在電腦瀏覽器、移動(dòng)瀏覽器、桌面應(yīng)用、移動(dòng)APP、微信等眾多平臺(tái)之上。
小結(jié):
JavaScript 長(zhǎng)久以來一直被限制在瀏覽器的沙箱中運(yùn)行, 它的能力取決于瀏覽器中間層提供的支持多少。 Node 將高性能的 V8 帶到了服務(wù)器端,使 JavaScript 也可以開發(fā)出實(shí)時(shí)高性能的服務(wù)器。
對(duì)于前端工程師而言,自己熟悉的 JavaScript 如今竟然可以在另一個(gè)地方大放異彩, 不談其他原因,僅僅因?yàn)楹闷?,也值得去關(guān)注和探究它。
前端往全棧方向發(fā)展,JavaScript語言的責(zé)任已經(jīng)越來越重了,那么深入它到底難不難。
很多時(shí)候,我們這行都講究個(gè)入門到精通,確實(shí),你不用說我們不管做啥都會(huì)有這么個(gè)過程。但是學(xué)js時(shí)你會(huì)發(fā)現(xiàn),基礎(chǔ)學(xué)完以后也就會(huì)寫特效,難一點(diǎn)的特效網(wǎng)上有很多插件,都已經(jīng)封裝好了,可以拿過來直接用。
這里我也整理了一些學(xué)習(xí)js相關(guān)的資源,大家可以去看一看。
我個(gè)人覺得js入門容易,精通卻太難了,平時(shí)項(xiàng)目中用到的地方也就寫頁(yè)面了,別的地方根本就用不到,但你熟練了,其他語言的學(xué)習(xí)中會(huì)很輕松的,你用它就會(huì)熟能生巧。嘎嘎嘎。。。
我身邊的前端程序員,js一般,就是謝謝簡(jiǎn)單的特效的時(shí)候用用,稍微復(fù)雜的效果根本寫不出來,搬不搬不過來,最后沒辦法,只能改特效,然后產(chǎn)品經(jīng)理去跟客戶溝通,導(dǎo)致客戶心里很抵觸,說我在國(guó)外的網(wǎng)站看見的,有啊你們寫不出來嗎?這。。。
一般JavaScript給人的感覺就是:
知識(shí)很抽象,太難搞,也就DOM操作還簡(jiǎn)單點(diǎn)。
1、內(nèi)容多,函數(shù)庫(kù)、對(duì)象庫(kù)一大堆。
2、閉包,內(nèi)置對(duì)象,作用域表示沒地方用,不用學(xué)。
例如:下列的閉包(能夠訪問另一個(gè)函數(shù)作用域的變量的函數(shù))
function outer() { var a = '變量1' var inner = function () { console.info(a) } return inner // inner 就是一個(gè)閉包函數(shù),因?yàn)樗軌蛟L問到outer函數(shù)的作用域}
3、混合多種編程思想,它里面不但牽涉面向過程編程思想,又有面向?qū)ο缶幊趟枷?,如果你學(xué)過別的后端語言,它會(huì)讓你對(duì)面向?qū)ο螽a(chǎn)生懷疑。。。
我接觸之前我已經(jīng)學(xué)了Java、.net,但對(duì)其都不是熟練使用,也就能進(jìn)行一些基礎(chǔ)開發(fā),后來學(xué)JavaScript的時(shí)候,腦子真的是一篇混亂,什么語言都能寫進(jìn)去,哈哈哈。但也苦逼的堅(jiān)持下來了,到目前從事前端工作。
1、一定要確定它的地位
準(zhǔn)確的說,如果以后想要在前端掙大錢,有深造,就一定要熟練地使用JavaScript,否則走不遠(yuǎn)??梢哉fJavaScript是整個(gè)前端的核心,如果不知道這,勸你還是別進(jìn)前端了,遲早會(huì)退出的。我相信你,既然選擇了,就會(huì)埋頭苦學(xué),無論前面有多難,這是無解的。
2、學(xué)習(xí)路線
再三叮囑,千萬不要停留在DOM操作,那只是基礎(chǔ),如果這樣,jquery更好,一定要有學(xué)習(xí)路線??纯次业膶W(xué)習(xí)路線:
a:基礎(chǔ):必須認(rèn)真過濾一遍,而且是手敲代碼,加同類型題目測(cè)試學(xué)習(xí),不要說一點(diǎn)代碼沒敲,就跟看書似的那么過來的,會(huì)被人鄙視的。
b:js面向過程編程思想,試著去寫一些簡(jiǎn)單點(diǎn)的功能,如:輪播、切換、多功能按鈕等,然后封裝各個(gè)函數(shù),像animate.css那樣去封裝。
d:js面向?qū)ο缶幊趟枷?,學(xué)會(huì)了封裝函數(shù),還要學(xué)會(huì)去封裝對(duì)象,像一些接口等等,這里就已經(jīng)很牛逼了。
e:再牛逼一點(diǎn),就可以寫出自己的開源項(xiàng)目啦,相信你。
3、構(gòu)建知識(shí)導(dǎo)圖
圖片太大,沒有放上去,有想要的,關(guān)注私信發(fā)你。
不積跬步,無以至千里;不積小流,無以成江海。騏驥一躍,不能十步;駑馬十駕,功在不舍。鍥而舍之,朽木不折;鍥而不舍,金石可鏤。蚓無爪牙之利,筋骨之強(qiáng),上食埃土,下飲黃泉,用心一也。蟹六跪而二螯,非蛇鱔之穴無可寄托者,用心躁也。
能堅(jiān)持下去本來就很難,學(xué)精更難,能把簡(jiǎn)單的做好就是不簡(jiǎn)單,你能走多遠(yuǎn),就看看平時(shí)有多努力,就像你能在前端能拿多少k,是跟你的JavaScript掌握多少是分不開的。
最后,接下來的文章里我會(huì)持續(xù)寫關(guān)于JavaScript的相關(guān)文章,感興趣的可以關(guān)注一下,跟我一起來學(xué)習(xí),謝謝關(guān)注。
推薦閱讀:小米滅蚊器