大部分人學(xué)習(xí)一項(xiàng)技術(shù)肯定是以就業(yè)為目標(biāo),那么學(xué)習(xí)web前端哪些知識(shí)才能找到一份工作?小蝸這里根據(jù)行業(yè)的變化以及企業(yè)的用人需求,整理了一份web前端的學(xué)習(xí)路線,只要掌握了以下內(nèi)容,找到一份工作基本不難。
*階段:專(zhuān)業(yè)核心基礎(chǔ)
階段目陸襲彎標(biāo):
1. 熟練掌握HTML5、CSS3、Less、Sass、響應(yīng)書(shū)布局、移動(dòng)端開(kāi)發(fā)。
2. 熟練運(yùn)用HTML+CSS特性完成頁(yè)面布局。
4. 熟練應(yīng)用CSS3技術(shù),動(dòng)畫(huà)、彈性盒模型設(shè)計(jì)。
5. 熟練完成移動(dòng)端頁(yè)面的設(shè)計(jì)。
6. 熟練運(yùn)用所學(xué)知識(shí)仿制任意Web網(wǎng)站。
7. 能綜合運(yùn)用所學(xué)知識(shí)完成網(wǎng)頁(yè)設(shè)計(jì)實(shí)戰(zhàn)。
知識(shí)點(diǎn):
1、Web前端開(kāi)發(fā)環(huán)境,HTML常用標(biāo)簽,表單元素,Table布局,CSS樣式表,DIV+CSS布局。熟練運(yùn)用HTML和CSS樣式屬性完成頁(yè)面的布局和美化,能夠仿制任意網(wǎng)站的前端頁(yè)面實(shí)現(xiàn)。
2、CSS3選擇器、偽類(lèi)、過(guò)渡、變換、動(dòng)畫(huà)、字體圖標(biāo)、彈性盒模型、響應(yīng)式布局、移動(dòng)端。熟練運(yùn)用CSS3來(lái)開(kāi)發(fā)網(wǎng)頁(yè)、熟練開(kāi)發(fā)移動(dòng)端,整理網(wǎng)頁(yè)開(kāi)發(fā)技巧。
3、預(yù)編譯css技術(shù):less、sass基礎(chǔ)知識(shí)、以及插件的運(yùn)用、BootStrap源碼分析。能夠熟練使用 less、sass完成項(xiàng)目開(kāi)發(fā),深入了解BootStrap。
4、使用HTML、CSS、LESS、SASS等技術(shù)完成網(wǎng)頁(yè)項(xiàng)目實(shí)戰(zhàn)。通過(guò)項(xiàng)目掌握*階段html、css的內(nèi)容、完成PC端頁(yè)面設(shè)計(jì)和移動(dòng)端頁(yè)面設(shè)計(jì)。
第二階段:Web后臺(tái)技術(shù)
階段目標(biāo):
1. 了解的發(fā)展歷史、掌握Node環(huán)境搭建及npm使用。
2. 熟練掌握的基本數(shù)據(jù)類(lèi)型和變量的概念。
3. 熟練掌握中的運(yùn)算符使用。
4. 深入理解分之結(jié)構(gòu)語(yǔ)句和循環(huán)語(yǔ)句。
5. 熟練使用數(shù)組來(lái)完成各種練習(xí)。
6.熟悉es6的語(yǔ)法、熟練掌握面向?qū)ο缶幊獭?/p>
7.DOM和BOM實(shí)戰(zhàn)練習(xí)和H5新特性和協(xié)議的學(xué)習(xí)。
知識(shí)點(diǎn):
1、軟件開(kāi)發(fā)流程、算法、變量、數(shù)據(jù)類(lèi)型、分之語(yǔ)句、循環(huán)語(yǔ)句、數(shù)組和函數(shù)。熟練運(yùn)用的知識(shí)完成各種練習(xí)。
2、面向?qū)ο蠡A(chǔ)、異常處理機(jī)制、常見(jiàn)對(duì)象api,js的兼容性、ES6新特性。熟練掌握面向?qū)ο蟮拈_(kāi)發(fā)以及掌握es6中的重要內(nèi)容。
3、BOM操作和DOM操作。熟練使用BOM的各種對(duì)象、熟練操作DOM的對(duì)象。
4、h5相關(guān)api、canvas、ajax、數(shù)據(jù)模擬、touch事件、mockjs。熟練使用所學(xué)知識(shí)來(lái)完成網(wǎng)站項(xiàng)目開(kāi)發(fā)。
第三階段:數(shù)據(jù)庫(kù)和框架實(shí)戰(zhàn)
階段目標(biāo):
1. 綜合運(yùn)用Web前端技術(shù)進(jìn)行頁(yè)面布局與美化。
2. 綜合運(yùn)用Web前端開(kāi)發(fā)框架進(jìn)行禪譽(yù)Web系統(tǒng)開(kāi)發(fā)。
3. 熟練掌握Mysql、Mongodb數(shù)據(jù)庫(kù)的發(fā)開(kāi)。
4. 熟練掌握vue.js、webpack、elementui等前端框技術(shù)。
5. 熟練運(yùn)用Node.js開(kāi)發(fā)后臺(tái)應(yīng)用程序。
6. 對(duì)Restful,Ajax,JSON,開(kāi)發(fā)過(guò)程有深入的理解,掌握git的基本技能。
知識(shí)點(diǎn):
1、數(shù)據(jù)庫(kù)知識(shí),范式,MySQL配置,命令,建庫(kù)建表,數(shù)據(jù)的增刪改查,mongodb數(shù)據(jù)庫(kù)。深入理解數(shù)據(jù)庫(kù)管理系統(tǒng)通用知識(shí)及MySQL數(shù)據(jù)庫(kù)的使用與管理,為Node.js后臺(tái)開(kāi)發(fā)打下堅(jiān)實(shí)基礎(chǔ)。
2、模塊系統(tǒng),函數(shù),路由,全局對(duì)象,文件系統(tǒng),請(qǐng)求處理,Web模塊,Express框架,MySQL數(shù)據(jù)庫(kù)處理,,文件上傳等。熟練運(yùn)用Node.js運(yùn)行環(huán)境和后臺(tái)開(kāi)發(fā)框架完成Web系統(tǒng)的后臺(tái)開(kāi)發(fā)。
3、vue的組件、生命周期、路由、組件、前端工程化、webpack、elementui框架。Vue.js框架的基本使用有清晰的理解,能夠運(yùn)用Vue.js完成基礎(chǔ)前端開(kāi)發(fā)、熟練運(yùn)用Vue.js框架的高級(jí)功能完成Web前端開(kāi)發(fā)和組件開(kāi)發(fā),對(duì)MVVM模式有深刻理解。
4、需求分析,數(shù)據(jù)庫(kù)設(shè)計(jì),后臺(tái)開(kāi)發(fā),使用vue、node完成pc和移動(dòng)端整站開(kāi)發(fā)。于Node.js+Vue.js+Webpack+Mysql+Mongodb+Git,實(shí)現(xiàn)整站項(xiàng)目完整功能并上線發(fā)布。
第四階段:移動(dòng)端和微信實(shí)戰(zhàn)
階段目標(biāo):
1.熟練掌握React.js框架,熟練使用React.js完成開(kāi)發(fā)。
2.掌握移動(dòng)端開(kāi)發(fā)原理,理解原生開(kāi)發(fā)和混早悶合開(kāi)發(fā)。
3.熟練使用react-native和Flutter框架完成移動(dòng)端開(kāi)發(fā)。
4.掌握微信小程序以及了解支付寶小程序的開(kāi)發(fā)。
5.完成大型電商項(xiàng)目開(kāi)發(fā)。
知識(shí)點(diǎn):
1、React面向組件編程、表單數(shù)據(jù)、組件通信、監(jiān)聽(tīng)、聲明周期、路由、Redux基本概念。練使用react完成項(xiàng)目開(kāi)發(fā)、掌握Redux中的異步解決方案Saga。
2、react-native、開(kāi)發(fā)工具、視圖與渲染、api操作、Flutter環(huán)境搭建、路由、ListView組件、網(wǎng)絡(luò)請(qǐng)求、打包。練掌握react-native和Flutter框架,并分別使用react-native和Flutter分別能開(kāi)發(fā)移動(dòng)端項(xiàng)目。
3、微信小程序基本介紹、開(kāi)發(fā)工具、視圖與渲染、api操作、支付寶小程序的入門(mén)和api學(xué)習(xí)。掌握微信小程序開(kāi)發(fā)了解支付寶小程序。
4、大型購(gòu)物網(wǎng)站實(shí)戰(zhàn),整個(gè)項(xiàng)目前后端分離開(kāi)發(fā);整個(gè)項(xiàng)目分為四部分:PC端網(wǎng)頁(yè)、移動(dòng)端APP、小程序、后臺(tái)管理。團(tuán)隊(duì)協(xié)作開(kāi)發(fā),使用git進(jìn)行版本控制。目期間可以擴(kuò)展Three.js 、。
web前端學(xué)習(xí)路線思維導(dǎo)圖
推薦一個(gè)前端開(kāi)發(fā)者的常用工具列表:
1. lodash:一個(gè)一致性、模塊化、高性能的 實(shí)用工具庫(kù)。
2.?ramda:一個(gè)很重要的庫(kù),提供了許多有用的方法,每個(gè) 程序員都應(yīng)該掌握這個(gè)工具。
3.?dayjs:一個(gè)輕量的處理時(shí)間和日期的 庫(kù),js工具類(lèi)和 Moment js的AP設(shè)計(jì)保持完全一樣,體積 只有2kb。
4.?big.js:一個(gè)小型,快速的 庫(kù),用于任意精度 的十進(jìn)制算術(shù)運(yùn)算。
5.?qs:一個(gè)url參數(shù)轉(zhuǎn)化 (parse和stringify)的輕量級(jí)js 庫(kù)。
6.?three.js:基于webgl的開(kāi)源3D框架,對(duì)webgl進(jìn)行封裝,需要專(zhuān)業(yè)的3D開(kāi)發(fā)知識(shí)。
7.?thingjs: 一款新興的3D框架,封裝物聯(lián)網(wǎng)3D開(kāi)發(fā)概念(建筑、樓層等),僅要求初級(jí)js基礎(chǔ)。
常見(jiàn)的技術(shù)社區(qū),都會(huì)有【大前端】學(xué)習(xí)資源和社區(qū)討論,推薦、博客園、開(kāi)源*、思否、CSDN、V2ex、騰訊云、阿里云攔返猛、、掘金、ITPUB,總有合適你的學(xué)習(xí)氛圍。
如果有一定的美術(shù)能力,3D可視化是不錯(cuò)的發(fā)展方向!審美在線,又有開(kāi)發(fā)基礎(chǔ)的話,轉(zhuǎn)行3D開(kāi)發(fā)師不用愁。我所處的物聯(lián)網(wǎng)3D可視化領(lǐng)域,這個(gè)職業(yè)很有前景哦~thingjs官網(wǎng)-資源簡(jiǎn)橋中心提供視頻教程、demo案例、下載插件和3D模型,好好實(shí)操一下,初學(xué)者有破了一周開(kāi)發(fā)3D項(xiàng)世消目的記錄!
ThingJS教程(2021版)
ThingJS教程(2021版)
教程
教程
ThingJS行業(yè)案例
看一下模型效果杠杠滴!
web前端開(kāi)發(fā)都學(xué)什么?web前端開(kāi)發(fā)容易學(xué)么?
作為初學(xué)者或者零基礎(chǔ)的你,上面兩個(gè)問(wèn)題讓悶肯定都會(huì)在你腦海里產(chǎn)生疑問(wèn),昌平北大青鳥(niǎo)給你揭開(kāi)答案。
WEB前端開(kāi)發(fā)都學(xué)什么?
其實(shí)WEB前端開(kāi)發(fā)是從網(wǎng)頁(yè)制作演變而來(lái)的,WEB前端開(kāi)發(fā)工程師(或者說(shuō)“網(wǎng)頁(yè)制作”、“網(wǎng)頁(yè)制作工程師”、“前端制作工程師”、“網(wǎng)站重構(gòu)工程師”),這樣的一個(gè)職位的主要職責(zé)是與交互設(shè)計(jì)師、視覺(jué)設(shè)計(jì)師協(xié)作,根據(jù)設(shè)計(jì)圖用HTML和CSS完成頁(yè)面制作。
同時(shí),在此基礎(chǔ)之上,對(duì)完成的頁(yè)面進(jìn)行維護(hù)和對(duì)網(wǎng)站前端性能做相應(yīng)的優(yōu)化。而且現(xiàn)在前端開(kāi)發(fā)越來(lái)越多的得到公司的重視,沒(méi)有好的WEB前端,再?gòu)?qiáng)大的后端技術(shù)也無(wú)法完美的呈現(xiàn)在人們面前。
在以前可能大部分的人都沒(méi)有聽(tīng)過(guò)什么WEB前端,最多的就是網(wǎng)頁(yè)設(shè)計(jì)或者語(yǔ)言開(kāi)發(fā)。隨著互聯(lián)網(wǎng)的發(fā)展,WEB前端越來(lái)越被重視,同樣的薪資待遇也是,所以很多人想去學(xué)習(xí)WEB前端開(kāi)發(fā)。
那究竟WEB前端開(kāi)發(fā)都學(xué)什么?
一般來(lái)講WEB前端工程師培訓(xùn)機(jī)構(gòu)都是階段性的進(jìn)行教學(xué)的,主要的前端開(kāi)發(fā)課程所涉及的軟件有HTML,CSS,;HTML是內(nèi)容,CSS是表現(xiàn),是行為。
第1階段:舉正從零基礎(chǔ)到PC端整站頁(yè)面開(kāi)發(fā)(HTML/CSS全學(xué)習(xí)+JS初級(jí))行業(yè)入門(mén)與DW軟件介紹、DIV+CSS樣式及網(wǎng)頁(yè)布局、HTML超文本標(biāo)記語(yǔ)言與頁(yè)面實(shí)戰(zhàn)、CSS樣式與頁(yè)面實(shí)戰(zhàn)、DIV+CSS盒模型與HTML/CSS實(shí)戰(zhàn)、元素顯示類(lèi)型與浮動(dòng)CSS浮動(dòng)、CSS定位、瀏覽器兼容、初級(jí),北大青鳥(niǎo)Html、CSS、免費(fèi)課程搶報(bào)鏈接見(jiàn)閱讀原文。
第2階段:適配于IOS/Android移動(dòng)端整站開(kāi)發(fā)、(HTML5/CSS全進(jìn)階+JS中級(jí))、中級(jí)、HTML5初級(jí)(HTML5基本標(biāo)簽,HTML5新增標(biāo)簽,canvas標(biāo)簽的使用,canvas動(dòng)畫(huà)案例)、CSS3初級(jí)(CSS3樣式基礎(chǔ),CSS3盒模型,CSS3新增UI樣式,移動(dòng)端網(wǎng)站案例制作);
第3階段:微信端微場(chǎng)景HTML5動(dòng)態(tài)頁(yè)面制作(HTML5/CSS高階+JS高級(jí))、高級(jí)(運(yùn)動(dòng)框架)、高級(jí)(時(shí)間版運(yùn)動(dòng))、HTML5/CSS3高級(jí)應(yīng)用(HTML5中canvas庫(kù).1.5.18.min應(yīng)用,HTML5音視頻講解,入場(chǎng),動(dòng)畫(huà)的原理和制作,手機(jī)引導(dǎo)頁(yè)動(dòng)畫(huà)案例)、HTML5+CSS3高級(jí)應(yīng)用與移動(dòng)端案例實(shí)操;
第4階正滑悔段:響應(yīng)式個(gè)人網(wǎng)站開(kāi)發(fā)(前端工程師高級(jí)進(jìn)階與框架應(yīng)用)
web前端開(kāi)發(fā)工程師簡(jiǎn)介
Web前端一直是占有重要的地位。尤其是近年來(lái)HTML5技術(shù)的突飛猛進(jìn),使Web前端技術(shù)有了更好的發(fā)展。Web前端開(kāi)發(fā)人員的薪資也是一路猛漲。下面我們一起了解一些web前端開(kāi)發(fā)工程師簡(jiǎn)介,歡迎大家參考!
Web前端和后端的差異
職能上的差異
首先,我們要分清Web designer(網(wǎng)頁(yè)設(shè)計(jì)師)和Web developer(網(wǎng)頁(yè)開(kāi)發(fā)者,也稱(chēng)程序員)的差異。兩者之間的差異主要表現(xiàn)在:一個(gè)是有關(guān)網(wǎng)站的視覺(jué)或美學(xué)方面,被稱(chēng)為“前端”;另一個(gè)則是看不見(jiàn)的編碼方面的設(shè)計(jì),被稱(chēng)為“后端”。簡(jiǎn)而言之,漂亮的網(wǎng)站界面都是出自網(wǎng)頁(yè)設(shè)計(jì)師之手,而牛逼強(qiáng)大的功能則是網(wǎng)頁(yè)開(kāi)發(fā)者的杰作。
除了職能上的差異之外,兩者還有其他許多差異。國(guó)外設(shè)計(jì)網(wǎng)站Downgraf特意制作了一張圖表來(lái)展示——網(wǎng)頁(yè)設(shè)計(jì)師和網(wǎng)頁(yè)開(kāi)發(fā)者(程序員)都留胡茬,一個(gè)沒(méi)錢(qián),一個(gè)沒(méi)時(shí)間;兩者都喜歡內(nèi)涵T恤,一個(gè)走字體設(shè)計(jì)路線,一個(gè)走代碼風(fēng);兩者都配自家設(shè)備,一個(gè)必帶MacBook Pro,一個(gè)只挑小鍵盤(pán)??除了以上種種差異,他們還有一個(gè)共同點(diǎn):害怕MM,看來(lái)都是“宅”惹的禍。
技術(shù)上的差異
我們?cè)購(gòu)募夹g(shù)的方面,瞧瞧在實(shí)際的招聘中,各大企業(yè)要求前端人員與后端人員分別具備怎樣的能力。
Web前端:
1. 精通HTML,能夠書(shū)寫(xiě)語(yǔ)義合理,結(jié)構(gòu)清晰,易維護(hù)的HTML結(jié)構(gòu)。
2. 精通CSS,能夠還原視覺(jué)設(shè)計(jì),并兼容業(yè)界承認(rèn)的主流瀏覽器宏團(tuán)饑。
3. 熟悉,了解基礎(chǔ)內(nèi)容,掌握1~2種js框架,如JQuery。
4. 對(duì)常見(jiàn)的瀏覽器兼容問(wèn)題有清晰的理解,并有可靠的解決方案。
5. 對(duì)性能有一定的要求,了解yahoo的性能優(yōu)化建議,并可以在項(xiàng)目中有效實(shí)施。
Web后端:
1. 精通jsp,servlet,java bean,JMS,EJB,Jdbc,F(xiàn)lex開(kāi)發(fā),或者對(duì)相或肢關(guān)的工具、類(lèi)庫(kù)以及框架非常熟蔽返悉,如Velocity,Spring,Hibernate,iBatis,OSGI等,對(duì)Web開(kāi)發(fā)的模式有較深的理解。
2. 熟練使用oracle、sqlserver、mysql等常用的數(shù)據(jù)庫(kù)系統(tǒng),對(duì)數(shù)據(jù)庫(kù)有較強(qiáng)的設(shè)計(jì)能力。
3. 熟悉maven項(xiàng)目配置管理工具,熟悉tomcat、jboss等應(yīng)用服務(wù)器,同時(shí)對(duì)在高并發(fā)處理情況下的負(fù)載調(diào)優(yōu)有相關(guān)經(jīng)驗(yàn)者優(yōu)先考慮。
4. 精通面向?qū)ο蠓治龊驮O(shè)計(jì)技術(shù),包括設(shè)計(jì)模式、UML建模等。
5. 熟悉網(wǎng)絡(luò)編程,具有設(shè)計(jì)和開(kāi)發(fā)對(duì)外API接口經(jīng)驗(yàn)和能力,同時(shí)具備跨平臺(tái)的API規(guī)范設(shè)計(jì)以及API高效調(diào)用設(shè)計(jì)能力。
總而言之,兩者的差異在于
職能上,前端主要負(fù)責(zé)界面的設(shè)計(jì);后端主要是制作界面后的功能。
形象上,前端注重形式、美觀;后端注重功能、實(shí)用性(為此,我還特地去了喬布堂的研發(fā)部做了實(shí)地考察,發(fā)現(xiàn)我們的前端工程師買(mǎi)了2臺(tái)Macbook,而后端工程師買(mǎi)了2個(gè)鍵盤(pán)。驚人的符合!)
企業(yè)招聘中,前端工程師需要精通JS,能熟練應(yīng)用JQuery,懂CSS,能熟練運(yùn)用這些知識(shí),進(jìn)行交互效果的開(kāi)發(fā);后端開(kāi)發(fā)人員需要會(huì)寫(xiě)Java代碼,會(huì)寫(xiě)SQL語(yǔ)句,能做簡(jiǎn)單的數(shù)據(jù)庫(kù)設(shè)計(jì),會(huì)Spring和iBatis,懂一些設(shè)計(jì)模式等。
不論是前端還是后端,都屬于軟件開(kāi)發(fā)的范疇。因此在寫(xiě)簡(jiǎn)歷時(shí)可以參考 《軟件開(kāi)發(fā)工程師》 ,對(duì)童鞋們可是很有幫助的喲!
要成為一名高效的Web開(kāi)發(fā)者,需要做很多工作,來(lái)提高工作方式并改善勞動(dòng)成果。而在開(kāi)發(fā)中難免會(huì)遇到一些困難。那么,前端與后端分別面臨的挑戰(zhàn)主要有哪些呢?來(lái)和我一起看一看吧!
Web前端開(kāi)發(fā)面臨的挑戰(zhàn)
前端開(kāi)發(fā)的挑戰(zhàn)
*大挑戰(zhàn):兼容性
瀏覽器種類(lèi)非常多,IE、Firefox、Chrome、Opera、還有眾多的IE加殼瀏覽器,類(lèi)似搜狗、傲游、360,再加上這些瀏覽器的移動(dòng)終端版本。需要有Web標(biāo)準(zhǔn),前端的知識(shí)大部分通用于各個(gè)瀏覽器,但還是會(huì)有歷史遺留問(wèn)題,不同版本的瀏覽器有不同的問(wèn)題。特別是市場(chǎng)占有率*的IE系,雖然IE 9/10看起來(lái)相當(dāng)標(biāo)準(zhǔn),但向之前版本間各有各的問(wèn)題,向前兼容非常頭疼。如果不積累點(diǎn)經(jīng)驗(yàn),面對(duì)疑難雜癥那是一頭霧水。
第二大挑戰(zhàn):交互的復(fù)雜度
CSS和DOM提供的接口水平過(guò)低,而B(niǎo)OM提供的控件只有input、select、textarea這幾種最基本的,稍復(fù)雜一點(diǎn)的UI效果,都要前端自己利用CSS和DOM去組合創(chuàng)造。看到一個(gè)需求,腦子里*步要想如何利用CSS、DOM這些基本的零件組合成最終的效果,實(shí)現(xiàn)最終效果其實(shí)是一個(gè)“創(chuàng)造”的過(guò)程,比如說(shuō)tabView,treeView,,這種看起來(lái)常見(jiàn)的組件,其實(shí)在前端里都是沒(méi)有現(xiàn)成可用的,需要自己去實(shí)現(xiàn)。
前端語(yǔ)言的 膠水性需求 太強(qiáng)。CSS、DOM、JS是三種不同的技術(shù),這也是前端知識(shí)系統(tǒng)中要掌握的最重要的三個(gè)基本功。前端的效果是通過(guò)CSS、DOM、JS三者配合起來(lái)最終呈現(xiàn)出來(lái)的,脫了任何一個(gè)技術(shù)都寸步難行,時(shí)刻要同時(shí)考慮多個(gè)方向的知識(shí)點(diǎn)。前端編程像是開(kāi)了三個(gè)線程同時(shí)在跑,復(fù)雜度成倍增長(zhǎng)。
第三大挑戰(zhàn):代碼可維護(hù)性
復(fù)雜度的提升直接影響代碼的維護(hù)性。CSS+DOM+JS的組合實(shí)在太強(qiáng)大了,同一個(gè)效果可以有多種完全不同的實(shí)現(xiàn)方式,每一種實(shí)現(xiàn)方式都會(huì)有不同的開(kāi)發(fā)難度、擴(kuò)展性、可維護(hù)性。解決方案太多,看到一個(gè)效果首先會(huì)先想到如何用CSS和DOM里那些low level的接口實(shí)現(xiàn),這是一個(gè)“創(chuàng)造”的過(guò)程,這時(shí)腦子里可能冒出好多種不同的實(shí)現(xiàn)方法,“創(chuàng)造”完了之后還要“比較”,權(quán)衡各種解決方案的優(yōu)劣,糾結(jié)一陣之后,才能選出最適合的方案。當(dāng)然,并非前端都是完美主義,一定要選一個(gè)*的方式出來(lái),而是因?yàn)榍岸耸荊UI編程,直接面向用戶,是最直接的產(chǎn)品呈現(xiàn)的'部分,是門(mén)面。正因?yàn)槿绱?,前端也是最容易被反?fù)修改的部分。反復(fù)“修改”有多可怕,是個(gè)程序員都懂的,如果可維護(hù)性不好,那簡(jiǎn)直是惡夢(mèng)。所以前端不得不重視可維護(hù)性,不重視可維護(hù)性直接等于自虐。
第四大挑戰(zhàn):性能
第挑戰(zhàn):個(gè)人成長(zhǎng)
開(kāi)發(fā)者的思路很重要
前端的開(kāi)發(fā),如果沒(méi)有總體的設(shè)計(jì)思路,會(huì)成為一種碎片似地程序,一個(gè)效果一堆代碼,一個(gè)功能一灘腳本,一個(gè)需求片邏輯。曾經(jīng)遇到過(guò),因?yàn)閡e調(diào)整,把整個(gè)前端的代碼除了核心數(shù)據(jù)處理函數(shù)保留,其余的全部修改的情況?;旧锨岸说拈_(kāi)發(fā),處于DOM操作,數(shù)據(jù)處理,數(shù)據(jù)交互三部分,如果合理的分配這三部分的功能,那么前端的代碼就很容易擴(kuò)展和調(diào)整。
真正的前端開(kāi)發(fā)挑戰(zhàn),還在于開(kāi)發(fā)者的思路。兼容性,布局,CSS和JS都不是問(wèn)題,問(wèn)題在于如何合理地組織語(yǔ)言邏輯;如何正確抽象出需求中的模塊;如何用代碼處理,清楚地用代碼表達(dá)出思路、寫(xiě)好注釋?zhuān)o后續(xù)維護(hù)者一個(gè)可閱讀的思路。前端的改動(dòng)量,是后端的數(shù)倍,前端沒(méi)有絕對(duì),只有跟隨需求不停的修改。
Web后端開(kāi)發(fā)面臨的挑戰(zhàn)
后端開(kāi)發(fā)的挑戰(zhàn)
*大挑戰(zhàn),后端開(kāi)發(fā)最重要的挑戰(zhàn),來(lái)自于規(guī)模
規(guī)模的擴(kuò)大,比如訪問(wèn)量擴(kuò)大,文件存儲(chǔ)量擴(kuò)大,數(shù)據(jù)量擴(kuò)大,服務(wù)器數(shù)量擴(kuò)大等。一個(gè)前端看起來(lái)一模一樣的網(wǎng)站,某一種指標(biāo)如果擴(kuò)大十倍,幾乎都會(huì)面臨一大堆的問(wèn)題和挑戰(zhàn)。另一方面,在規(guī)模擴(kuò)大以后,后端系統(tǒng)架構(gòu),一定會(huì)復(fù)雜化。原來(lái)只有一臺(tái)Server,LAMP都裝在一起。然后數(shù)據(jù)庫(kù)分出來(lái),反向代理,負(fù)載均衡,分庫(kù)分表,Memcache,Message Queue,事務(wù)處理,CDN,NOSQL,種種架構(gòu),Server,就逐漸的演化出來(lái)了。架構(gòu)的復(fù)雜化,自然會(huì)帶來(lái)更多的問(wèn)題和更多的挑戰(zhàn)。
第二大挑戰(zhàn),來(lái)自于安全
安全問(wèn)題層出不窮,防不勝防。需要技術(shù)手段,也需要管理制度。
第三大挑戰(zhàn),來(lái)自于效率
能否提供足夠的處理速度,能否提供足夠的帶寬,能否保證響應(yīng)能力,這些是對(duì)外的效率。能否使用更少的服務(wù)器,能否使用更加便宜的服務(wù)器,能否使用更加節(jié)省能源的服務(wù)器,這些是對(duì)內(nèi)的效率。
第四大挑戰(zhàn),來(lái)自于需求變更
無(wú)論前端后端,都會(huì)面臨需求變更,只要是軟件開(kāi)發(fā),這都是大挑戰(zhàn)。但是當(dāng)一個(gè)系統(tǒng)已經(jīng)穩(wěn)定的,高效的運(yùn)行時(shí),需求變更來(lái)了,在滿足需求之后,原本來(lái)沒(méi)有問(wèn)題的部分,會(huì)不會(huì)突然崩潰,一旦崩潰,就是后端工程師的噩夢(mèng)。
第挑戰(zhàn),來(lái)自于教條
這個(gè)世界上有無(wú)數(shù)IT大公司,他們都很開(kāi)放,都愿意分享自己的架構(gòu)與技術(shù)。于是,對(duì)于“眼界開(kāi)闊”的后端工程師而言,困難不在于如何解決,而在于如何從眾多的解決方案中做出挑選??蚣堋?shí)踐不斷涌現(xiàn),成功案例也不斷涌現(xiàn)。人家都用得好好的,你敢用嗎?到底是勇于嘗鮮,還是保守要緊呢?這個(gè)很難。
后端開(kāi)發(fā)的三大法則
Design for failure
后端相當(dāng)比例的代碼不是為了一般情況下正確而存在,而是為了保證特殊或者極端情況下系統(tǒng)可接受的響應(yīng)而存在的。這里有非常多的折衷要做:漸進(jìn)改進(jìn)還是超前設(shè)計(jì)?水平擴(kuò)展、業(yè)務(wù)優(yōu)化、前臺(tái)還是后臺(tái)處理?大量的折衷都是要根據(jù)不斷變化的環(huán)境和需求去權(quán)衡的,所以很容易犯錯(cuò)。
is about abstract
為什么要抽象?因?yàn)槌橄蟮母拍钣懈玫倪m應(yīng)性,更易于復(fù)用,更能靈活適應(yīng)變化。但是抽象是很難的,不恰當(dāng)?shù)某橄蟾琴O害無(wú)窮,要命的是,這些并沒(méi)有很好的方法論,多數(shù)是依靠一組基本的原理,憑經(jīng)驗(yàn)作出的。而Web后端開(kāi)發(fā)在很長(zhǎng)時(shí)間里并沒(méi)有很重視這些,很多網(wǎng)站都是粗放型設(shè)計(jì)和開(kāi)發(fā)出來(lái)的,所以補(bǔ)丁疊補(bǔ)丁的結(jié)構(gòu)就順理成章的成為了主流。
is product
為架構(gòu)本身即產(chǎn)品,一個(gè)軟件產(chǎn)品包含了不同的視角,其中最重要的包括用戶看到的視角、以及軟件骨架即架構(gòu)的視角。但產(chǎn)品就是產(chǎn)品,所有這些視角都是必須統(tǒng)一和一致的,這就要求架構(gòu)必須理解產(chǎn)品的靈魂,而產(chǎn)品要理解架構(gòu)的困難所在,否則很容易出現(xiàn)想做的事情做不到或者以巨大的架構(gòu)代價(jià)實(shí)現(xiàn)一個(gè)邊角功能這類(lèi)悲劇。
;只要一個(gè)電話
我們免費(fèi)為您回電