⑴ jQuery $(window).scroll事件出現問題
web前端開發 20 年變遷史,讓我們來看看這20年裡,web前端究竟經歷了哪些變革,web前端在這20年裡又有哪些突破和成就,怎麼樣看待這20年的web前端開發!
1990年,第一個Web瀏覽器誕生,而WWW的誕生直接拉開前端史的序幕。
從靜態頁面到Java,從依賴後端到自主開發,前端開發者從不被重視的「頁面仔」逆襲為如今很多前端工程師的薪資比後端還高,從前端技術由國外開發者主導到如今國內自主產生的小程序技術,我們走了20年。
了解web前端:http://www.cnite.cn/qianan/
作者 | 司徒正美
責編 | 伍杏玲
1990 年,第一個Web瀏覽器的誕生;1991 年,WWW誕生,這標志著前端技術的開始。
在這將近20年的前端發展史中,我們經歷了從最早的純靜態頁面,到Java跨時代的誕生;從PC端到移動端;從依賴後端到前端可自由打包開發;從早期的網景Navigator瀏覽器到現在各家瀏覽器百花齊放……
我們經歷了前端的洪荒時代、Prototype時代、jQuery時代 、後jQuery時期、三大框架割據時代,這其中均是由國外開發者主導,直到如今的小程序時代,才是中國開發者獨創的。
這是漫長的技術儲備下的成果,最終促成了良好的技術成長收獲。期間的前端發展之路,崎嶇艱難:
洪荒時代(1990~1994年)
在1990~1994年期間,前端界發生的大事有:WWW(World Wide Web)的誕生、瀏覽器的誕生、Java的誕生,沒有專業的前端,頁面全是由後端開發的。
1990年,萬維網之父蒂姆·伯納斯-李(Tim Berners-Lee)在NeXT電腦上發明了第一個Web瀏覽器。
1991年8月6日,Tim在alt.hypertext新聞組貼出了一份關於World Wide Web的簡單摘要,這標志了Web頁面在Internet上的首次登場。
最早的Web主要被一幫科學家們用來共享和傳遞信息,全世界的Web伺服器也就幾十台。由於僅是用來傳遞信息,從可視化方式或從傳遞數量上看,僅比電報強一點點。
當時還沒有Java,用的是純靜態的頁面。
1993年,CGI(Common Gateway Interface)出現了,人們可以在後端動態生成頁面。
Perl由於跨操作系統和易於修改的特性成為CGI的主要編寫語言。當然,CGI也支持其他支持標准輸入輸出和環境變數的語言編寫,比如Shell腳本、C/C++語言,只要符合介面標准即可。
但顯然,頁面的內容更新完全由後端生成,這帶來一個明顯的缺憾:每次更新都要整頁刷新,加上早期的網速情況,這個操作是非常慢的。因此針對這情況,人們從多方面著手改進:編寫語言的升級、瀏覽器的升級、HTML的升級。
1994年,網景公司成立,發布了第一款商業瀏覽器Navigator。自從這款瀏覽器面世後,微軟推出IE瀏覽器。雖說有競爭才有發展,但這也埋下了Java分裂的種子。
(1994 年,網景瀏覽器的截圖)
同年,PHP誕生。PHP能將動態的內容嵌入到HTML中,提升了編寫頁面的效率與可讀性,其性能也比一般的CGI高。PHP的界定符、循環語句等的發明,深刻影響了後來的ASP、JSP,乃致後來的Java前端模板引擎。
1994年10月,W3C小組也成立了,他們負責HTML的發展路徑,其宗旨是通過促進通用協議的發展。
待這一切就緒後, Java於1995年誕生了。
傳聞,網景工程師布蘭登·艾克(Brendan Eich)只花了10天時間設計出 Java 語言,近乎上帝七日創造世界那麼高效。但也因為工期太短的緣故,導致許多瑕疵,因此一直被正統傳序員所嫌棄,直到Ajax的出世,才讓人們找到理由忍受它的畸形。早期的瀏覽器都配有一個選項,用來禁止Java語言運行。
Java主要語言特徵[1]:
借鑒C語言的基本語法;
借鑒Java語言的數據類型和內存管理;
借鑒Scheme語言,將函數提升到"第一等公民"(first-class citizen)的地位;
借鑒Self語言,使用基於原型(Prototype)的繼承機制。
時下,靜態語言大行其道,類與介面被證明是構建大工程的最佳實踐,人們想不出沒有類的語言如何編寫業務。因此當時的微軟也打造了另一門運行於瀏覽器的語言——VB。
如果繼續細探Java的能力,你會發現它早期真的非常空洞,一門沒有靈魂的語言,沒有包管理機制,也沒有像Java與C++那樣的打輔助用的SDK,內置的方法也屈指可數。比如說數組方法,早期只有push、pop、shift、unshift、splice、slice、sort、reverse、concat、join等操作。動態調用方面,Function的apply、call操作還沒有出現!
早年的偷懶,導致後來不得不補課:到了2019年,數組上的原型方法,是原來3倍。
除了方法缺乏,還有性能問題,大家討論用eval還是Function,用哪種循環方式,用parseInit還是~~,就是為了那一點點的性能提升。例如jsperf.com,就是一個專門研究Java性能的網站。
因此Java誕生後,其兩大任務就是完善語言特性與提高性能。這兩座大山分別由著名的prototype.js與jQuery來搬掉。
在搬掉之前,前端界還有一個曲折實踐——第一次瀏覽器戰爭,並由其發展而來UA嗅深技術。
瀏覽器戰爭(1994~2005年)
瀏覽器戰爭一共打了三場,IE瀏覽器vs網景瀏覽器、IE瀏覽vs火狐瀏覽器、IE瀏覽器vs谷歌瀏覽器。
第一場瀏覽器之戰打得尤其激烈。
微軟的IE瀏覽器發布於1994年,但此時的網景已經佔領絕對優勢。微軟在落後的情況,反編譯Netscape的源碼,推出IE與J。但是由於Bug非常多,大家不願意為IE開發網站,因此發掘出UA,專門過濾掉IE瀏覽器。
UA即Navigator.userAgent ,是用一個字元串來記錄用戶當前運行在什麼操作系統與瀏覽器中。當前IE3的UA是這樣的:
Mozilla/2.0 (compatible; MSIE 3.02; Windows 95)
程序判斷UA信息,假如發現當前運行的環境是IE瀏覽器的話,就提示用戶用網景瀏覽器打開。因此微軟不得不讓自己的UA盡量偽裝成網景的UA,欺騙用於檢測UA的腳本,達到IE瀏覽器可以跑這些網站的目的。
最終,第一次瀏覽器之戰以微軟勝利,Netscape被美國在線收購,而落下帷幕。
第一次瀏覽器戰爭年代非常久遠了,但其結局告訴我們,其實技術強弱並不重要。那時技術保護並沒有這么重視,否則微軟的行為可能會被告(谷歌的openSDK僅抄襲幾十行代碼,被Oracle公司訴訟賠88億)。
第一次瀏覽器戰爭帶來了一個問題:盡管當時有ECMA-262(Java規範文檔)與W3C(HTML與CSS的規範文檔),微軟卻沒有照規范來實現Java、HTML與CSS,導致前端兼容問題的誕生。所以CSS Hack、瀏覽器判定、特性偵測,這些技術就應運而生。
這個時代最著名的人物是Dean Edwrad,他是最早的近乎完美解決事件綁定的兼容性大神,其addEvent()內置於jQuery最早的版本中。jQuery的作者John Resig看到其超強的技藝,最後放棄推出大而全的框架,專攻選擇器引擎。
Dean Edwrad的IE7.js、IE8.js是早期處理瀏覽器兼容的良葯,可以說是一切Polyfill[2]的起源。他寫了大量的Hack, 比如在IE如何測量元素的寬高,許多操作DOM的兼容。
這時期太早,中國基本沒有參與這次瀏覽器戰爭。
Prototype時期(2005~2009年)
Prototype是Sam Stephenson寫的一個非常優雅的Java基礎類庫。他是Ruby的大牛,因此Prototype的許多方法名都是來自Ruby界。
Sam Stephenson最大的貢獻是發掘了Prototype與創造了Function.prototype.bind,在數組上也寫了一大堆方法,其中許多被標准化了。
同期的MooTools也是Prototype的方法,當時,大家還在前端論壇為這個爭吵。還有前端工程師喜歡在當時很出名的前端聚集地——藍色理想(現淪為設計師網站)上,討論如何扒腳本、分享彈層、日歷等小組件的技術,這在當時已經是非常了不起的事。
Prototype當時還解決兩大問題:動畫特效與Ajax請求。動畫特效是由aculous提供,我們現在所熟知的各種緩動函數,各種特效的命名與大致的運行形態,都是由aculous確定下來的。
在早期,谷歌就開始使用iframe實現頁面刷新。
2005 年2月,傑西·詹姆士·賈瑞特(JesseJamesGarrett)發表了一篇名為《Ajax:一種Web應用程序開發的新方法》的文章後,Ajax被挖掘出,大家才開始重視起這技術的應用。
例如IE下的ActiveXObject("Microsoft.XMLHTTP"),這是IE創建Ajax引擎的。假如當時有工程師開發出一個核心庫,如果不包含Ajax的封裝,便不好意思發布出來。
一些Ajax書藉
當時前端開發模式是選擇一個核心庫,找一些組件,或者扒別人的腳本進行開發
Prototype的源碼挺好理解的,代碼量也少,只有5000多行,裡面的每個方法也很易扒出來,因此一些大公司總有高手能創造自己的Prototype。
但前端開發還是離不開後端,因為前端沒有模塊機制,當時我們需要用PHP進行打包。打包是雅虎34條軍規之一,可以減少請求數。打包的同時也可以進行混淆,防止代碼小偷來窺探。
N年前,前端面試必問的題目:
模塊化的雛型, 在注釋中標注它的依賴
這個時期,還沒有前後端分離,可國內一些帶著深厚後端背景的高手已經入場。
jQuery 時期(2009~2012年)
2006年,jQuery發布,它當時的競爭對手很多:Dojo、Prototype、ExtJS、MooTools。
所以那時jQuery的宣傳口號僅能說是它的性能上升了100%、200%、300%。直到2009年,Sizzle選擇器引擎研發成功,jQuery才取得壓倒性的優勢。
當時前端界首要面對的是瀏覽器兼容性問題,jQuery在處理DOM兼容上真是知微見著, 發掘出大量的DOM/BOM兼容方案(例如Dean Edwrad的addEvent(), IE的px轉換方案,domReady的doScroll方案,globalEval的兼容方案等)
jQuery也打破了前端開發者的編程思維,之前是按照後端的開發思路來的:做一個業務就先封裝一個類,有了這個類後,再想辦法傳入一個DOM,然後再通過類方法操作DOM。而jQuery是DOM為中心,開發者可以選一個或多個DOM,變成jQuery對象,然後進行鏈式操作。當時為了改變用戶的思維,國內的高手寫了不少文章來引導大家。
其次,開發者們已開始注重前後端分離,並要求不能污染Object原型對象,不能污染window全局變數。這樣,jQuery只佔用兩個全局變數。
再次,jQuery非常輕量級,採用Dean Edwards編寫的Packer壓縮後, 大小不到30KB。並且裡面實現得非常精妙,以令人瞠目的手段解決各種兼容痼疾。
為了學習這些技巧,高手們翻了一遍遍jQuery的源碼,所以網上有大量關於其源碼詳解的書藉。甚至前端工程師在面試時也會被考到jQuery的源碼實現,這樣,jQuery在國內更加流行。
jQuery的流行間接帶來以下的發展:
促使人們對CSS1~CSS3選擇器的學習
促進了瀏覽器原生選擇器引擎document.querySelectorAll、Element.matches的誕生
提高人們對domReady(DOMContentLoaded事件)的認識
促進了Promise與requestAnimateFrame 的誕生
最重要的是降低前端門檻,讓更多人進入這行業,前端工程師的隊伍越來越壯大。
這樣的話,不斷涌現出優秀的工程師,他們創造了大量jQuery插件與UI庫。為後jQuery時代,人們研發前端模塊載入、統一非同步機制、 打造大型MVC框架, 甚至伸向後端,接管打包腳本而發明Node.js,來騰出大量時間。
這個時期涌現了大量jQuery-like的庫,其中最著名的是Zepto.js。Zepto的出現也標志著我們進入移動互聯網時代。那時配套出的著名庫還有iScroll、fastclick、Lazy Load、Modernizr、fullPage。
jQuery的鏈式操作風麾一時,也帶來許多問題,當Ajax出現依賴時,就不可避免就出現回調地獄。因此針對這方面的討論,誕生Deffered與Promise。有關回調地獄的討論,在後來講Node.js非同步處理時,將會再一次熱烈地討論。因此太陽下沒有新事,我們總是遇到相似的問題。
jQuery如此多的選擇器也法維護,隨著越來越多人涌現這行業,頁面的交互也越來越復雜,從Web Page向Web App進化,新的趨勢帶來新的開發方式。
後jQuery時期(2012~2016年)
這時期以RequireJS的誕生為起點,以RN的出現結束。同時解決了前端的模塊定義問題,模塊打包問題(通過Node.js),Java不依靠其他語言創造了一套自己的工具鏈。
jQuery的出現讓前端工程師開發更加輕松,假如工程師想實現一個功能,現搜索出一個jQuery插件來實現。那時候大家在前端網站就整天介紹jQuery插件,很少討論一些底層的實現。
前端工程師通常編寫一個頁面,會引入十多個乃至幾十個jQuery插件,頁面上塞滿了標簽。眾所周知,瀏覽器是單線程,的載入,會影響到頁面的解析與呈現,導致著名的白屏問題(當時前端用力過勐,body中的所有東西都是動態生成的)。
jQuery另一個問題是全局污染,由於插件的質量問題,或者開發的素質問題,這已經是IIEF模塊或命名空間等傳統手段無法解決了。
於是一些優秀的前端工程師們決定從取經後端,引入模塊機制。早期,這種模塊機制在Dojo、EXT這些框架中都是內置的,但是顯然說服不了另一個框架的用戶用對方的模塊機制,於是有人立志要統一這種模塊定義方式,成立了CommonJS。
但不料,CommonJS內部也有派系,誰也說不服對方。終於有一個人忍不住自己獨立開發出RequireJS,其模塊規范即為AMD。 AMD最大的優勢是它支持各種插件,且簡單明了,並且提供shim機制載入以非AMD規范編寫的Java代碼。
但在CommonJS誕生很久一段時間後,在後端的Node.js出現時才有用武之地。而國內,則流行另一種規范風格,背靠阿里的大旗,有人推出了SeaJS,號稱其規范為CMD。其實無論國內還是國外,都產生許多模塊載入器,但最後還是被淘汰了,規范一個就夠了,不宜過多。
但是前端工程師的創造力就是這么驚人,從無到有,再到泛濫成災,一年足矣。這可能與前端代碼是開源的原因。最後有人統一了前兩種規范(AMD、Node.js模塊),同時還支持老式的「全局」變數規范。
自此,Java開發模式煥然一身了,大家只要在代碼外麵包一層就可以全世界通用,不用提心全局污染的問題。
其次,jQuery開發者需要解決大段HTML的生成問題,之前jQuery有$.html, $.append, $before等方法,可以將一大段符合HTML結構的字元串轉換成DOM再插入到頁面上。
但現在我們想分離出來,讓HTML獨立到不同的文件中,然後插數據,這就是前端模板。前端模板的情況與模板規范一樣,從沒有到多如芝麻的境地。這時篩選一個好用且性能高的模板是一件讓前端工程師頭疼的問題,那時網上有許多評測文章來介紹它們。
前端模板技術可以用一個公式來描述:
HTML = template(vars)
有了前端模板後,又誕生了前端路由,基於它們,人們發明一個新詞彙SPA。作為這個時代的尾聲,來自Ruby界的高手Ryan Dahl發明了Node.js。 前端工程師們歡唿:可以不用傳統的後端就能自己寫一個網站了!
Node.js的發展就不詳述上,很快它就冒出海量模塊、路由、狀態管理、資料庫、MVC框架都有了。這時,前端就缺自己的MVC框架了。Node.js轉眼就十歲生日了。
著名的MEAN架構,是Java全棧開發的先鋒。當時涌現了大量的MVC與MVVM框架。最先火起來的是Backbone.js,使用純正的MVC模型, Backbone.js是jQuery最後的支持者,它強依賴於jQuery。
Backbone.js的作者還搞了另一套編譯語言Coffee, 裡面的箭頭函數、類機制、 解構賦值等語法糖都深深影響了後來的ES6。
接著下來是谷歌的Angular,微軟的Knockout.js,蘋果的Ember.js這三個MVVM框架,MVVM就是比MVC多一個數據綁定功能,但這數據綁定功能是非常難實現。Knockout是使用函數代替屬性的技巧實現,它的設計影響到後來的Mobx;Ember.js是基於Object.defineProperty;Angular是將函數體轉譯成setter()、getter()函數。
大公司的介入,對個人開發者影響是很大,畢竟大家都愛迷信大公司,因此局面一下子就穩定下來。大公司還帶來了全新的開發模式,早期都是找一個核心庫,再搜刮一大堆插件,然後自己寫業務代碼,最後後端打包。
大公司將後端開發經驗挪用過來,用Node.js開發了一套CLI,裡麵包含了腳手架生成, 打包腳本、語法風格檢測、環境變數插入,代碼復雜度檢測,代碼提交時自動跑單元測試, 圖片與JS壓縮等功能。ESLint、JSLint、JSHint、CSS Lint、 htmllint等就是那時期出現的。
但CLI的出現導致了前端的分裂,以前大家都使用jQuery,但自CLI幫你建好項目的那一刻起,就將你劃歸某一子陣營,你是Angular?Ember.js?還是jQuery?對了,jQuery沒有大公司支撐的陣營被快速邊緣化。
對於個人開發者,他們是沒有能力開發這么功能完備的CLI,於是出現了Code Climate、Travis CI、CircleCI這樣的平台。它們的出現標志著jQuery小作坊時代的終結了。
CircleCI官網
前端開發者也出現分化:有些人轉向後端,出現了CNode的門戶網站。另外一些人開始搞工程化。一時間出現上百種構建工具,出名的有Grunt、Gulp、FIS3、webpack、 Rollup、npm-。
你方唱罷我登場,這些構建工具均會經歷時代的考驗,如大浪淘沙般,最後存活得僅為寥寥。
因此在這場工程化得盛宴中,註定把許多低層次的jQueryer淘汰掉。jQueryer在空閑之餘培育出的前端模板、前端路由、MVC框架、模塊載入器、Node.js構建工具,卻不料最終成為它自己的挖墓人。
jQuery的時代一去不返了,再沒有人關心拖堂拖了N年的Bootstrap 4終於發布了,沒有人知道jQuery3.5的瘦身計劃,也沒有人問jQuery的源碼,漸漸地,大家不關注jQuery的工具鏈了。
三大框架割據時代(2016~至今)
React是突然爆發的,雖然它是與Angular是同時期發布,但因為JSX怪異的語法讓人們遠離它。此時已經進入移動互聯網的中期,大公司都有自己的App,或者基於原生,或者基於Hybird。
Hybird是用WebView載入一個網站或一個SPA。
由於原生成本太貴,需要招兩套班子,一套安卓的,一套iOS的;而Hybird則一直存在性能問題。於是在2017年,Facebook推出了React Native(RN)。
RN的性能不比原生差多少,比Hybird能好些, 其次使用JSX開發界面比原生的快; RN 只需要低成本的前端開發人員就能上手了。中國國內經過瀑布流(圖片導購)、團購、P2P、區塊鏈等全新商業模式的開發浪潮後,前端人員數量大增。現在,他們只要稍微培訓就可以轉型為App開發。
在開發RN的過程中,人們開始了解React一系列的優勝之處。比如JSX背後的虛擬DOM技術,雖然事實證明虛擬DOM不會帶來性能的巨大優勢,但保證了你怎麼寫其性能不會太差。
React為了引入JSX,必須需要引入編譯,這又間接促成Babel與webpack的壯大。尤其是Babel, 讓我們在很舊的瀏覽器中使用非常新的語法,甚至一些還沒有定案的語法。React從14升級到React 15,強制使用class語法,讓這個推了好久的語法糖終於大規模落地。
之前如果Java想使用類,只能自己模擬類,由於沒有官方的實現,只能任由各優秀工程師發揮。而普通人想用好類,需要了解很復雜的Prototype機制。
現在只用幾個新關鍵字就可以得到這一切。
如果對比Python 2與Python 3間的升級,Java實在太辛運了!針對CSS邏輯功能過弱的問題,我們也有了新的解決方案:Less、Sass、PostCSS與CSS Moles!
谷歌在發布Angular的同時,也發布了一個叫Polymer的框架,那時它想推廣一種叫Web Components的瀏覽器自定義組件技術。這其實是微軟在IE5就玩剩的HTC技術的升級版。雖然它沒有火起來,但它將、Style、Template三種內容混在一個文件的設計,啟發一個留美華人,再結合當時的Backbone.js、Angular等設計,Vue.js橫空出世。目前,這是國人最成功的前端框架了。
除此之外,國人也弄了好幾套迷你React框架與迷你Vue框架。這有點像jQuery時代,大家瘋狂做迷你jQuery框架一樣。
總的來說,最有創造力的是React團隊,做出狀態管理器、CSS-in-JS、Flow靜態類型檢查、devTool、Fetch、前後端同構、Fiber、suspend、並發渲染等名詞層出不窮。其中,狀態管理器擁有上百套, CSS-in-JS也擁有上百套,Flow則讓前端嘗鮮到介面編程的好處,間接推動發Type發展。這三大框架無法比拼個一二出來:Vue.js有國人的擁躉,React與Angular有大公司光環。
三大框架的纏斗從PC領域擴展到移動端:React有RN, Vue.js有Weex,Angular有ionic。想當年我們為了兼容瀏覽器,攢了一大堆瀏覽器偵探的Hack,全部貶值為垃圾了。
在這時期,一種全新的後端渲染崛起,稱之為前後同構,既擁有早期SEO的功效,又能復用大量的業務邏輯。隨著國內移動互聯網的發展,獲客成本提高,各種有效的商業模式都進入紅海,但只有頭部用戶能賺到錢,馬太效應越來越嚴重,純粹的技術解決方案已經無法滿足商業訴求了。
小程序時代(2017~至今)
小程序時代與三大框架的時代幾乎重合,但是出自不同一批人,決戰的平台也不一樣。
一直以來前端技術都是由國外開發者主導的,即便是Vue.js也是由美國的華人創造的。但是國內外的技術更新是存在代差,國內通常延期兩三年,這個時間差可以讓一些模仿者得以生存(如SeaJS、FIS、avalon)。但隨著封閉的時間越來越長,國內肯會也會誕生自己的轉有物種。小程序就是其中之一。
小程序的出現有著明顯的商業訴求,因為馬太效應,一些超大流量的App誕生了。這些大流量App集成了許多功能,但顯然公司再多員工,也無法所有功能全是自己弄,於是產生小程序這種「外包」的手段。
小程序是國內前端技術的一次厚積薄發:底層運行的迷你React的虛擬DOM, 內置組件是使用Web Component,API來源於Hybird的橋方法,打包使用webpack,調試台是Chrome console的簡化版, WXML、WXSS的語法高亮也應該是webpack或VS Code的插件, 模塊機制是Node.js的CommonJS……其中最值得一提的是微信開發者工具,以後開發者工具成了各種小程序/快應用的標配。
但微信小程序一開始的復用能力非常弱,沒有類繼承,不能使用npm, 不支持Less、Sass, 因此基於它的轉譯框架就應運而生。第一代譯轉框架是wept、WePY、mpvue,它們無一例外是Vue風格的。因為WXML的模板指令與Vue非常相似,只是改一下就能兼容。當時也出現了一個MINA的框架,聽說是微信團隊開發的,可以單獨架起Node.js後端,讓小程序運於瀏覽器中,方便做單元測試。
第一代轉譯框架主要是基於Template標簽實現組件機制,自定義組件機制是很後的事了。這就造成了利用第一代轉譯框架編寫的小程序項目很難升級。那時候是個人開發者的天堂,這些框架都是某一大牛獨力開發的。
第二代轉譯框架是大公司主導的,因為需要兼容的小程序越來越多,網路、支付寶、位元組跳動、小米、華為等公司都推出自己的小程序和快應用。個人開發者很難憑個人力量去開發轉譯框架,這時候各大團隊紛紛推出自己的輪子:如京東的Taro、滴滴的Chameleon網易的Megalo、去哪兒網的nanachi、網路的Okam等。
在這個時期,Angular顯然落伍了,一是Angular升級太快,國內的高手還沒有消化好,新一版的Angular又發布了。二是國內缺乏迷你Angular的輪子,導致龐大的Angular無法塞進小程序中。
國外谷歌發布了Flutter跨平台轉譯框架,但是它的編寫語言是Dart,它也無法跨界到小程序中。
未來不僅國內一線巨頭爭奪小程序,二三線的巨頭也可能會加入小程序的混戰中,例如有人稱360也在打造自己的小程序平台。小程序這種新的流量變現模式深刻地影響了國內的互聯網布局。
結語
當初Java被誤解為最糟糕的語言,時至今日它是最流行的語言:GitHub 60%的開源項目都是與Java有關。
以前,從事這行業的人被稱為頁面仔,現在他們的起薪有的比PHP、JAVA、C++等後端還高。甚至有人說,「任何可以使用Java來編寫的應用,最終會由Java編寫。」
我們前端開發者觸及的領域不僅僅是瀏覽器,還可以做後端,做桌面端,做手機端,做小程序端,前端開發者的性價比越來越高,越來越重要。可謂是時代造英雄。
筆者有幸成為前端開發者大隊伍中的一員,也堅信我們前端開發者以後的路會越來越寬,越來越好走。
資料:
[1]:計算機和編程語言的發展歷史
[2]:Polyfill是一塊代碼(通常是 Web 上的 Java),用來為舊瀏覽器提供它沒有原生支持的較新的功能。
作者簡介:司徒正美,擁有十年純前端經驗,著有《Java框架設計》一書,去哪兒網公共技術部前端架構師。愛好開源,擁有mass、Avalon、nanachi等前端框架。目前在主導公司的小程序、快應用的研發項目。
本文鏈接:http://www.cnite.cn/qianan/share/20198308.html
⑵ 家用安防系統發展歷程
據前瞻網2013-2017年安防行業研究報告顯示安防行業在中國有30多年的發展歷史,以最早的文博領域的應用為起源,主要服務於文博、金融、公安等重點要害部門。近幾年,伴隨著行業的高度發展,社會經濟的進步,人們生活水平提高,安防更多地走進家庭,貼近生活,除了傳統的防盜門、保險櫃,越來越多的高科技、電子安防產品載入智能家居,服務美好生活。
家用安防系統在國內市場出現是在新世紀以後,起初發展速度較為緩慢。近幾年,隨著移動技術的發展,尤其是WIFI、3G等高速無線網路的普及,家用安防市場才迎來真正的發展。目前市場規模已超過20億元,雖然整體規模偏低,但卻是安防領域增速最快的一個市場,已經吸引了包括聯想、海爾等一系列知名企業加入其中。
可以參考一下中國安防網一篇文章 報道:
一、智能家居的基本概念
智能家居是以住宅為平台,利用綜合布線技術、網路通信技術、安全防範技術、自動控制技術、音視頻技術將家居生活有關的設施集成,構建高效的住宅設施與家庭日程事務的管理系統,提升家居安全性、便利性、舒適性、藝術性,並實現環保節能的居住環境。
智能家居集成是利用綜合布線技術、網路通信技術、安全防範技術、自動控制技術、音視頻技術將家居生活有關的設備集成。由於智能家居採用的技術標准與協議的不同,大多數智能家居系統都採用綜合布線方式,但少數系統可能並不採用綜合布線技術,如電力載波,不論哪一種情況,都一定有對應的網路通信技術來完成所需的信號傳輸任務,因此網路通信技術是智能家居集成中關鍵的技術之一。安全防範技術是智能家居系統中必不可少的技術,在小區及戶內可視對講、家庭監控、家庭防盜報警、與家庭有關的小區一卡通等領域都有廣泛應用。自動控制技術是智能家居系統中必不可少的技術,廣泛應用在智能家居控制中心、家居設備自動控制模塊中,對於家庭能源的科學管理、家庭設備的日程管理都有十分重要的作用。音視頻技術是實現家庭環境舒適性、藝術性的重要技術,體現在音視頻集中分配、背景音樂、家庭影院等方面。
又稱智能住宅。通俗地說,它是融合了自動化控制系統、計算機網路系統和網路通訊技術於一體的網路化智能化的家居控制系統。智能家居將讓用戶有更方便的手段來管理家庭設備,比如,通過家觸摸屏、無線遙控器、電話、互聯網或者語音識別控制家用設備,更可以執行場景操作,使多個設備形成聯動;另一方面,智能家居內的各種設備相互間可以通訊,不需要用戶指揮也能根據不同的狀態互動運行,從而給用戶帶來最大程度的高效、便利、舒適與安全。
智能家居是在物聯網的影響之下物聯化體現。智能家居通過物聯網技術將家中的各種設備(如音視頻設備、照明系統、窗簾控制、空調控制、安防系統、數字影院系統、網路家電以及三表抄送等)連接到一起,提供家電控制、照明控制、窗簾控制、電話遠程式控制制、室內外遙控、防盜報警、環境監測、暖通控制、紅外轉發以及可編程定時控制等多種功能和手段。與普通家居相比,智能家居不僅具有傳統的居住功能,兼備建築、網路通信、信息家電、設備自動化,集系統、結構、服務、管理為一體的高效、舒適、安全、便利、環保的居住環境,提供全方位的信息交互功能,幫助家庭與外部保持信息交流暢通,優化人們的生活方式,幫助人們有效安排時間,增強家居生活的安全性,甚至為各種能源費用節約資金。
二、智能家居系統介紹
智能家居系統包含的主要子系統有:家居布線系統、家庭網路系統、智能家居(中央)控制管理系統、家居照明控制系統、家庭安防系統、背景音樂系統(如TVC平板音響)、家庭影院與物聯智能家居控制系統、多媒體系統、家庭環境控制系統等八大系統。其中,智能家居(中央)控制管理系統、家居照明控制系統、家庭安防系統是必備系統,家居布線系統、家庭網路系統、背景音樂系統、家庭影院與多媒體系統、家庭環境控制系統為可選系統。
在智能家居系統產品的認定上,廠商生產的智能家居(智能家居系統產品)必須是屬於必備系統,能實現智能家居的主要功能,才可稱為智能家居。因此,智能家居(中央)控制管理系統、家居照明控制系統、家庭安防系統都可直接稱為智能家居(智能家居系統產品)。而可選系統都不能直接稱為智能家居,只能用智能家居加上具體系統的組合表述方法,如背景音樂系統,稱為智能家居背景音樂。將可選系統產品直接稱作智能家居,是對用戶的一種誤導行為。
在智能家居環境的認定上,只有完整地安裝了所有的必備系統,並且至少選裝了一種及以上的可選系統的智能家居才能稱為智能家居。
根據2012年4月5日中國室內裝飾協會智能化委員會《智能家居系統產品分類指導手冊》的分類依據,智能家居系統產品共分為20個分類:控制主機(集中控制器);智能照明系統;電器控制系統;家庭背景音樂;家庭影院系統;對講系統;視頻監控;防盜報警;電鎖門禁;智能遮陽(電動窗簾);暖通空調系統;太陽能與節能設備;自動抄表;智能家居軟體;家居布線系統;家庭網路;廚衛電視系統;運動與健康監測;花草自動澆灌;寵物照看與動物管制。
結合安防產品和技術的應用情況,智能家居主要具有以下功能:
(一)報警及聯動功能
安裝門磁、窗磁,防止非法入侵,管理系統可通過安裝在住戶室內的報警控制器得到信號從而快速接警處理。報警聯動控制可在室內發生報警時,系統向外發出報警信息的同時,自動打開室內的照明燈光、啟動警號等。
(二)緊急求助功能
室內的報警控制器具有緊急呼叫功能,管理系統可對住戶的緊急求助信號做出回應和救助。
(三)報警管理顯示功能
離家模式即防盜報警狀態,防止非法入侵,管理系統可實時接收報警信號,自動顯示報警住戶號和報警類型,並自動進行系統信息存檔。
(四)預設報警功能
智能安防系統可預設報警電話。
(五)設/撤防聯動控制
在家設防模式,安全防範系統可聯動切斷某些家用電器的電源。在家撤防模式,部分照明燈自動打開,門磁和窗磁離線,室內煙感探測器和廚房可燃氣體探測器仍為報警模式。
(六)警情後控制處理
當家中有非法入侵者或者煤氣泄漏時系統會自動撥打電話、發送簡訊、彩信、抓拍圖片並E-mail到指定用戶手機!用戶收到電話簡訊時可以第一時間用手機電腦查看家中監控畫面並控制其家中家電設置、布防撤防等操作。
三、智能家居的主要功能
(一)智能視頻監控
隨著人們居住環境的升級,人們越來越重視自己的個人安全和財產安全,對人、家庭以及住宅的小區的安全方面提出了更高的要求;同時,經濟的飛速發展伴隨著城市流動人口的急劇增加,給城市的社會治安增加了新的難題,要保障小區的安全,防止偷搶事件的發生,就必須有自己的安全防範系統,人防的保安方式難以適應我們的要求,智能安防已成為當前的發展趨勢。
視頻監控系統己經廣泛地存在於銀行、商場、車站和交通路口等公共場所,但實際的監控任務仍需要較多的人工完成,而且現有的視頻監控系統通常只是錄制視頻圖像,提供的信息是沒有經過解釋的視頻圖像,只能用作事後取證,沒有充分發揮監控的實時性和主動性。為了能實時分析、跟蹤、判別監控對象,並在異常事件發生時提示、上報,為政府部門、安全領域及時決策、正確行動提供支持,視頻監控的「智能化」就顯得尤為重要。
優點:
1、安全:安防系統可以對陌生人入侵、煤氣泄漏、火災等情況提前及時發現並通知主人;
2、簡單:操作非常簡單可以通過遙控器或者門口控制器進行布防或者撤防。
3、實用:視頻監控系統可以依靠安裝在室外的攝像機可以有效的阻止小偷進一步行動,並且也可以在事後取證給警方提供有利證據。
(二)智能視頻共享
視頻共享系統是將數字電視機頂盒、DVD機、錄像機、衛星接收機等視頻設備集中安裝於隱蔽的地方,系統可以做到讓客廳、餐廳、卧室等多個房間的電視機共享家庭影音庫,並可以通過遙控器選擇自己喜歡的音源進行觀看,採用這樣的方式既可以讓電視機共享音視頻設備,又不需要重復購買設備和布線,既節省了資金又節約了空間。
優點:
1、簡單:布線簡單,一根線可以傳輸多種視頻信號,操作更方便。
2、實用:無論主機在哪裡,一個遙控器就可以對所有視頻主機進行控制。
3、安全:採用弱電布線,網線傳輸信號,永不落伍,即使以後升級還是用網線。
(三)可視對講系統
可視對講產品已比較成熟,成熟案例隨處可見,這其中有大型聯網對講系統,也有單獨的對講系統,比如別墅用的,其中有分一拖一、二、三等;一般實現的功能是可以呼叫、可視、對講等功能,但是通過「品奇居」的整合部已經將很多不同平台的產品實現了統一,增強了整套系統控制部分的優勢,讓室內主機也可以控制家裡的燈光和電器了。
四、智能家居的發展歷程
智能家居作為一個新生產業,目前處於一個導入期與成長期的臨界點,市場消費觀念還未形成,但隨著智能家居市場推廣普及的進一步落實,培育起消費者的使用習慣,智能家居市場的消費潛力必然是巨大的,產業前景光明。正因為如此,國內優秀的智能家居生產企業愈來愈重視對行業市場的研究,特別是對企業發展環境和客戶需求趨勢變化的深入研究,一大批國內優秀的智能家居品牌迅速崛起,逐漸成為智能家居產業中的翹楚!智能家居至今在中國已經歷了近12年的發展,從人們初最初的夢想,到今天真實的走進我們的生活,經歷了一個艱難的過程。
智能家居在中國的發展經歷的四個階段,分別是萌芽期/智能小區期、開創期、徘徊期、融合演變期。
(一)萌芽期/智能小區期(1994年-1999年)
這是智能家居在中國的第一個發展階段,整個行業還處在一個概念熟悉、產品認知的階段,這時還沒有出現專業的智能家居生產廠商,只有深圳有一兩家從事美國X-10智能家居代理銷售的公司從事進口零售業務,產品多銷售給居住國內的歐美用戶。
(二)開創期(2000年-2005年)
國內先後成立了五十多家智能家居研發生產企業,主要集中在深圳、上海、天津、北京、杭州、廈門等地。智能家居的市場營銷、技術培訓體系逐漸完善起來,此階段,國外智能家居產品基本沒有進入國內市場。
(三)徘徊期(2006-2010年)
2005年以後,由於上一階段智能家居企業的野蠻成長和惡性競爭,給智能家居行業帶來了極大的負面影響:包括過份誇大智能家居的功能而實際上無法達到這個效果、廠商只顧發展代理商卻忽略了對代理商的培訓和扶持導致代理商經營困難、產品不穩定導致用戶高投訴率。行業用戶、媒體開始質疑智能家居的實際效果,由原來的鼓吹變得謹慎,市場銷售也幾年出來增長減緩甚至部分區域出現了銷售額下降的現象。2005年-2007年,大約有20多家智能家居生產企業退出了這一市場,各地代理商結業轉行的也不在少數。許多堅持下來的智能家居企業,在這幾年也經歷了縮減規模的痛苦。正在在這一時期,國外的智能家居品牌卻暗中布局進入了中國市場,目前活躍在市場上的國外主要智能家居品牌都是這一時期進入中國市場的,如羅格朗、霍尼韋爾、施耐德、Control4等。
(四)融合演變期(2011-2020年)
進入2011年以來,市場明顯看到了增長的勢頭,而且大的行業背景是房地產受到調控。智能家居的放量增長說明智能家居行業進入了一個拐點,由徘徊期進入了新一輪的融合演變期。
接下來的三到五年,智能家居一方面進入一個相對快速的發展階段,另一方面協議與技術標准開始主動互通和融合,行業並購現象開始出來甚至成為主流。
接下來的五到十年,將是智能家居行業發展極為快速,但也是最不可琢磨的時期,由於住宅家庭成為各行業爭奪的焦點市場,智能家居作為一個承接平台成為各方力量首先爭奪的目標。誰能最終勝出,我們可以作種種分析,但最終結果,也許只有到時才知。但不管如何發展,這個階段國內將誕生多家年銷售額上百億元的智能家居企業。
五、智能家居發展趨勢
《物聯網發展專項資金》、《智能家用電器的智能化技術通則》、《中國物聯網產業發展年度藍皮書》、《寬頻網路基礎設施「十二五」規劃》、《智能建築設計標准》等一系列與智能家居相關政策的陸續出台,讓智能家居產業切實有效地落到實處。
近幾年來,智能家居在一步一步發展過程中,已經有逐漸形成一個行業的趨勢,可用的、接近現實需求的產品不斷增加,企業也在這些方面積累了很多經驗。如何建立一個高效率、低成本的智能家居系統已成為當前社會一個熱點問題。而一系列標准化制定工作的展開,為中國智能家居的發展提供了一個開放的標准化平台,指明了智能家居研究領域正確的發展方向。
2012北京安防展上智能家居展館的盛況依然讓人記憶猶新,最明顯感受到的是,智能家居逐漸從概念落實到用戶體驗,以往的智能產品大多數是以家電控制、燈光控制、窗簾控制為產品出發點,而經過這幾年的技術發展,特別是物聯網與雲計算的迅速崛起,給智能家居行業帶來了全新的面貌,智能家居的定義也變得愈加廣闊。智能家居已經不再僅限於視頻監控、防盜報警、智能控制等普通的安防,通過物聯網與雲計算結合整體系統平台的應用,把衣食住行的信息植入到智能家居系統,智能家居將囊括人們生活中所有環節,包涵生活健康、日常服務,已經由簡單的安全層面往更高需求延伸,打造出了全新的智能家居系統。智能家居企業也逐步從單獨的產品線向綜合的產品體系、整體解決方案開始過渡。
而在智能家居細分領域,智能家電、智能照明、樓宇對講、家居控制、防盜報警等,其表現也可圈可點。幾大巨頭如海爾、長虹、海信等集團都不斷推出各自的智能新產品,尤其是智能電視板塊,夾雜著3D、高清等概念。
另外,智能終端的蓬勃發展,Android系統的崛起,蘋果產品的瘋狂,讓智能手機、平板電腦等電子產品迅速融入到人們的生活中,同時帶來家居控制的快速發展。施耐德電氣近段時間對智能家居無線照明控制系統的大力推廣,更是讓智能照明控制領域暗潮洶涌。
據行業資深人士分析,物聯網將會激活5000億的市場。各地「物聯網」、雲計算項目的紛紛上馬,給智能家居帶來無限擴容空間。中外智能家居企業傾力打造「智能家居」產品,提升其競爭力,也逐漸獲得了消費者的認知。中國本土的安防企業、家電企業、運營商、IT通信企業等亦集體投身智能家居的生產研發,最明顯的是以前端顯示為主的雲電視的崛起。運用雲計算、雲存儲等技術對現有應用進行升級的智能化雲設備,擁有的海量存儲、遠程式控制制、軟體更新和內容無限擴充等眾多應用優勢,目前已經受到消費者的普遍肯定。
智能家居四大規劃剖解
(一)家庭自動化
家庭自動化系指利用微處理電子技術,來集成或控制家中的電子電器產品或系統,例如:照明燈、咖啡爐、電腦設備、保安系統、暖氣及冷氣系統、視訊及音響系統等。家庭自動化系統主要是以一個中央微處理機(CentralProcessorUnit,CPU)接收來自相關電子電器產品(外界環境因素的變化,如太陽初升或西落等所造成的光線變化等)的信息後,再以既定的程序發送適當的信息給其它電子電器產品。中央微處理機必須透過許多界面來控制家中的電器產品,這些界面可以是鍵盤,也可以是觸摸式熒幕、按鈕、電腦、電話機、遙控器等;消費者可發送信號至中央微處理機,或接收來自中央微處理機的訊號。
家庭自動化是智能家居的一個重要系統,在智能家居剛出現時,家庭自動化甚至就等同於智能家居,今天它仍是智能家居的核心之一,但隨著網路技術有智能家居的普遍應用,網路家電/信息家電的成熟,家庭自動化的許多產品功能將融入到這些新產品中去,從而使單純的家庭自動化產品在系統設計中越來越少,其核心地位也將被子家庭網路/家庭信息系統所代替。它將作為家庭網路中的控制網路部份在智能家居中發揮作用。
(二)家庭網路化
首先大家要把這個家庭網路和純粹的「家庭區域網」分開來,它是指連接家庭里的PC、各種外設及與網際網路互聯的網路系統,它只是家庭網路的一個組成部份。家庭網路是在家庭范圍內(可擴展至鄰居,小區)將PC、家電、安全系統、照明系統和廣域網相連接的一種新技術。家庭網路加入了很多家庭應用的產品和系統,如家電設備、照明系統、家庭影院、音樂等。家庭網路的發展趨勢是將智能家居中其它系統融合進去,最終實現「享受智慧生活、完美智慧人生」。
(三)網路家電
網路家電是將普通家用電器利用數字技術、網路技術及智能控制技術設計改進的新型家電產品。網路家電可以使用物聯網技術組合成一個家庭內部網路,同時這個家庭網路又可以與外部互聯網相連接。目前認為比較可行的網路家電包括網路冰箱、網路空調、網路洗衣機、網路熱水器、網路微波爐、網路炊具等;網路家電未來的方向也是充分融合到家庭網路中去。
信息家電應該是一種價格低廉、操作簡便、實用性強、帶有PC主要功能的家電產品。利用電腦、電信和電子技術與傳統家電(包括電冰箱、洗衣機、微波爐、電烤箱、麵包機、咖啡機、電視機、錄像機、家庭影院、DVD等)相結合的創新產品,是為數字化與網路技術更廣泛地深人家庭生活而設計的新型家用電器。更細化的描述可以將信息家電,特指為帶有嵌入式處理器的小型家用(個人用)信息設備,它的基本特徵是與網路(主要指互聯網)相連而有一些具體功能的產品,也可以是將普通家電產品升級後的,具有網路操作功能的家電類產品。
(四)數字可視對講
採用智能化全數字可視對講安防系統,訪客通過小區/單元/戶門口機呼叫室內智慧家庭終端機,可實現視頻通話、遠程開鎖、留言留影功能。
室內智慧家庭終端機、小區/單元門口機都可以呼叫小區管理中心機,可實現視頻通話和遠程開鎖功能。
室內智慧家庭終端機之間可以實現雙向可視視頻通話。
⑶ 進度狀態控制的 前端方面的技術就是給你個進度值 你能展現出來 比如 10 30 40 50 70 90 100%,求解
進度條,到了多少就讓條的顏色增加一段
⑷ Web 前端怎樣入門
方法:
第一:理清Web前端的知識結構。要想高效學習Web前端知識,首先應該搞清楚Web前端都包括哪些技術結構。Web前端開發雖然技術難度並不高,但是技術細節卻比較多,內容也比較雜。Web前端的基礎包括三大部分,包括Html、CSS和JavaScript,其中JavaScript是學習的重點,也是難點。另外,vue等框架也是需要熟練掌握的。
第二:緊跟技術發展趨勢。目前Web前端的技術發展趨勢有三個,其一是前端開發數據化;其二是前端開發高效化;其三是前端開發全棧化。前端開發數據化主要是大數據發展的影響,在大數據的推動下,Web前端逐漸涉及到了大量的數據展示任務。前端開發高效化主要體現在Web前端正在進行獨立部署,前端與後端的溝通主要通過資源介面的方式來進行。前端開發全棧化也是一個比較明顯的趨勢,比如Nodejs的應用。
第三:注重動手實踐能力的培養。學習前端開發一定要注重動手實踐能力的培養,因為前端開發的細節比較多,所以只有多操作才能逐漸熟悉。
前端開發目前被稱為「大前端」,整個前端開發也被賦予了更多的含義,包括Web前端開發、移動端開發、大數據呈現端開發以及部分後端開發任務等等。所以,想要在前端行業中走的更遠,一定要注重知識結構的豐富性。
與其他編程語言相比,前端是公認的入行門檻較低的一門語言,但依然有很多人在學習之前會問零基礎學習web前端難不難,要多久才能學會。學習的難易和時間當然是取決於學習的方式。
前端入門簡單,但是深入學習之後,還是有一定學習難度的。如果你是零基礎自學web前端的話,那麼所花費的時間與精力是不可估計的。 如果系統學習5個月的時間可以幫助你快速成長為合格的web前端工程師。
至於視頻教程,我這里有很多前端的全套教程,如果你需要的話,可以加一下我的學習交流裙裙,找我要就行了!
⑸ 前端狀態管理模式 和HTML本地存儲的區別在哪裡
這兩者不是一個概念。
所謂狀態,指的是與視圖對應的數據,跟展示無關的東西就不算狀態。
你可以把狀態存一份到本地持久存儲里,但不代表往裡面存的東西都能算狀態
河南新新華網路運營協會
⑹ WEB前端開發出路在哪裡.
首先要了解一下做WEB前端技術能夠找到的職業方向: 1)資深WEB前端工程師 2)資深WEB架構師 3)自己創業 4) 轉崗管理或其他 比如我的理想狀態就是能在一到兩年的時間之內轉型為PM。 當我們了解了前端開發發展的方向就要給自己在向這個目標發展的過程中自己制定一系列學習和成長計劃來確定一個發展目標。 要實現這個目標的過程又分為起步階段與提升階段。 在起步階段必須做到如下幾點: 1、基本知識的掌握 2、常用工具的掌握 3、溝通技巧的掌握 4、良好的開發習慣 5、在團隊中成為一個優秀的合作人員,並讓你的團隊成員喜歡你。 如果你滿足了以上的條件並能做得更好的時候那麼你就可以進入提升階段: 1、高級技術的掌握 2、產品管理及運營思想的學習 3、各種框架的學習 4、客戶端應用的學習 5、各種網路協議的學習 6、程序與項目規劃設計 7、各種技術在整體項目中的調配學習 如果你能做到以上幾點並能做得更好那麼你就已經進入其中一種方向的成型階段了。這個時候你要做的時經受的起各種磨練。
⑺ 學完前端可以做什麼工作
入門級做頁面。就這么簡單。把Designer出的各種設計圖轉化成html+css+js+image的靜態網頁,並把它們交給後端開發人員製作成頁面模板。這就是入門級的前端工程師所做的事情。
進階級還是做頁面。不過稍微復雜一些,你需要開始注意一些更復雜的問題,首當其沖的就是瀏覽器兼容性問題。老實說瀏覽器兼容性問題真的不是那麼好搞定的,畢竟每個項目對瀏覽器版本的要求都不一樣,而且現在不光有PC瀏覽器還有各種移動設備上的瀏覽器,同時國內廠家的瀏覽器種類也越來越多,坑也是密密麻麻。除了兼容性,你可能還要關注一下性能問題,包括但不限於網路性能、渲染性能、js邏輯的性能等等,這個展開講可以寫本小冊子了,呵呵。
中級帶團隊。你可能會奇怪,一個中級工程師就能帶團隊了?可是真的很多公司就是這樣,尤其是小公司。當你了解了html、js、css以及各種瀏覽器的各種特性細節之後,你會被任命帶領一個小的開發團隊,當然是前端開發團隊。可能加你一共也就三四個人,甚至更少。這時候你的工作內容除了自己寫一點頁面以外,還會幫助組員解決各種各樣的細節問題,畢竟,組里,你是最懂技術細節的。這個時候,一部分人開始停步不前,而另一部分人開始關注另一個新的問題:工程化。前端代碼都是非常鬆散的,項目結構性差,一旦開發人員數量多起來,業務復雜起來,如何管理這么多人、這么多代碼是個非常大的問題。能否在這個問題上得到突破,決定了你能否邁向下一個級別。
高級架構設計。此時你熟悉前端開發的各種技術細節(當然忘了一部分細節也沒事 ^_^),同時對各種前端框架、技術的特性聊熟於胸,你知道如何組織和管理項目讓大家能以最快的速度達到項目要求,你甚至了解手下每個人的所長所短。於是當新項目到來,你迅速根據自身過往的經驗選取若干種技術和工具,配上你認為最合適的人選組成項目團隊,披荊斬棘日夜兼程將產品汪的各種奇葩需求斬於馬下。這么做了一兩個項目之後,你可能又覺得空虛了,你要尋求新的目標。恰好,NodeJS打開了通往新世界的大門。
非典型前端穿過NodeJS打開的大門,你進入了全新的世界——後端。全新的世界,無限的可能。樓上寸老師說的「上天入地,無所不能」,我猜就是這個狀態。愛幹嘛幹嘛吧,這個時候,你應該不會再來問「後端程序員都在幹嘛」這種問題了。其實,要成為一名「非典型前端」並不一定非得經過1~4的步驟。只是現在已經上了年紀的前端大多是這樣過來的,畢竟,NodeJS出來的時間也並不算很久。
⑻ 前端發展怎麼樣
前端的發展前景是很明朗並且是非常具有潛力的,端開發是創建Web頁面或app等前端界面呈現給用戶的過程,通過HTML,CSS及JavaScript以及衍生出來的各種技術、框架、解決方案,來實現互聯網產品的用戶界面交互。主要發展前景從以下幾個方面說明:
近幾年各類互聯網應用產品層出不群,Web前端開發工程師作為實現前端展示的重要一步也越來越受到了企業的青睞,招聘需求呈現遞增趨勢,從前程無憂招聘數據可以看出,Web前端相關崗位24小時之內需求量高達4W+。
從就業方向來看,Web前端工程師所能選擇的就業崗位也是非常對樣的,網頁製作、H5開發、小程序開發、小游戲開發、APP開發等都是可以去選擇的,所以Web前端就業前景還是非常可觀的。
第四階段前端框架,會學習Vue基礎、Vue進階、小U商城電商項目、TypeScript、React、優社區項目、項目答辯等課程。培養方向是Web前端開發工程師、移動端開發工程師、網站開發工程師、Vue開發工程師、React開發工程師。
第五階段小程序+數據可視化,將要學習小程序基礎、雲開發、菜譜雲平台、uni-app基礎、小U商城、數據可視化、課堂監管大數據系統。培養方向為小程序開發工程師、數據可視化工程師。
⑼ 前端開發的難點到底在什麼地方
一般意義上的前端項目:
-從0到1,治理曬哦為健全點的都能搗鼓出來;
-從1到60,後後端或者設計崗位勉強能兼任;
-從60到80,需要比較專業的前端;
-從80到100,這么好的前端可遇不可求。
從0到1就是從無到有的過程,很多人用WordPress,建站之星就差不多就能搞個demo了,可以拿去騙投資人的錢。
從1到60,就是勉強可用,基本上讓後端工程師或者UI設計師找一套bootstrap的模板東拼西湊的也能勉強應付到第一版本上線。
從60到80,就是真正要做一款能完備、性能優良、架構合理的中小規模產品,沒有專業的設計、前端、後端、產品、運營是走不到這步的,差不多到A輪了。
從80到100,那就是追求各方面的極致,與競爭對手一較高下,各個方面沒有頂尖的人才都會影響整體的戰鬥力,木桶效應。
解釋一下:
1. 核心競爭力的主體是工程經驗。
其實這個結論可以推廣到其他研發崗位,就是每個研發崗位的知識體系都是由基礎學科知識+領域工程經驗構成,彼此不可替代的就是工程經驗部分。一個後端工程師一時間不能替代同等級前端工程師到不是基礎或者智商的問題,主要是工程經驗不足,你讓一個前端一個後端分別實現對方領域中一個有明確輸入輸出的功能函數,二者通過簡單學習新語言新語法,加上開發手冊查詢,一般都能比較正常的實現業務邏輯,但你讓他們hold住對方領域的完整項目就很困難了,技術選型,系統設計,模塊拆分,平台特性,宿主環境,性能優化,構建部署,系統測試等等都是領域工程經驗問題。
2. 工程經驗的等級是能cover項目從0發展到80+。
這個很好解釋,因為從0-60的非專業前端也能做到,60+的才是專業前端。
所以不用擔心核心競爭力問題,60+的前端現在都很搶手啊。工程經驗只有60-的話確實壓力比較大。
⑽ HTML5培訓 究竟是學的什麼
可以看看HTML5混合式開發課程體系了解各個課程階段學習的內容,大致分三個課程階段學習:
第一階段:PCterminal
★ PC端頁面重構
1、認知行業、崗位、部分專業術語,就業趨勢與行業未來展望;
2、HTML5核心元素及布局應用;
3、CSS3核心屬性及布局應用;
4、圖形、圖像軟體的使用(PS,FW,AI);
5、瀏覽器兼容及解決方案;
6、圖片整合、滑動門及寬高自適應等高級應用技術;
7、初步接觸JS。
★ PC端交互開發(原生JS)
1、javascript基礎語法和變數、控制語句、循環語句、函數、事件處理、數組、常見排序演算法;
2、DOM操作和BOM操作;
3、定時器、Cookie本地存儲、內置對象、正則表達式、閉包、JS面向對象語法、JSON、堆棧結構;
4、Ajax動態讀取數據、非同步操作、與DOM、JSON的結合使用;
5、各種主流瀏覽器兼容性處理;
6、單例、工廠、代理、觀察者等設計模式;
7、ECMA6.0新特性介紹。
★ PC端交互開發 (JQuery)
1、初識jQuery、jQuery的優勢、jQuery框架核心功能、最容易混淆的幾個概念
2、jQuery各種選擇器的使用,及選擇器的應用優化;
3、Dom節點操作、插入、刪除、復制、移動節點等操作;
4、事件處理、事件處理模型、事件處理機制、jQuery事件封裝機制、jQuery事件應用;
5、jQuery中的動畫、動畫時間的概念、基本動畫方法、復雜動畫方法、停止動畫與參數說明、jQuery動畫的隊列問題;
6、表單開發,設計可用性表單、表單驗證、增強型表單;
7、Ajax、XMLHttpRequest 基礎、jQuery Ajax、工具函數、緩存;
8、在jQuery中編寫插件、插件擴展、插件應用、jQuery.pagination分頁、jQuery.qtip信息提示、 jQuery.artDialog彈出層、jQuery.jscrollpane滾動條;
9、理解模塊式開發,以及requirejs插件的使用。
★ PC項目實訓
1、了解項目需求,項目流程;
2、了解項目管理,模塊分配,項目時間預估;
3、了解產品周期,參與團隊協作;
4、綜合運用HTML+CSS,JS,JQ,JQUERY UI, jquery easyui等技術,完成大型PC端項目開發。
第二階段:Mobile terminal
★ HTML5+CSS3新添特性
1、HTML5概述,新增的元素和廢除的元素、全局屬性;
2、HTML5基礎:新增文檔結構元素(Article、section、nav)智能表單、文件API(FileList對象和File對象、FileReader介面)、拖放API;
3、CSS3基礎:新增的後代選擇器、偽類選擇器、文本陰影、圓角、盒陰影、變形處理(transform)、動畫(transitions)、幀定義(key-frames)、旋轉(rotate)、 animation;
4、HTML5多媒體audio音頻元素、Video視頻元素、視頻回調事件;
5、本地存儲web storage、本地緩存;
6、定位基礎知識以及原理,結合google(高德)地圖定位;
7、響應式布局概念以及語法(@media)、web網頁和mobile網頁的區別、樣式繼承;
8、Canvas標簽基礎知識、繪制矩形、繪制圓形、使用路徑、圖像裁剪、保存為文件、創建動畫。
★ WebAPP項目開發及實訓
1、angular.js、backbone.js;
2、數據交互,ajax與DOM交互應用;
3、HTML5+CSS3在實際項目中的應用;
4、項目管理,模塊分配,項目時間預估;
5、產品周期,團隊協作;
6、微信場景開發;
7、微信平台互動開發。
第三階段:混合應用開發及實訓
★ 混合應用開發及綜合實訓
1、混合開發原理;
2、APP與webAPP;
3、混合應用與HTML頁面交互;
4、通過客戶端傳遞數據;
5、項目的版本迭代;
6、項目打包與應用,生成APK。