記于4/10/2015,這年大二,什么都還不知道!
百度百科的回答
網站重構的目的不是為了讓網頁更符合Web標準,重構的本質是構建一個前端靈活的MVC框架,即HTML作為信息模型(Model),CSS控制樣式(View),JavaScript負責調度數據和實現(xiàn)某種展現(xiàn)邏輯(Controller)。同時,代碼需要具有很好的復用性和可維護性。這是高效率、高質量開發(fā)以及協(xié)作開發(fā)的基礎。
DHTML可以讓用戶的操作更炫,更吸引眼球;Ajax可以實現(xiàn)無刷新的數據交換,讓用戶的操作更流暢。對于普通用戶來說,一個網站是否規(guī)范、功能是否強大,服務器端是用J2EE+Oracle的強大組合,還是用ASP+Access的簡單組合,并沒有太明顯的區(qū)別。但是,前端的用戶體驗卻給了用戶直觀的印象。
2.精通JavaScript、jQuery、ExtJS等頁面效果框架,這是前端工程師的最核心技能,是專做頁面效果的技術。其實精通了JavaScript,后端編程語言,如.NET、PHP、Ruby都很容易掌握,因為其原理是一樣的;
3.精通一二種模板語言,并能修改,如織夢或wordpress的模板;
4.掌握thinkphp與zend框架,能修改此類開源源碼;
5.掌握html5與sencha,這是做手機等移動設備的頁面前端技術;
6.掌握一二種后端編程語言,如PHP、.NET、JAVA,能讀懂后端源碼,實際上其原理跟JS差不多;
7.掌握node.js,熟悉各種自動化部署工具;
8.掌握FLASH,能制作出動態(tài)flash相冊,會Flash AS3.0編程。
知乎用戶haochuan給的答案
基礎:
1.熟練運用HTML的各種element
2.HTML觸發(fā)event及JS處理event
3.DOM操作,熟練掌握選擇器,增刪查改,遍歷,搜索、children(子孫) parent(父親) sibling(兄弟)
4.js中的loop循環(huán)及condition選擇語法、scope(作用域)、closure(閉包)、array、object、this的用法
5.CSS 知識box modal(盒模型)、各種選擇器(*, >, ~, :nth-child)、?position(據說大有文章)、 float
提升:
1.基本數據結構 能用JS寫出linked list(鏈表), stack(棧), queue(隊列), (binary)tree(樹), graph(圖), hashtable(哈希表)
2.?基本算法:能用JS實現(xiàn)各種search(linear, binary..), 各種sort(bubble, insertion, merge, quick, selection), 以及樹的搜索(Breadth First/Depth First)和遍歷(3種順序)
3.設計模式,舉個例子:singleton(單例模式)、factory(工廠模式)、
strategy(策略模式)、decrator(裝飾模式)......《大話設計模式》可以一看
4.Git 不要只是停留在把Github當做一個網絡儲存器的層面上, 了解知道branch(倉庫分支作用:
比如你和別人一起寫代碼,你寫A.c 別人是B.c,你不想別人寫的干擾你,就建立一個分支,自己調試自己的。以后都通過了,在合并)
diff(比較文件修改差異)
merge(合并項目分支)等等
5.基本的計算機知識 知道位運算, 溢出, thread, lock, concurrency, parallelism
6.?熟悉unix的基本命令,ssh public/private key(公共秘鑰、私人秘鑰,在密碼系統(tǒng)中,密鑰(private key)是只為交換加密消息的團體所知的加密和解密的鑰匙,在密碼系統(tǒng)中,密鑰(private key)是只為交換加密消息的團體所知的加密和解密的鑰匙。在傳統(tǒng)的密鑰系統(tǒng)中,一把鑰匙會被通信者分享,以便每個人可以編加密碼并且解密信息。這一個系統(tǒng)的危險是,如果任一通訊團體失去鑰匙,或被偷,系統(tǒng)的安全性將被打破。最近的解決方案是聯(lián)合使用私人和公開密鑰。在這一個系統(tǒng)中,公開密鑰連同私人密鑰一起被使用。)
7.掌握正則表達式
8.能寫出詳細的注釋/文檔
9.基本的檢索查詢能力(google, stackoverflow, MDN)
10.單獨思考解決問題的能力, 團隊合作, 與人相處
專業(yè):
1.Javascript模塊化編程:AMD(Asynchronous Module Definition),意思就是"異步模塊定義",它采用異步方式加載模塊,模塊的加載不影響它后面語句的運行。所有依賴這個模塊的語句,都定義在一個回調函數中,等到加載完成之后,這個回調函數才會運行。
2.CommonJS API定義很多普通應用程序(主要指非瀏覽器的應用)使用的API,從而填補了這個空白。它的終極目標是提供一個類似Python,Ruby和Java標 準庫。這樣的話,開發(fā)者可以使用CommonJS API編寫應用程序,然后這些應用可以運行在不同的JavaScript解釋器和不同的主機環(huán)境中。Node.js就是基于這個庫開發(fā)的。
3.JS的call, apply, bind的區(qū)別與相識點,JS的數組操作foreach, filter, some, every......
4.了解functional.js 是模仿 Haskell 語言標準庫 Prelude 制作的函數式編程庫,還有還有curry化 :它是一種通過把多個參數填充到函數體中,實現(xiàn)將函數轉換成一個新的經過簡化的(使之接受的參數更少)函數技術。
5.知道高級HTML的API(File, Web Audio, WebSocket),都是什么鬼
6.CSS Preprocessors(css預處理),原本css不是編程語言,但是sass、less可以把css編程編程語言去寫,知道多種css預處理的優(yōu)缺點。
7.css框架,bootstrap屬于一個CSS和HTML的集合框架
8.對比canvas與SVG(矢量圖形)的概念
9.知道怎么把你的東西做成responsive, cross-browser support么?
10.SEO優(yōu)化,知道m(xù)eta data的含義。
11.掌握Ajax,restful, get, post知道如何與后臺交互。
12.知道各種JS框架(Angular, Backbone, Ember, React, Meteor, Knockout...), 能講出他們各自的優(yōu)點和缺點。熟悉并掌握一種或幾種框架
13.知道webkit(WebKit 是一個開源的瀏覽器引擎,與之相對應的引擎有Gecko(Mozilla Firefox 等使用)和Trident(也稱MSHTML,IE 使用)),會用瀏覽器的各種工具調試和debug代碼。
14.前端一般的工作流程(gulp, grunt, git, svn, npm),前端工程化的趨勢,產生了越來越多的構建工具。
15.知道怎么測試代碼,知道BDD, TDD, Unit Test, 知道怎么測試你的前端工程么(mocha, sinon, jasmin, qUnit..)。
16知道npm, V8, node, express, socket
17.(如果要用node)知道route, middleware, cluster, nodemon, pm2, server-side rendering
18.積極關注各種前端產品, 跟上變化的節(jié)奏, 也是身為一個前端程序員必備的技能之一. 知道ECMAScript 6里怎么寫class么? 知道react, flux, reflux么? 知道polymer, dart么? 知道m(xù)eteor么?
接下來讓我們來看一看各大公司的前端工程師的招聘要求
路書(硅谷一家創(chuàng)新公司)
資深前端工程師:
1. 有豐富前端經驗的工程師,深入剖析過各種效果的實現(xiàn)方式,并自己動手mock過,有github等開源項目經驗優(yōu)先。
2. 2-5年開發(fā)經驗,理解JS等框架的內核機制,有前端性能調優(yōu)經驗,熟悉主流瀏覽器的兼容性(雖然我們重點發(fā)展Chrome)。
3. 善于獨立解決問題,對服務器端和算法有了解,能夠全面考慮問題并提出最佳方案。
4. 技術人的堅持,有良好的代碼和注釋習慣,學習新技術的興趣,相信好的產品和好的代碼能改變世界。
5. 我們采用React JS框架,有該框架經驗者優(yōu)先考慮。Angular, Backbone, Ember, Meteor或其他類似框架的經驗亦是加分項。
以上
待補充......
那些我不懂的專業(yè)名詞,我全部百度了一遍。
這一年,我大二,我什么都沒有。