大家好 最近做項(xiàng)目每天都會(huì)冒出來一些類似的問題困擾著我,還請(qǐng)前輩給答疑解惑一下,指明方向
我們公司不大(很小,我兼職設(shè)計(jì)ps AI、ui、做PPT和各種),就我一個(gè)前端(我沒用框架,也沒太多連續(xù)時(shí)間學(xué)習(xí),就用jquery)和一個(gè)后端(TP框架,有時(shí)候一些js是后臺(tái)寫),我們的開發(fā)模式也就是我寫頁(yè)面和基本的js交互,然后把頁(yè)面交給PHP,頁(yè)面里面有很多PHP代碼,我看著都很亂,還有點(diǎn)不太會(huì)(說是PHP不難,我也想學(xué),可偶爾一個(gè)挺復(fù)雜點(diǎn)的JS效果就讓我頭疼了,精疲力盡啊)
現(xiàn)在每天我都想改進(jìn)和讓我焦慮的事情如下:
1,我們的工作模式現(xiàn)在在別的公司(也不大那種吧)算是常見嗎,作為前端我是不是做的太少了
2,如果前后端分離的話,前端就只能從ajax獲取后臺(tái)數(shù)據(jù)?然后加載到dom嗎?有其他獲取的方式嗎
3,如果頁(yè)面很多模塊比如好多下拉 還有表格,那么ajax要多次單獨(dú)傳輸還是一次傳輸過來?如果一次要怎么把數(shù)據(jù)(json)分布給這些組件呢(有條件的前輩復(fù)制個(gè)簡(jiǎn)單demo給看看行嗎)
4,以上憂慮來自于,項(xiàng)目數(shù)據(jù)很多,然后我對(duì)前后端交接處又 云里霧里,ajax基本是后端寫,導(dǎo)致我非常被動(dòng),對(duì)項(xiàng)目整體把握沒那么好,感覺后端貌似更容易吞噬前端,我想改變這種局面(有一次聽后端竟然說項(xiàng)目是他一個(gè)人做的<說是開玩笑,但是對(duì)我打擊很大>,我ri了)
5,我現(xiàn)在要從哪里開始做起,要如何慢慢改變這種已經(jīng)適應(yīng)了一年的模式,讓后端也能接受(貌似他的ajax也是基礎(chǔ)層面,難一些的也就不行了,我們項(xiàng)目要求不是很高,也沒有人說過啥,但我想讓前端表現(xiàn)的更好)
我以前學(xué)過PHP(比較淺那種),特別想深入學(xué)習(xí)一下,這樣只有自己實(shí)踐了才會(huì)明白其中的原理,因?yàn)楦杏X跟這個(gè)后端配合,我進(jìn)步不大,很被動(dòng),他習(xí)慣了只做他懂了,不會(huì)的就繞道了,所有他隨便搞,只要搞出來就行,我要從哪里插手?
5,這些問題我也查了挺多,不過我感覺都不如自己完整的表達(dá)出來我的想法
1,我們的工作模式現(xiàn)在在別的公司(也不大那種吧)算是常見嗎,作為前端我是不是做的太少了
這種工作模式在小公司很常見的,尤其是某些做傳統(tǒng)軟件的公司,我也待過四五家公司了,待過小公司,待過大公司,對(duì)你的這種情況還是有點(diǎn)了解的。
小公司嗎,資金有限,用人成本在那里,恨不得招一個(gè)人來什么都會(huì),也就不難理解讓你一個(gè)做前端的兼職設(shè)計(jì)ps AI等等(和我以前待的一個(gè)公司一樣,前端還要兼職做ui設(shè)計(jì))。
作為前端的你做的太雜了,你目前的狀態(tài)應(yīng)該是技術(shù)的深度更加重要,而不是廣度。PS AI,UI等應(yīng)該有專門的人去負(fù)責(zé)。
2,如果前后端分離的話,前端就只能從ajax獲取后臺(tái)數(shù)據(jù)?然后加載到dom嗎?有其他獲取的方式嗎
我是做后端的,前端的經(jīng)驗(yàn)不多。我個(gè)人認(rèn)為用的最多的應(yīng)該ajax調(diào)用后臺(tái)的接口獲取數(shù)據(jù),當(dāng)然也有其他獲取后臺(tái)數(shù)據(jù)的方式,比如后端主動(dòng)將數(shù)據(jù)推送到前端。
不要小瞧從ajax獲取后臺(tái)數(shù)據(jù),然后加載到dom這個(gè)過程,很多前端框架把這個(gè)過程玩成了花。
3,如果頁(yè)面很多模塊比如好多下拉 還有表格,那么ajax要多次單獨(dú)傳輸還是一次傳輸過來?如果一次要怎么把數(shù)據(jù)(json)分布給這些組件呢(有條件的前輩復(fù)制個(gè)簡(jiǎn)單demo給看看行嗎)
好多模塊需要的數(shù)據(jù)量很少,可以把這些模塊需要的數(shù)據(jù)后臺(tái)合并下,一次ajax就可以獲取。當(dāng)是對(duì)于有些模塊需要的數(shù)據(jù)量很大,這個(gè)時(shí)候最好按需加載,即用的時(shí)候ajax請(qǐng)求后臺(tái)獲取下。
4,以上憂慮來自于,項(xiàng)目數(shù)據(jù)很多,然后我對(duì)前后端交接處又 云里霧里,ajax基本是后端寫,導(dǎo)致我非常被動(dòng),對(duì)項(xiàng)目整體把握沒那么好,感覺后端貌似更容易吞噬前端,我想改變這種局面(有一次聽后端竟然說項(xiàng)目是他一個(gè)人做的<說是開玩笑,但是對(duì)我打擊很大>,我ri了)
主要還是你公司的問題,分工不明確。就你一個(gè)前端,后端不負(fù)責(zé)些前端的工作,項(xiàng)目什么時(shí)候能完成呀。
規(guī)范的公司會(huì)分工明確,會(huì)在項(xiàng)目前期確定好前后端怎么交互,并落實(shí)到文檔,前端參考文檔,有問題及時(shí)溝通即可。
5,我現(xiàn)在要從哪里開始做起,要如何慢慢改變這種已經(jīng)適應(yīng)了一年的模式,讓后端也能接受(貌似他的ajax也是基礎(chǔ)層面,難一些的也就不行了,我們項(xiàng)目要求不是很高,也沒有人說過啥,但我想讓前端表現(xiàn)的更好)
我以前學(xué)過PHP(比較淺那種),特別想深入學(xué)習(xí)一下,這樣只有自己實(shí)踐了才會(huì)明白其中的原理,因?yàn)楦杏X跟這個(gè)后端配合,我進(jìn)步不大,很被動(dòng),他習(xí)慣了只做他懂了,不會(huì)的就繞道了,所有他隨便搞,只要搞出來就行,我要從哪里插手?
既然做前端了,那就堅(jiān)持下去。換來?yè)Q去,可能最后什么都只是會(huì)一點(diǎn)。你以為身邊的牛人天生就牛嗎,不是的,最重要的是別人比你花的時(shí)間多,比你勤奮,你晚上回去打游戲,別人在學(xué)習(xí),你周末去玩,別人在學(xué)習(xí),
你和女朋友你儂我儂,別人在學(xué)習(xí)。
換一家公司吧,不一定非要去大公司,很多小的公司技術(shù)也很規(guī)范的,技術(shù)氛圍也很好,小而美。
1:基礎(chǔ)(html/css/javascript/json等等一堆)一定要打扎實(shí)了。
2:大公司招聘前端的時(shí)候,都會(huì)列出一些技術(shù)要求,什么什么框架呀,你可以看看那些技術(shù)你是否掌握了。
3:經(jīng)驗(yàn)和解決問題的能力在工作中汲取,邊做邊學(xué),多思考,多做筆記。
4:肯花時(shí)間。
1 你們得后端太懶, 不想被改變, 你得試著甩掉他, 根據(jù)你的描述被后端說成是他一個(gè)人做得他有70%得自信敢說這話, 因?yàn)槟阍陧?xiàng)目中的作用僅僅是寫靜態(tài)頁(yè)面, 而且這個(gè)靜態(tài)頁(yè)面還要給后端去寫 php 代碼嵌套數(shù)據(jù), 他敢說項(xiàng)目是他做的是因?yàn)樗理?xiàng)目從前端到后端是怎么運(yùn)行的, 這一點(diǎn)你很吃虧
2 前后端分離,對(duì)前端得要求比較多了, 比如這整個(gè)項(xiàng)目你可以脫離后端提供得數(shù)據(jù)只依賴 mock.js 這樣得假數(shù)據(jù)接口就能從頭跑到尾, 前后端得配合就是協(xié)商好這些數(shù)據(jù)的格式是什么樣, 怎么通信 ajax 或者 websocket , 根據(jù)你目前得情況你可以讓你后端渲染頁(yè)面時(shí)只把數(shù)據(jù)賦值到變量里面, 你再用這些變量去實(shí)現(xiàn)效果,比如:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<script>
// 由 php 渲染整個(gè)頁(yè)面并賦值
var data = "<?= $data ?>";
// 自己用數(shù)據(jù)去實(shí)現(xiàn)頁(yè)面效果
alert(data);
</script>
<body>
<div id="app"></div>
</body>
</html>
上面這個(gè)例子也不能稱作前后端分離, 不過可以現(xiàn)在接下來得項(xiàng)目中實(shí)驗(yàn)一下
3 通常前后端分離得一個(gè)頁(yè)面會(huì)有兩個(gè)接口, 一個(gè)是渲染頁(yè)面接口, 一個(gè)是獲取數(shù)據(jù)接口, 前者可以直接自己維護(hù), 比如 vue-router
, angular/router
這些去自己維護(hù)路由接口, 通過 ajax 去獲取的數(shù)據(jù)你要看是怎么用, 在前端最典型得例子就是城市三級(jí)聯(lián)動(dòng)這個(gè)組件, 最開始只會(huì)獲取省級(jí)數(shù)據(jù), 然后根據(jù)用戶點(diǎn)那個(gè)省才會(huì)去請(qǐng)求相應(yīng)省底下得市級(jí)數(shù)據(jù), 最簡(jiǎn)單得判斷方法是看數(shù)據(jù)得時(shí)間敏感性, 如果數(shù)據(jù)需要實(shí)時(shí)的那么就要少量多次得去遠(yuǎn)程獲取, 如果不是實(shí)時(shí)的, 數(shù)據(jù)量多得時(shí)候就懶加載, 按需加載, 數(shù)據(jù)量少得時(shí)候,比如就是一個(gè)下拉列表得幾個(gè)選項(xiàng), 你可以一并讓遠(yuǎn)程提供(讓遠(yuǎn)程提供也是為了不把數(shù)據(jù)寫死, 不然有變動(dòng)了你也跟著受累)
4 把前端得事給摟過來, ajax 這個(gè)就得你自己去做, jq 對(duì) ajax 請(qǐng)求的數(shù)據(jù)不友好, 推薦可以用 vue 過渡一下, 這個(gè)框架得侵入性比較小(意思就是說你完全可以在現(xiàn)有得項(xiàng)目中直接把 vue 去引入進(jìn)來開發(fā), 原有的不會(huì)受到影響), 當(dāng)你體會(huì)到 事件驅(qū)動(dòng)
和 數(shù)據(jù)驅(qū)動(dòng)
的區(qū)別就明白了現(xiàn)代前端是什么了
5 先vue 官網(wǎng)教程 上個(gè)手, 接下來就完全可以和后端商量著把請(qǐng)求數(shù)據(jù)的活給接下來了, 這對(duì)他來說還算減輕工作量, 如果不同意就換公司吧, 不廢話
6 我本身是個(gè)后端(因?yàn)槲也幌矚g寫靜態(tài)頁(yè)面, 如果有現(xiàn)成得 ui 另說), 站在我的角度來看前端的話, 前端最短板的就是在 tcp/http 請(qǐng)求上了, post/get 的區(qū)別(請(qǐng)求的方式, 為什么數(shù)據(jù)提交不用 get, post 的數(shù)據(jù)格式有幾種, 這之間有什么區(qū)別)? http 和 https 的區(qū)別? session/cookie 的區(qū)別? 跨域如何處理? 一個(gè)表單從前端提交再到存到數(shù)據(jù)庫(kù)中這中間發(fā)生了什么? 表單需要驗(yàn)證嗎?為什么?前后端都要驗(yàn)證它嗎? 如何防范 csrf/xss 攻擊? 弄明白這些問題你也不會(huì)輕易被后端得給唬住了
ps: 根據(jù)你得描述你們得后端開發(fā)就是個(gè)混子, 這都8102年了還玩三年前爛大街得東西, 離他遠(yuǎn)點(diǎn)換個(gè)公司吧, 畢竟還年輕, 但是時(shí)間很寶貴, 特別是你前三年, 如果沒有什么成長(zhǎng)后面會(huì)給人一種一年經(jīng)驗(yàn)混三年的錯(cuò)覺
1.我之前就是在這樣一家類似的公司工作,公司主要是做電商,想做自己的APP就招了我一個(gè)前端,主管(也算是經(jīng)理的合伙人)做后臺(tái)(用的PHP),所以我一個(gè)人承包了設(shè)計(jì)+前端的所有東西,不過還好我們是前后臺(tái)完全分離,并沒有出現(xiàn)你說的頁(yè)面亂的情況。
2.關(guān)于數(shù)據(jù)傳輸,我沒有用ajax,而是后臺(tái)給了接口我直接調(diào)用請(qǐng)求數(shù)據(jù)來渲染,但是后臺(tái)數(shù)據(jù)通常給的和我之前自己模擬的假數(shù)據(jù)格式不一致,所以導(dǎo)致我后期修改了很多東西。
3.再說回公司,如果你是真的想做前端,想在這方面有發(fā)展,建議提升自己的能力,去正規(guī)的互聯(lián)網(wǎng)公司,正規(guī)的意思是技術(shù)正規(guī),公司制度相對(duì)完善,公司配備相對(duì)完整,這樣對(duì)你能力的提高也有很大的幫助。
就先說這些吧,畢竟我自己也還沒有完全成為厲害的前端,技術(shù)方面不多說,怕誤導(dǎo)你。
1.挺常見的 ps 什么的,基本交互js這些都是要做的
2.目前jq的ajax 或者使用框架
3.模塊多,設(shè)置鉤子,局部ajax請(qǐng)求數(shù)據(jù),全部數(shù)據(jù)的話不現(xiàn)實(shí),如果數(shù)據(jù)量大,頁(yè)面得崩死...比如第一個(gè)表格,頁(yè)面開始就請(qǐng)求一個(gè),加載好后放在那里,然后第二個(gè)..設(shè)置局部刷新
4.5.都是一個(gè)問題 工作不光技術(shù)好壞,還有溝通能力,ajax返回?zé)o非就是狀態(tài)數(shù)據(jù)什么的,讓他們給你說清楚返回的是什么就好了
1,我們的工作模式現(xiàn)在在別的公司(也不大那種吧)算是常見嗎,作為前端我是不是做的太少了
這個(gè)不清楚,我沒有呆過這樣的公司。 不過據(jù)別人說,你這種情況在小的創(chuàng)業(yè)公司或者外包還是蠻常見的
,
這種公司程序員幸福感普遍不強(qiáng)。 至于一些大中型公司肯定不會(huì)這樣了。 你沒有提到你工作的年限,所以不好
判斷你目前的狀態(tài)。
2,如果前后端分離的話,前端就只能從ajax獲取后臺(tái)數(shù)據(jù)?然后加載到dom嗎?有其他獲取的方式嗎
前后端分離不分離和獲取數(shù)據(jù)沒有關(guān)系的。只不過不分離的時(shí)候后臺(tái)可以將數(shù)據(jù)直接潛入到模板或者掛載到window,前臺(tái)少了請(qǐng)求(其實(shí)就是服務(wù)端渲染)。 前端拿數(shù)據(jù)的方式不要太多, 當(dāng)然最常見的就是ajax拿到j(luò)son,然后前端處理并render。 前端不只是有dom的,比如生成pdf,打印機(jī)交互等。至于數(shù)據(jù)源,視圖不關(guān)心從哪里來,他只關(guān)系數(shù)據(jù)格式。 其他的獲取方式比如 websocket
3,如果頁(yè)面很多模塊比如好多下拉 還有表格,那么ajax要多次單獨(dú)傳輸還是一次傳輸過來?如果一次要怎么把數(shù)據(jù)(json)分布給這些組件呢(有條件的前輩復(fù)制個(gè)簡(jiǎn)單demo給看看行嗎)
最好是一次傳輸。 如果不一次傳輸通常來說都是后端做不到。 因?yàn)橐淮蝹鬏攲?duì)前端來說邏輯是剛剛好的,不多不少。 這也就是為什么relay
等如此流行的原因,前端需要什么數(shù)據(jù)自己取。至于如何分布給各個(gè)組件,那是數(shù)據(jù)處理層應(yīng)該關(guān)心的事。如果你使用了單項(xiàng)數(shù)據(jù)流,那么通常將數(shù)據(jù)存到一個(gè)全局唯一的倉(cāng)庫(kù),各個(gè)組件訂閱倉(cāng)庫(kù)變動(dòng),倉(cāng)庫(kù)進(jìn)貨或者出貨就打電話給你的組件.
4,以上憂慮來自于,項(xiàng)目數(shù)據(jù)很多,然后我對(duì)前后端交接處又 云里霧里,ajax基本是后端寫,導(dǎo)致我非常被動(dòng),對(duì)項(xiàng)目整體把握沒那么好,感覺后端貌似更容易吞噬前端,我想改變這種局面(有一次聽后端竟然說項(xiàng)目是他一個(gè)人做的<說是開玩笑,但是對(duì)我打擊很大>,我ri了)
換個(gè)公司吧。
5,我現(xiàn)在要從哪里開始做起,要如何慢慢改變這種已經(jīng)適應(yīng)了一年的模式,讓后端也能接受(貌似他的ajax也是基礎(chǔ)層面,難一些的也就不行了,我們項(xiàng)目要求不是很高,也沒有人說過啥,但我想讓前端表現(xiàn)的更好)
我以前學(xué)過PHP(比較淺那種),特別想深入學(xué)習(xí)一下,這樣只有自己實(shí)踐了才會(huì)明白其中的原理,因?yàn)楦杏X跟這個(gè)后端配合,我進(jìn)步不大,很被動(dòng),他習(xí)慣了只做他懂了,不會(huì)的就繞道了,所有他隨便搞,只要搞出來就行,我要從哪里插手?
換個(gè)公司,找個(gè)前輩,多看書,多出去走走
5,這些問題我也查了挺多,不過我感覺都不如自己完整的表達(dá)出來我的想法
感謝的分享
你的工作模式小公司小團(tuán)隊(duì)甚至大學(xué)生組的小團(tuán)隊(duì)可能比較常見,大公司我不知道。反正看上去就很不規(guī)范的感覺,雖然你沒有提及,但我猜測(cè):你們的代碼應(yīng)該會(huì)比較混亂,且沒有任何代碼規(guī)范的約定,職責(zé)劃分也經(jīng)常很模糊。學(xué)還是很有必要的,趁有精力不要偷懶,你的一些問題可能學(xué)得多了自然就解決了。實(shí)際上,現(xiàn)在前后端的難度可以沒有太大區(qū)別,甚至前端可以比后端復(fù)雜好幾倍,你撲過來覺得學(xué)習(xí)后端有難度,說明你編程基礎(chǔ)沒有打好。如果你是直接從前端開始上手編程的話,那你很容易缺乏“系統(tǒng)能力”,指的就是你分析別人的系統(tǒng)和設(shè)計(jì)自己的系統(tǒng)的能力。建議試著不用jquery,自己造輪子,或嘗試使用vue.js之類的框架,了解它們的的原理,不光“能用就行”,還要高效而“優(yōu)雅”。了解了各種輪子的原理之后你再學(xué)習(xí)新東西或自己造輪子的時(shí)候就會(huì)有和現(xiàn)在完全不同的想法,當(dāng)然學(xué)后端也不會(huì)有什么難度了。
除了ajax外,還可以用jsonp,但要后端支持。另一個(gè)問題沒看懂。
然后如果要學(xué)后端推薦直接用js,不要另外去學(xué)php了。后端也有不少別人造好的輪子,研究研究它們的結(jié)構(gòu)和原理也能學(xué)到不少。
北大青鳥APTECH成立于1999年。依托北京大學(xué)優(yōu)質(zhì)雄厚的教育資源和背景,秉承“教育改變生活”的發(fā)展理念,致力于培養(yǎng)中國(guó)IT技能型緊缺人才,是大數(shù)據(jù)專業(yè)的國(guó)家
北大青鳥中博軟件學(xué)院創(chuàng)立于2003年,作為華東區(qū)著名互聯(lián)網(wǎng)學(xué)院和江蘇省首批服務(wù)外包人才培訓(xùn)基地,中博成功培育了近30000名軟件工程師走向高薪崗位,合作企業(yè)超4
中公教育集團(tuán)創(chuàng)建于1999年,經(jīng)過二十年潛心發(fā)展,已由一家北大畢業(yè)生自主創(chuàng)業(yè)的信息技術(shù)與教育服務(wù)機(jī)構(gòu),發(fā)展為教育服務(wù)業(yè)的綜合性企業(yè)集團(tuán),成為集合面授教學(xué)培訓(xùn)、網(wǎng)
達(dá)內(nèi)教育集團(tuán)成立于2002年,是一家由留學(xué)海歸創(chuàng)辦的高端職業(yè)教育培訓(xùn)機(jī)構(gòu),是中國(guó)一站式人才培養(yǎng)平臺(tái)、一站式人才輸送平臺(tái)。2014年4月3日在美國(guó)成功上市,融資1
浪潮集團(tuán)項(xiàng)目經(jīng)理。精通Java與.NET 技術(shù), 熟練的跨平臺(tái)面向?qū)ο箝_發(fā)經(jīng)驗(yàn),技術(shù)功底深厚。 授課風(fēng)格 授課風(fēng)格清新自然、條理清晰、主次分明、重點(diǎn)難點(diǎn)突出、引人入勝。
曾工作于聯(lián)想擔(dān)任系統(tǒng)開發(fā)工程師,曾在博彥科技股份有限公司擔(dān)任項(xiàng)目經(jīng)理從事移動(dòng)互聯(lián)網(wǎng)管理及研發(fā)工作,曾創(chuàng)辦藍(lán)懿科技有限責(zé)任公司從事總經(jīng)理職務(wù)負(fù)責(zé)iOS教學(xué)及管理工作。
精通HTML5和CSS3;Javascript及主流js庫(kù),具有快速界面開發(fā)的能力,對(duì)瀏覽器兼容性、前端性能優(yōu)化等有深入理解。精通網(wǎng)頁(yè)制作和網(wǎng)頁(yè)游戲開發(fā)。
具有10 年的Java 企業(yè)應(yīng)用開發(fā)經(jīng)驗(yàn)。曾經(jīng)歷任德國(guó)Software AG 技術(shù)顧問,美國(guó)Dachieve 系統(tǒng)架構(gòu)師,美國(guó)AngelEngineers Inc. 系統(tǒng)架構(gòu)師。