① WEB前端與後端的難點想學不太懂呃。。
在我們實際的開發過程中,我們當前這樣定位前端、後端開發人員。
1)前端開發人員:精通JS,能熟練應用JQuery,懂CSS,能熟練運用這些知識,進行交互效果的開發。
2)後端開發人員:會寫Java代碼,會寫sql語句,能做簡單的資料庫設計,會Spring和iBatis,懂一些設計模式等。
現在來看,我們對前後端的要求還是蠻低的,尤其是後端,新員工經過培訓之後都是可以參與到後端開發的,沒有太高的技術門檻,唯一需要做的就是先變成熟練工種,這個階段沒有涉及到設計模式、架構、效率等一些列問題。
還是先google一下,看看網上對Web前端開發、Web後端開發分別是什麼?
Web前端: 顧名思義是來做Web的前端的。我們這里所說的前端泛指Web前端,也就是在Web應用中用戶可以看得見碰得著的東西。包括Web頁面的結構、Web的外觀視覺表現以及Web層面的交互實現。
Web後端:後端更多的是與資料庫進行交互以處理相應的業務邏輯。需要考慮的是如何實現功能、數據的存取、平台的穩定性與性能等。
我們再來看看大公司對前後端人員招聘的要求,通過這個角度看看前端、後端的技術要求:
Web前端:
1)精通HTML,能夠書寫語義合理,結構清晰,易維護的HTML結構。
2)精通CSS,能夠還原視覺設計,並兼容業界承認的主流瀏覽器。
3)熟悉JavaScript,了解ECMAScript基礎內容,掌握1~2種js框架,如JQuery
4)對常見的瀏覽器兼容問題有清晰的理解,並有可靠的解決方案。
5)對性能有一定的要求,了解yahoo的性能優化建議,並可以在項目中有效實施。
6)......
Web後端:
1)精通jsp,servlet,java bean,JMS,EJB,Jdbc,Flex開發,或者對相關的工具、類庫以及框架非常熟悉,如Velocity,Spring,Hibernate,iBatis,OSGI等,對Web開發的模式有較深的理解
2)練使用oracle、sqlserver、mysql等常用的資料庫系統,對資料庫有較強的設計能力
3)熟悉maven項目配置管理工具,熟悉tomcat、jboss等應用伺服器,同時對在高並發處理情況下的負載調優有相關經驗者優先考慮
4)精通面向對象分析和設計技術,包括設計模式、UML建模等
5)熟悉網路編程,具有設計和開發對外API介面經驗和能力,同時具備跨平台的API規范設計以及API高效調用設計能力
6)......
② Web前端開發的難點和重要性有哪些
第一,平台、瀏覽器生態復雜,要考慮的場景太多,不同平台上實現同一界面功能的重復勞動嚴重,這個難點在於如何消除前端開發的重復勞動。
第二,當需求發生變化的時候,最先往往就是前端,而很多需求變化和後端無關,單純就是前端的改變。這些需求改變有的是不合理的,但是,客觀來說,也有不少是有必要的需求改變,用戶的喜好會變化,用戶的喜好我們也要反復揣摩,也就是要適應需求變化,所以,難點就成了如何讓前端開發適應快速變化的需求。
第三,前端的學習曲線其實挺陡,很多後端開發者以為前端只是玩一玩HTML,到了自己上手的時候發現其實要學很多。
③ 網站建設技術難點有哪些
一、設計難在自適應網站建設過程中,需要考慮的內容更為廣泛,而且還有考慮其他方面的一些問題。比如可讀性、區域面積及不同設備下運行的狀態等。這對於設計師的要求甚高,這樣導致要做一個完美自適應網站變得很難。網掘歲段站建設推薦豬八戒網。【點擊查看做個網站到底多少錢】
二、實現難響應式網站主要是一HTML5、CSS3為基礎,需要精通這兩種技術的高手。如果設計師對這兩種技術不夠精通,會導致就算設計師做出很棒的模版,但是實現以後,會怎麼看怎麼不舒服。
三、 成本大因為自適應設計需要對多個界面兼容、功能調試,導致整個製作過程需要UI設計師和前端工程師要不斷磨合製作。而測試人員也要在不同的設備下對網站進行測試。自適應的網站需要有很多功能,比如界面的融合、功能的調試等,這些都是需要不斷磨合才能實現,而這樣的網站成本也相應的比較高。
想要了解更多有關APP開發的相關信息,推薦咨詢豬八戒網。豬八戒網有千萬服務商為企業、公共機構和個人提供定製化的解決方判譽案,將創意、智慧、技能轉化為商業價值和社會價值。2011年豬八戒網獲得IDG投資並被評選為中國2011年度「最佳商業模式十強」企業;專業性值得信賴雀衫。
④ 一個合格的web前端需要會什麼
1. div和table
這個是最簡單的,也是最基礎的。要熟練掌握div、form table、ul li 、p、span、font這些標簽,這些都是最常用的,特別是div和table,div用於布局、table也可以用於布局,但是不靈活,基本 table是用來和數據打交道。
2.html
HTML是指超文本標簽語言,是目前web領域應用廣泛的語言,我們只需要在html文檔中插入對應的標簽,即可實現web頁面的編寫與排列,所以要熟練掌握HTML基本知識,包括每個標簽的用法等。
3. CSS
CSS指層疊樣式表,可以為HTML標簽自定義樣式,通過設置HTML標簽的樣式,來改變其外形,達到美化與排版web頁面的目的。
4.Javascript
Javascript是網頁腳本語言,它可以在html中運行,設置並修改瀏覽器中的各種對象與變數。例如用來改進設計、驗證表單、檢測瀏覽器、創建 cookies等等,現在各大網站都可以看見 Javascript的蹤影,常見的網站首頁大眼晴、警告提示框、頁面動畫效果等等。Javascript更是一種在客戶端廣泛使用的腳步語言,在 Javascript當中提供了一些內置函數、對象和DOM操作,藉助這些內容我們可以來實現一些客戶端的特效、驗證、交互等!
5.Jquery
Jquery是相當於把js封裝了一套的一個js插件,目的就是操作起來更方便,代碼寫的更少。 Jquery是一個免費、開源的輕量級的Javascript庫,並且兼容各種瀏覽器,同時現在有很多基於 Jquery的插件可供選擇,這樣在我們實現一些豐富的動態效果時更方便快捷,大大節省了我們開發的時間,提高了開發速度。
6.框架
從 bootstrap開始,響應式的珊格系統被後來框架一直沿用,建議學一套主流mvc框架,vue,react, angular兩選一種。
7.會點後台語言
對於前端工程師來說,並不需要像網站程序員樣,編寫對象、開發特殊功能、搭建資料庫。但是前端工程師要掌握基本的頁面GET&POST傳參、程序判斷語法、程序輸出語法、頁面提交、資料庫查詢與記錄插入,以及掌握HTTP與WEB工作原理、掌握Socket長連接實時網路通信技術、掌握 NOSQL中的 MONGODB的應用、了解PHP語法、了解 MYSQL資料庫的基本操作。
當然,以上技能能夠幫助你成為一個合格的前端工程師,但要成為一個優秀的前端,必須掌握除技術以外的東西,例如設計,用戶等等,因此還需不斷的堅持學習。
⑤ Web前端工程師應該知道的JavaScript的10個難點!
今天小編要跟大家分享的文章是關於Web前端工程師應該知道的JavaScript的10個難點。相信很多正在學習Web前端知識的小夥伴對於JavaScript存在很多疑問,宏鄭敬為了幫助大家更好的學習Web前端知識,成為一名優秀的web前端工程師,今天小編為大家分享了這篇Web前端應該知道的JavaScript難點的問題,下面我們一起看一看吧!
1、立即執行函數
立即執行函數,即
(IIFE),正如它的名字,就是創建函數的同時立即執行。它沒有綁定任何事件,也無需等待任何非同步操作:
1.(function(){
2.
3.//代碼
4.
5.//...
6.
7.})();
function(){}是一個匿名函數,包圍它的一對括弧將其轉換為一個表達式,緊跟其後的一對括弧調用了這個函數。立即執行函數也可以理解為立即調用一個匿名函數。立即執行函數最常見的應用場景就是:將var變數的作用域限制於你們函數內,這樣可以避免命名沖突。
2、閉包
對於閉包(closure),當外部函數返回之後,內部函數依然可以訪問外部函數的變數。
1.(function(){
2.
3.//代碼
4.
5.//...
6.
7.})();
代碼中,外部函數f1隻執行了一次,變數N設為0,並將內部函數f2賦值給了變數result。由於外部函數f1已經執行完畢,其內部變數N應該在內存中被清除,然而事實並不是這樣:我們每次調用result的時候,發現變數N一直在內存中,並且在累加。為什麼呢?這就是閉包的神奇之處了!
3、使用閉包定義私有變數
通常,JavaScript開發者使用下劃線作為私有變數的前綴。但是實際上,這些變數依然可以被訪問和修改,並非真正的私有變數。這時,使用閉包可以定義真正的私有變數:1.functionProct(){
2.
3.varname;
4.
5.this.setName=function(value){
6.name=value;
7.};
8.
9.this.getName=function(){
10.returnname;
11.};
12.}
13.
14.varp=newProct();
15.p.setName("Fundebug");
16.
17.console.log(p.name);//輸出undefined
18.console.log(p.getName());//輸出Fundebug
代碼中,對象p的的name屬性為私有屬性,使用p.name不能直接訪問。
4、prototype
每個JavaScript構造函數都有一個prototype屬性,用於設置所有實例對象需要共享的屬蔽慎性和方法。prototype屬性不能列舉。JavaScript僅支持通過prototype屬性進行繼承屬性和方法。1.functionRectangle(x,y)
2.{
3.this._length=x;
4.this._breadth=y;
5.}
6.
7.Rectangle.prototype.getDimensions=function()
8.{
9.return{
10.length:this._length,
11.breadth:this._breadth
12.};
13.};
14.
15.varx=newRectangle(3,4);
16.vary=newRectangle(4,3);
17.
18.console.log(x.getDimensions());//{length:3,breadth:4}
19.console.log(y.getDimensions());//{length:4,breadth:3}
代碼中,x和y都是構造函數Rectangle創建的對象實例,叢返它們通過prototype繼承了getDimensions方法。
5、模塊化
JavaScript並非模塊化編程語言,至少ES6落地之前都不是。然而對於一個復雜的Web應用,模塊化編程是一個最基本的要求。這時,可以使用立即執行函數來實現模塊化,正如很多JS庫比如jQuery以及我們Fundebug都是這樣實現的。1.varmole=(function(){
2.varN=5;
3.
4.functionprint(x){
5.console.log("Theresultis:"+x);
6.}
7.
8.functionadd(a){
9.varx=a+N;
10.print(x);
11.}
12.
13.return{
14.description:"Thisisdescription",
15.add:add
16.};
17.})();
18.
19.
20.console.log(mole.description);//輸出"thisisdescription"
21.
22.mole.add(5);//輸出「Theresultis:10」
所謂模塊化,就是根據需要控制模塊內屬性與方法的可訪問性,即私有或者公開。在代碼中,mole為一個獨立的模塊,N為其私有屬性,print為其私有方法,decription為其公有屬性,add為其共有方法。
6、變數提升
JavaScript會將所有變數和函數聲明移動到它的作用域的最前面,這就是所謂的變數提升(Hoisting)。也就是說,無論你在什麼地方聲明變數和函數,解釋器都會將它們移動到作用域的最前面。因此我們可以先使用變數和函數,而後聲明它們。但是,僅僅是變數聲明被提升了,而變數賦值不會被提升。如果你不明白這一點,有時則會出錯:1.console.log(y);//輸出undefined
2.
3.y=2;//初始化y
上面的代碼等價於下面的代碼:1.vary;//聲明y
2.
3.console.log(y);//輸出undefined
4.
5.y=2;//初始化y
為了避免BUG,開發者應該在每個作用域開始時聲明變數和函數。
7、柯里化
柯里化,即Currying,可以是函數變得更加靈活。我們可以一次性傳入多個參數調用它;也可以只傳入一部分參數來調用它,讓它返回一個函數去處理剩下的參數。1.varadd=function(x){
2.returnfunction(y){
3.returnx+y;
4.};
5.};
6.
7.console.log(add(1)(1));//輸出2
8.
9.varadd1=add(1);
10.console.log(add1(1));//輸出2
11.
12.varadd10=add(10);
13.console.log(add10(1));//輸出11
代碼中,我們可以一次性傳入2個1作為參數add(1)(1),也可以傳入1個參數之後獲取add1與add10函數,這樣使用起來非常靈活。
8、apply,call與bind方法
JavaScript開發者有必要理解apply、call與bind方法的不同點。它們的共同點是第一個參數都是this,即函數運行時依賴的上下文。
三者之中,call方法是最簡單的,它等價於指定this值調用函數:1.varuser={
2.name:"RahulMhatre",
3.whatIsYourName:function(){
4.console.log(this.name);
5.}
6.};
7.
8.user.whatIsYourName();//輸出"RahulMhatre",
9.
10.varuser2={
11.name:"NehaSampat"
12.};
13.
14.user.whatIsYourName.call(user2);//輸出"NehaSampat"
·apply方法與call方法類似。兩者唯一的不同點在於,apply方法使用數組指定參數,而call方法每個參數單獨需要指定:
·apply(thisArg,[argsArray])1.varuser={
2.greet:"Hello!",
3.greetUser:function(userName){
4.console.log(this.greet+""+userName);
5.}
6.};
7.
8.vargreet1={
9.greet:"Hola"
10.};
11.
12.user.greetUser.call(greet1,"Rahul");//輸出"HolaRahul"
13.user.greetUser.apply(greet1,["Rahul"]);//輸出"HolaRahul"
使用bind方法,可以為函數綁定this值,然後作為一個新的函數返回:1.varuser={
2.greet:"Hello!",
3.greetUser:function(userName){
4.console.log(this.greet+""+userName);
5.}
6.};
7.
8.vargreetHola=user.greetUser.bind({greet:"Hola"});
9.vargreetBonjour=user.greetUser.bind({greet:"Bonjour"});
10.
11.greetHola("Rahul")//輸出"HolaRahul"
12.greetBonjour("Rahul")//輸出"BonjourRahul"
9、memoization
Memoization用於優化比較耗時的計算,通過將計算結果緩存到內存中,這樣對於同樣的輸入值,下次只需要中內存中讀取結果。
1.functionmemoizeFunction(func)
2.{
3.varcache={};
4.returnfunction()
5.{
6.varkey=arguments[0];
7.if(cache[key])
8.{
9.returncache[key];
10.}
11.else
12.{
13.varval=func.apply(this,arguments);
14.cache[key]=val;
15.returnval;
16.}
17.};
18.}
19.
20.
21.varfibonacci=memoizeFunction(function(n)
22.{
23.return(n===0||n===1)?n:fibonacci(n-1)+fibonacci(n-2);
24.});
25.
26.console.log(fibonacci(100));//輸出354224848179262000000
27.console.log(fibonacci(100));//輸出354224848179262000000
代碼中,第2次計算fibonacci(100)則只需要在內存中直接讀取結果。
10、函數重載
所謂函數重載(method
overloading),就是函數名稱一樣,但是輸入輸出不一樣。或者說,允許某個函數有各種不同輸入,根據不同的輸入,返回不同的結果。憑直覺,函數重載可以通過if...else或者switch實現,這就不去管它了。jQuery之父John
Resig提出了一個非常巧(bian)妙(tai)的方法,利用了閉包。
從效果上來說,people對象的find方法允許3種不同的輸入:
0個參數時,返回所有人名;1個參數時,根據firstName查找人名並返回;2個參數時,根據完整的名稱查找人名並返回。
難點在於,people.find只能綁定一個函數,那它為何可以處理3種不同的輸入呢?它不可能同時綁定3個函數find0,find1與find2啊!這里的關鍵在於old屬性。
由addMethod函數的調用順序可知,people.find最終綁定的是find2函數。然而,在綁定find2時,old為find1;同理,綁定find1時,old為find0。3個函數find0,find1與find2就這樣通過閉包鏈接起來了。
根據addMethod的邏輯,當f.length與arguments.length不匹配時,就會去調用old,直到匹配為止。
1.functionaddMethod(object,name,f)
2.{
3.varold=object[name];
4.object[name]=function()
5.{
6.//f.length為函數定義時的參數個數
7.//arguments.length為函數調用時的參數個數
8.if(f.length===arguments.length)
9.{
10.returnf.apply(this,arguments);
11.}
12.elseif(typeofold==="function")
13.{
14.returnold.apply(this,arguments);
15.}
16.};
17.}
18.
19.
20.//不傳參數時,返回所有name
21.functionfind0()
22.{
23.returnthis.names;
24.}
25.
26.
27.//傳一個參數時,返回firstName匹配的name
28.functionfind1(firstName)
29.{
30.varresult=[];
31.for(vari=0;i
32.{
33.if(this.names[i].indexOf(firstName)===0)
34.{
35.result.push(this.names[i]);
36.}
37.}
38.returnresult;
39.}
40.
41.
42.//傳兩個參數時,返回firstName和lastName都匹配的name
43.functionfind2(firstName,lastName)
44.{
45.varresult=[];
46.for(vari=0;i
47.{
48.if(this.names[i]===(firstName+""+lastName))
49.{
50.result.push(this.names[i]);
51.}
52.}
53.returnresult;
54.}
55.
56.
57.varpeople={
58.names:["DeanEdwards","AlexRussell","DeanTom"]
59.};
60.
61.
62.addMethod(people,"find",find0);
63.addMethod(people,"find",find1);
64.addMethod(people,"find",find2);
65.
66.
67.console.log(people.find());//輸出["DeanEdwards","AlexRussell","DeanTom"]
68.console.log(people.find("Dean"));//輸出["DeanEdwards","DeanTom"]
69.console.log(people.find("Dean","Edwards"));//輸出["DeanEdwards"]
以上就是小編今天為大家分享的關於Web前端工程師應該知道的JavaScript的10個難點。希望本篇文章能夠對正在從事Web前端學習的小夥伴們有所幫助。想要了解更多web前端相關知識記得關注北大青鳥Web培訓官網最後祝願小夥伴們工作順利!
原文鏈接:#/a/1190000010371988
⑥ 前端開發的難點到底在什麼地方
不同級別的前端面臨的難點各不相同,不可一概而論;
業務開發的前端難點在於對業務的理解和把控能力;
平台開發的前端難點在於產品化的把控和推進能力。
觀點1:不同級別的前端面臨的難點各不相同,不可一概而論。
其他回答有說 CSS 難,有說 CSS 不難的,每個人水平不同,這樣爭論毫無意義。我剛學前端時覺得 JS/CSS/瀏覽器兼容問題都很難,現在覺得也就那樣,因為前端路子廣,辦法總比問題多。後來覺得要評估好需求,把控好項目質量比較難,很多時候我們是在幹事,在解決問題,不是只埋頭寫代碼,時間一長你會發現前端工作中,技術問題往往比較好解決,反而資源+協作問題比較麻煩。現在對我來說比較難的是快速產品化的能力,如何從無到有去做出一些有價值的東西。
舉一個簡單粗暴的例子吧:阿里前端很多,P5/P6 一大把,但是 P8/P9 的非常少,為什麼?進階的難點在哪裡?
前端開發的難點跟前端進階的難點是非常相似的。阿里對每個前端層級都有一個標准,這也從側面回答了這個問題,比如對 P5 來說,難點可能是寫好業務代碼,保證其靈活性和可維護性,能解決各種適配問題;對 P6 來說則需要獨擋一面,能獨立 owner 需求,而 P7 則需要在某方面技術有深入理解,等等。
能提出這個問題首先得恭喜題主,說明題主在當前階段遇到瓶頸了,需要向下一個 level 出擊了。
觀點2:業務開發的前端難點在於對業務的理解和把控能力。
業務邏輯開發本身並不是難點,誰都可以寫。但是對於你自己負責的這塊業務,後續業務的發展方向和潛力,你有去了解過嗎?當業務方提需求過來時你是只負責執行還是和業務方一起探討更合理的方案?你有沒有給自己負責的產品提過一些建議?做過一些改善措施?如果前端只是作為一個執行者,作為一種被調度的資源,那麼即使最終項目取得了好的成績,跟你有多大關系?你自己會有多大的成就感?
另外一個很重要的點:就是對業務的把控能力。業務方總是會催著上線,開發時間不斷被壓縮該怎麼辦?進度不如預期怎麼辦?開發遇到瓶頸怎麼辦?發布新功能翻車了怎麼辦?
我見過有默默加班保證進度的,也有跟需求方重新談延期的,有發布出問題手足無措的,也有自己默默修復的,有遇到瓶頸一籌莫展的,也有及時跟老闆溝通,跟業務方撕逼的… 如何優雅的處理這些問題,有時候比寫代碼更難。為什麼有的人業務代碼邏輯混亂,寫的一團糟?我不相信是智力問題,反倒更相信是對項目本身沒有把控好,本來排了5天工作量的需求被業務方壓到了3天,你還能保證寫出健壯而不失風度的代碼?
觀點3:平台開發的前端難點在於產品化的把控和推進能力。
做業務時有人給你提需求,幫你出交互視覺稿,你只要負責寫頁面就行了。但是在支付寶前端,很多內部平台和技術產品都是技術自己主導,你需要自己發現問題,出方案,設計資料庫,自己出頁面,這是一個從無到有的創造的過程。並且要保證你做的東西是真正解決問題的,而不是做一些自己覺得很牛逼實際上並沒有解決用戶痛點的東西,用我老闆的話說就是對產品的把控能力,不要跑偏了。前端是最容易做出產品化東西的工程師了,因為後端不會做 UI,UI 不會寫代碼,唯前端兼顧,這是最大優勢。
再一個就是對產品的推進能力了,你做的東西可能需要各種資源?如何爭取?可能牽扯到多方利益?如何權衡?東西做出來了如何推廣?如何在用戶的一片罵聲中奮勇前進?
印象中很多平台型產品,剛開始投入使用時都是一片罵聲,各種問題,說實話負責這些產品的程序員壓力是相當大的,天天被罵還得徹夜幫別人解決問題,還得不斷優化系統,你說難不難?
以上三點就是本文所展現的理念,希望能對大家有幫助。
⑦ 你覺得web前端項目的難點有哪些
項目開發難點:
1. Web架構的獨特性
2. Web標准和相關技術的紛繁復雜和飛速發展
3. 瀏覽器兼容性
4. 交叉領域和多重目標
5. 組織架構和開發流程