『壹』 小程序開發需要學什麼
熟練掌握HTML語言、CSS、JavaScript
1.HTML就是超文本標記語言的簡寫,HTML是網頁開發前端三劍客之一,主要負責網頁的骨架,就如同動物的骨架一樣,HTML語言就是支撐網頁布局的骨架。CSS主要負責網頁樣式,網頁內容如何分布,板塊背景,顏色等外觀問題可以有CSS控制。JavaScript是一種動態的腳本語言,在伺服器端迸發出非凡的活力,成為當前非常活躍的語言之一。因此想要做小程序開發,就必須要掌握HTML語言、CSS、JavaScript。
2、伺服器語言
如果不是專業的後端開發者,可能後端有一定的難度其學習曲線較陡。但是,仍然建議開發者學習一下後端語言,至少需要了解大致的原因框架,能夠看懂其代碼邏輯,這樣不僅可以很好的實現前後端的配合,也能夠在小程序出現bug的時候扯皮用。伺服器的語言有很多比較常用的是PHP、Java、Python、ASP等技術,建議開發者根據公司內部技術的使用情況挑選進行學習。
3、資料庫語言
如果公司數據量不大,架構不復雜的話資料庫語言相對來說是比較簡單的,一般學會一些常用的命令以及常出現的問題就能夠應付使用。常用的資料庫有免費的Mysql、msSQL、MongoDB、Oracle等資料庫。
我目前是在職前端開發,如果你現在也想學習前端開發技術,在入門學習前端的過程當中有遇見任何關於學習方法,學習路線,學習效率等方面的問題,你都可以申請加入我的前端學習交流3000人裙:前面:851 中間:231 最後:348。裡面聚集了一些正在自學前端的初學者裙文件裡面也有我做前端技術這段時間整理的一些前端學習手冊,前端面試題,前端開發工具,PDF文檔書籍教程,需要的話都可以自行來獲取下載。
微信小程序一直的宗旨就是觸手可及的體驗,再伴隨著微信移動端的巨大流量,小程序開發的前景在未來會更好。想要學習小程序開發的小夥伴,只需要學習一些網站開發的基本知識技能,在多動手自己練習一些項目,相信很快就能夠自己親自開發出一款小程序。
『貳』 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
『叄』 web前端經典面試題
為大家帶來一些web前端的面試題,希望可以幫助到大家啊。
1.css3有哪些新特性?
選擇器、圓角、動畫、多重背景、背景的寬度高度flex布局響應式布局邊框陰影文本陰影
2.響應式布局怎麼理解的,響應式布局是通過什麼實現?
根據不同的屏幕載入不同的css樣式
1).移動端適配
2).一套代碼適配pc端移動端多個
3.js創建對象有哪幾種方式?
1).自面量
2).newObject
3).構造函數
4.es6有哪些新特性?
1).letconst
2).模板字元串
3).方法的簡寫屬性的簡寫
4).三點運算符
5).解構賦值
6).箭頭函數
7).setmap
8).class類
9).模塊化
5.箭頭函數和普通的方法有什麼區別?
1).箭頭函數省略了function
2).箭頭函數裡面的this指向上下文(可以改變this指向)
6.gulp可以干什麼
gulp自動化構建工具。
壓縮代碼合並代碼壓縮圖片自動處理前綴創建web服務處理sass
7.清除浮動有哪些方法。
1).浮動元素的父元素overflow:hiddenoverflow:auto
2).浮動元素的最後面加一個空div給他clear:both
3).after偽類清除浮動
.clearfix:after{
content:"";
dislpay:block;
height:0px;
clear:both;
}
4)、給父元素設置高度。
8.行內元素塊元素的區別?
1)塊元素默認獨佔一行,行內元素默認情況不獨佔一行,行內元素的的寬度就是內容的寬度
2)默認情況塊元素可以設置寬度高度默認情況行內元素不可以設置寬度高度
3)默認可以margin上下左右,行內默認只能margin左右不能上下。
9.網站載入速度優化?
1).圖片不失真盡量小
2).多個背景圖片合並
3).代碼壓縮代碼合並
4).js寫到頁面最底部
5).懶載入
6).不要有冗餘代碼
7).伺服器帶寬款一些
8).伺服器固態硬碟
9).開啟緩存
10.以前寫代碼什麼情況會成出現亂碼怎麼解決?
解決亂碼文件保存的編碼和設置的編碼必須保持一致
11.以前如何測試調試移動端頁面
1).首先在瀏覽器自帶的調試工具模擬器裡面調試
2).真機的內置瀏覽器調試
3).真機上面的UC裡面調試
4).真機上的微信裡面調試。
『肆』 uniapp面試題必問有哪些
ni-app面試考試有幾個題是必問的:uni-app收費嗎?跨端會造成功能受限制嗎?以及uni-app的手機端用戶體驗如何?
1、uni-app收費嗎?
uni-app是免費產品,DCloud公司不會向開發者收取任何費用,大家可以放心使用。
DCloud提供的所有開發工具都是免費的,也不會有什麼陷阱。
DCloud的盈利點在幫助開發者進行推廣和流量變現上,而不在開發工具收費上。
2、跨端會造成功能受限制嗎?
uni-app在跨平台的過程中,不犧牲平台特色,不限制平台的能力使用。
應用開發中,80%的常規開發,比如界面組件、聯網等api,uni-app封裝為可跨多端的API。
其餘的,uni-app引入條件編譯。可以優雅的在一個項目里調用不同平台的特色能力。比如push,微信小程序里不支持,但可以在App里使用,還有很多原生sdk,在App時難免涉及,這些都可以正常的在uni-app框架下使用。
3、uni-app的手機端用戶體驗如何?
使用uni-app開發的微信小程序,和直接開發微信小程序相比性能沒有明顯差別,因為uni-app輸出到微信時也是編譯為wxml格式。uni-app編譯到微信使用的是mpvue框架,這個是業內廣泛使用的成熟框架。
uni-app打包成App後的體驗和微信小程序一樣好,在某些場景下更好;微信小程序的Hybrid應用框架是業內體驗上的標桿,實踐證明這種體驗足以承載一線互聯網開發商獲得上億用戶。
uni-app內置預載機制,載入新頁面速度極快,可實現無白屏極速渲染。
uni-app在App端還支持weex原生渲染(nvue),左右拖動長列表等復雜場景依然可實現高流暢性。
『伍』 web前端開發培訓機構哪個好
如果非的說哪家特別出眾特別優秀的話,還不如說哪家更適合你,前端培訓機構還是要找個適合自己的比較重要,因此建議你去找一下可以線下試聽的機構,先試聽一周左右,看一下講師的授課方式、教學的內容氛圍、身邊學員的真實感受以及自己最終的學習吸收效果再做決定,下面給你以下幾個選項參考,千萬不要盲目進入培訓機構。
1. 盡可能選擇線下面授,線下主要有學習氛圍,學習效率會高很多。
2. 不要相信什麼百分之百包就業/推薦就業/保證就業,這些東西只能給你心理安慰,實際沒有一點作用,給你談什麼包就業,純粹是拿捏了你害怕學習失敗的心理來下的葯。
3. 相比較對於承諾就業的機構,你選擇可以退費的機構更好,能夠保證學完找不到工作全額退費的機構,其實這也能反映出人家機構對自己的教學內容、授課講師還是十分自信的。
4.優先選擇面授小班,培訓機構的優勢之一就是學習氛圍,而目前來說大班有2個問題,一是生源質量參差不齊,二是老師根本就顧不來,每個人都不能享受更好的服務,也不能保證教學質量。
5.不要輕信網上排名廣告,畢竟網路上的這些廣告,誰給錢算誰的。這里也要說一下,其實大中小型機構互相之間差別是不大的,一些大型機構銷售喜歡攻擊小機構說不穩定容易倒閉、沒保證,因此建議你不要覺得大機構就有保障或者小機構就不穩定,僅從大或者小來判斷一家機構是否有實力,真是無稽之談。
建議選擇前端培訓機構之前,首先要確定適不適合自己,然後根據一些條件來對比機構進行篩選,最後實地試聽考察。
『陸』 前端面試一問三不知怎麼辦
前端面試一問三不知的時候,千萬別慌亂,可以先停一停和面試官說這個問題你需要思考一下再回答,或者說你因為太緊張之類的一時想不起來答案。
有些面試官會直接電話過去要求面試,由於面試者(尤其是學生)處於弱勢方,可能並不會拒絕面試要求,但並不意味著面試者處於最佳的物理和精神狀態下,有可能會導致面試者不能很好的發揮自己原有的實力。所以如果面試官突然打電話過來。
沒有準備好的話,不要怕冒犯面試官,一定要另外約個時間,面試官肯定會再打過來的。遭到否定面試官有可能會否定你描述的一些東西,有可能是你字眼寫的太過,比如將「熟悉」的東西寫成了「精通」,勾起了面試官的「好奇」。
有可能故意試壓,考驗你的反應,但遇到否定的時候,不要急於反駁或者是手足無措,而是詢問自省和主動討論。氣場不和有的面試官性格嚴謹沉悶,而面試者可能思維活躍,整個面試過程可能會變成面試官不停的打斷面試者讓其思維聚焦。
而面試者感到思維不停被打斷,很是氣惱,影響發揮。這種情況不可避免,但遇到這樣的面試官,請保持謙和的態度,重點是展示自己技術的廣度、深度,氣場不和並不會產生決定性的影響,面試官也不會因為這樣的原因而給與錯誤的評判。
盡量留下好的印象。結束通知有的面試官會在面試結束後說:「我的問題問完了,如果有進一步消息的話,我們會再聯系你」。面試的大部分結果,其實當場就出來了,如果你感覺給出結果的時間點不夠明確,可以反問他:「如果三天內沒有聯系,是不是就代表沒有通過?」省得讓你懷有不確切的希望。
最後,還可以挽留下面試官,講講這場面試中你的一些疑惑,獲得面試官的反饋,也可以知道自己目前哪一方面做得不足。面試中面對不會的問題面試中遇到問題不會回答,這是非常正常的,畢竟大家在學習過程中遇到的問題,跟我們在工作中遇到的問題是非常不一樣的。
除此之外,我們看問題的角度,也是有差別很大的。舉個例子,很多人都在看ReactFiber,但是如果問你們,為什麼要有Fiber這個東西,可能很多人都回答不上來,因為大家只在社區裡面看到說,Fiber是怎麼工作的啊。
但是為什麼要有Fiber?如果沒有會怎樣,而這種思考,其實是非常底層的。我相信,很多人可能都沒有思考過。那如果遇到的問題不會,你可以先選擇不會,說我覺得自己沒有信心能答出這個問題,當然我更希望聽到你說。
我現在不會,但是你給我兩分鍾思考一下,我想一下這個問題有沒有答案?我覺得這是一個很好的思考習慣,首先你在面對不會的東西是坦然的,我當下不會,很正常,我之前沒有思考過這個問題嘛,那我們再花兩分鍾思考一下。
給一個初步的答案。所以說遇到問題,也不用不會就不會,也可以有一個積極的方式回應。從面試官的角度來說,面試中考察的題目,並不是僅僅考察這道題目本身,題目的對錯並不跟最終結果直接掛鉤。面試官更希望以題目為契機。
考察面試者分析問題,解決問題的能力,以及交流過程中所體現的邏輯推理和思維方式等。跟面試官聊業務業務跟項目是完全不一樣的東西,業務認知和思考也是很重要的一個考察點,這方面面試官可能會問兩個點:業務場景和技術突破。
業務場景:面試官會詢問面試者他們的產品、業務模式、商業模式等,了解下面試者對於產品的誕生、定位、發展的認知。技術突破:技術與業務相結合這點在阿里也是一直在說但鮮有人做的非常好的地方,所以有的時候也會考察面試者。
看看他們所做的技術是如何從業務出發、給業務帶來了哪些改變以及如何去評估兩者之間產生的結果。面試結束反向互動面試官在掛斷之前,基本會給與候選人反問的機會,一般會表述為「你有什麼要問我的嗎」?無論面試的怎樣。
都希望你能說出心中的疑惑,比如面試中的某個題目、整體的評價反饋、你的建議或者了解所負責的業務,所在的團隊等等,而從面試官的角度來看,如果候選人願意反問你問題,至少能證明他是個好學的人。所以不要放棄這個互動的機會。
面試反饋每場面試結束後,面試官都會在系統里留下面試反饋,如果面試失敗,簡歷會放在人才庫里,很多人會在其中撈取簡歷,以後的面試官也可以看到之前所有的面試記錄,之所以講到這一點,是希望大家在面試中能夠保持謙和積極的心態。
認真面對每一場面試,即使這場面試沒有成功,但如果展示了好的品質,也會增加被發掘的機會,為你以後面試成功鋪路。保持聯絡如果跟面試官聊的比較好,可以請求加個微信之類的,面試是一個長期的事情,哪怕此次面試沒有通過。
以後還可能面試進來的,與面試官保持聯絡。前端面試題筆記面試會了,面試題也不能落下,這套面試筆記除了有CSS、JS、Vue、React、性能優化、伺服器埠、設計模式、數據結構和演算法面試題外,加了手寫代碼面試題。
這下面試官讓我們寫代碼也不怕啦!CSS問題flex布局css3的新特性img中alt和title的區別用純CSS創建一個三角形如何理解CSS的盒子模型?如何讓一個div水平居中如何讓一個div水平垂直居中如何清除浮動。
『柒』 2022前端開發面試記錄(深圳篇)
2022年來到深圳,感覺到了與之前所在城市的差異,心裡多少有點落差。雖然時機不太對吧,但是相信一切都會好起來的,給自己加油呀!
整理了一些面試被問到的問題,雖然很多是無效面試,但是我也強行問了面試官,從他們的回答中猜測了一下他們關注的面試點,所以也算是有點收獲吧,只是浪費了很多簡歷和路費,哭唧唧。
——1、區塊鏈——
1-1、vue生命周期;
1-2、vuex屬性;
1-3、用戶開始登錄到登錄成功都發生了什麼;
1-4、git常用的命令;
——2、金融:vue——
筆試:
2-1、深淺拷貝的區別,為什麼會出現深淺拷貝,淺拷貝的優勢;
2-2、強制中斷 foreach 遍歷;
2-3、多處組件復用;
2-4、你對前端是什麼概念,前端在整個軟體生態內是什麼角色;
2-5、Vue2 中數據變化但視圖沒有發生同步更新,描述一下出現的場景,解決方式,以及該問題發生的可能原因;
2-6、nextTick 是如何確保開發者能夠獲取到最新的 DOM 狀態的;
2-7、如何使用 mixins,有何利弊;
2-8、使用 Hooks 模式開發時,useMemo,useCallback 常用來作為優化的手段。描述一下它們各自的適用場景,以及背後的原理實現?;
2-9、前端從 Jquery 時代演變至如今的三大框架,這種演變的根源是什麼,jquery 解決了什麼問題,如今的三大框架又是為了解決什麼問題出現的?
視頻面試:
2-10、js遍歷樹形結構,每個節點都有一個唯一ID,只能遍歷一次;
2-11、組件封裝的意義;
——3、知識產權:vue2、vue3、ts、react——
3-1、說一說面向對象的理解,包括繼承、封裝、多態等;
3-2、說一說promise;
3-3、webpack優化;
3-4、vuex使用場景;
3-5、描述一下對vue響應式原理的理解;
3-6、vue生命周期;
3-7、父子組件鉤子函數執行順序;
3-8、v-if和v-show;
3-9、js數據類型;
3-10、實現深拷貝;
——4、物流——
4-1、vue生命周期;
4-2、生命周期-修改元素樣式在生命周期的哪個階段;
4-3、生命周期-修改數據在哪個階段;
4-4、生命周期-destroy裡面會做哪些操作;
4-5、怎麼修改title的內容;
4-6、父子組件傳參的具體寫法;
4-7、v-model的多種寫法;
4-8、js數據類型;
4-9、判斷數組的方法;
4-10、實現左邊固定右邊自適應的布局;
4-11、實現div垂直水平居中;
4-12、flex:1;
4-13、flex詳解;
4-14、call,apply,bind是干什麼的;
——5、新興產業——
5-1、封裝路由,怎麼攔截路由;
5-2、瀏覽器緩存有哪些,又問localStorage和sessionStrorage的區別和應用場景;
5-3、瀏覽器強緩存和協商緩存;
5-4、webpack打包機制,構建過程和配置;
5-5、性能優化方法;
5-6、前端的業務和後端的API是怎麼做到數據實時請求的(問的其實是前端對後端API介面的封裝和管理);
5-7、computed和watch;
5-8、說了幾個關於大屏的應用場景,有沒有做過,怎麼做的;
——6、某水果:vue2、vue3、ts、各種前沿技術都用——
6-1、怎麼封裝一個組件庫/工具類庫,比如vue封裝過什麼復雜組件,jquery封裝過什麼類庫;
6-2、get和post的區別,傳參格式等;
6-3、promise怎麼用的;
6-4、原型鏈,test()的原型鏈;
6-5、websocket;
6-6、es6中的generator;
6-7、es6中的set和map有啥區別,set為什麼能去重;
6-8、項目難點;
——7、醫療健康:vue——
7-1、vue自定義指令配置;
7-2、webpack的理解;
7-3、對node的了解,用過express嗎;
7-4、項目中的拖拽是怎麼做的;
7-5、websocket和socket的區別;
7-6、聽過mqtt嗎,因為沒聽過所以解釋了一下activemq的用法;
7-7、二維地圖的聚合,如果有十萬個點,會做什麼優化;
7-8、地圖實現多個點連成一條線會怎麼做;
7-9、地圖實現一條曲線;
7-10、內網下git怎麼用的;
7-11、openlayers渲染機制;
7-12、父子組件通信方法;
7-13、router中實現攔截;
7-14、對象合並的方法;
7-15、父子組件的生命周期執行順序,渲染階段為什麼會先執行父組件再執行子組件;
7-16、vue生命周期;
7-17、npm run dev, run build可以在項目中的什麼位置找到;
7-18、vue中跳轉頁面的方法;
7-19、mixins用過嗎;
7-20、判斷引用類型的方法;
7-21、js數據類型;
7-22、判斷基本數據類型的方法;
7-23、for in和for of的用法和區別,兩者遍歷的是索引還是屬性值,兩者都可以遍歷對象嗎;
7-24、foreach和map的區別,兩者會不會改變原數組;
7-25、主要用什麼技術棧;
7-26、行內元素和塊級元素的區別,分別都有哪些,行塊級元素有哪些;
7-27、div垂直水平居中,grid知不知道怎麼用;
7-28、splice和slice;
——8、智慧園區:vue2、vue3、ts、uniapp——
8-1、flex了解嗎,flex布局方向,flex:1 0的頁面效果是怎樣的;
8-2、做過移動端嗎,了解uniapp嗎;
8-3、keep-alive;問了一個沒聽明白的,可能和keep-alive有關系;
8-4、vuex中的action;不用vuex,怎麼代替vuex;
8-5、promise.all和promise.on;
8-6、防止表單重復提交;
8-7、async,await的使用;
8-8、vue3和ts的了解;
8-9、防抖怎麼控制時間;
8-10、vue中的data為什麼要設計成一個函數;
——9、智慧工地:vue、uniapp、小程序——
9-1、Vuex是干什麼的;
9-2、openlayers怎麼用的;
9-3、性能優化;
9-4、spa首屏載入優化;
9-5、bundler.js太大,打包怎麼優化;
9-6、加密方式了解多少,比如md5,base64等,一大堆沒聽過的;
9-7、冒泡排序的實現原理;
9-8、js設計模式;
——10、某快遞公司外包——
10-1、一棵樹的數據,給的是列表格式,轉換成樹形結構;
10-2、項目相關的,聊天怎麼做的,拖拽怎麼做的,拖拽的數據怎麼渲染的,拖拽重疊怎麼處理的;
10-3、js設計模式;
——11、三維:vue、cesium——
11-1、一棵樹的數據,給的是列表格式,轉換成樹形結構;
11-2、openlayers怎麼用的,發布過wms嗎,發布流程是怎樣的;
11-3、openlayers轉換經緯度的方法名是什麼;
11-4、cesium常用的函數;
11-5、vue數據雙向綁定原理;
11-6、Vue中data屬性如果改變一個數組的下標,會不會馬上發生變化,不變化可以怎麼解決
11-7、數組常用方法有哪些;
11-8、 map和filter的區別;
11-9、es6常用的方法;
11-10、父子組件通信,兄弟組件通信;
11-11、new具體進行了什麼操作;
——12、醫療:vue、angular——
12-1、js渲染機制和運行機制;
12-2、vue數據綁定原理;
——13、建設行業:vue、uniapp——
筆試:
13-1、||與&運算符;
13-2、垂直居中方案;
13-3、let a=arr, b=a, c=arr.concat(), a[0]=3,列印b和c,應該是深淺拷貝;
13-4、實現font-size:12;
13-5、介面路徑,給一個地址 http://localhost/projectname/resource/index(http://localhost/projectname/resource/index).html ,根據url請求介面路徑寫出完整路徑,』/ geturl.do 』,』 geturl.do 』,』../ geturl.do 』;
13-6、微信小程序流程和主要文件;
13-7、獲取url參數及內容;
13-8、$(function(){}) / (function(){}) / (function(){})()的區別;
13-9、前端優化方案;
面試:
13-10、項目難點;
13-11、git工作流;
13-12、jquery項目會不會用webpack打包;
13-13、webpack優化;
13-14、web優化;
——14、文化:uniapp——
14-1、ssr渲染;
14-2、ajax和axios的區別;
14-3、cookie和session的區別;
14-4、vue生命周期;
14-5、數據請求寫在哪個生命周期中;
14-6、router的history模式和hash模式;
14-7、工作中的開發流程;
14-8、uniapp的開發流程和坑;
14-9、uniapp滑動問題,下滑切換視頻不生效,一般是什麼原因;
14-10、uniapp載入速度慢,點擊載入圖片速度太慢,一般是什麼原因;
——15、企業平台某外包:vue,node,性能優化——
15-1、說一說websocket;
15-2、vue數據雙向綁定原理;
15-3、項目難點;
15-4、對mvvm、mvc、mvp等的理解;
15-5、vue的常見指令;
15-6、computed和watch;
15-7、class和style怎麼綁定;
15-8、ajax和axios的區別;
15-9、axios攔截器,axios的post請求;
15-10、對前端渲染,服務端渲染的理解;
——16、智慧城市:vue,node,three.js——
16-1、vue生命周期;
16-2、vue組件通信方法;
16-3、js的繼承;
16-4、oracle、mysql、sqllite的區別;
16-5、oracle連表查詢;
16-6、openlayers項目場景;
16-7、cesium項目場景;
——17、租房:jquery+layui,vue2——
17-1、筆試:
17-2、foo列印題;
17-3、this列印題;
17-4、變數提升列印題;
17-5、let arr=[1,2,[5,8,[9,[3,5,]7,]20,37]] 把數組扁平化成一個數組,並進行去重升序;
17-6、let a=[1,2,3,4,5,6,7]; let b=[4,5,6]; 求b在a中第一次出現的位置;
17-7、面試:主要問項目
——18、跑腿:vue2,vue3+ts——
18-1、對html5語義化的理解;
18-2、css實現一個三角形;
18-3、css怎麼實現0.5px的線,為什麼有這種需求,涉及到兼容性問題;
18-4、怎麼解決變數提升的問題;
18-5、es6新增了哪些定義變數的方式;
18-6、const定義的變數可以被修改嗎;
18-7、map和filter的區別,會改變原數組嗎;
18-8、es6去重的方法;
18-9、談一談對promise的理解;
18-10、除了鏈式調用,promise還可以怎麼處理同步請求(async/await);
18-11、對vue響應式原理的理解,核心是什麼;
18-12、對vue生命周期每個階段的理解;
18-13、為什麼要用key,key有什麼作用;
18-14、v-if和v-show;
18-15、Vue中data為什麼是一個函數;
18-16、vue各場景下的傳值方式有哪些,比如父子組件,兄弟組件,祖孫組件;
18-17、對vuex的理解和使用場景;
18-18、vue常見修飾符;
18-19、Vue3用過嗎(因為沒用過,所以就只針對響應式原理說了一下vue3和vue2的區別);
——19、實業:jquery,vue2,vue3——
筆試:需要解釋
19-1、html5新標簽,css3新特性;
19-2、js+css3實現某元素以50px每秒的速度左移100px;
19-3、css實現左中右布局,不改變文檔流;
19-4、js兼容性有哪些,以及常見的解決方案;
19-5、描述一下事件循環機制eventloop,eventloop解決了什麼問題;
19-6、給了一個題,大概是後端返回的介面數據,data的格式有很多,比如null,對象,數組,字元串等,怎麼處理這種問題;
19-7、前端性能優化方法,首屏頁面怎麼優化;
19-8、用js寫一個方法實現數據去重並排序(用es5和es6+實現);
19-9、給定一個數組,把數組中為0的往後排,其他值按順序排序; (示例:[1,0,4,0,5,3]轉換結果為[1,3,4,5,0,0])
19-10、用0,1,2代表紅黃藍三種顏色,實現以下排序,不能用array.sort實現;(示例:[0,1,0,2,0,1,2]轉換結果為[0,0,0,1,1,2,2])
面試:
19-11、flex布局;flex:1對應的屬性;
19-12、講一下原型鏈; proto 和prototype有什麼區別;字元串有沒有原型;給定一個str,str.test()調用的誰的test方法;
19-13、講一下閉包;什麼情況下才能算是閉包;形成閉包的條件;列了三個題讓你判斷是不是閉包;
19-14、v-if和v-show是干什麼的;應用場景有哪些;給定一對父子組件,默認值是false,另外有一個ajax請求,值發生了以下變化(false true false true true),在v-show和v-if中,父子組件的哪個階段里會請求ajax;
19-15、computed的實現原理,怎麼實現一個computed;
19-16、css中,transform,margin,position的都是怎麼渲染的,渲染機制是什麼;amd,cmd,commonjs了解嗎;
『捌』 web前端培訓課程內容有哪些
您好,web前端培訓課程的內容包括以下8個階段:
階段1.前端核心基礎
HTML +_CSS核心、JavaScript基礎語法、JavaScript面向對象、JavaScript DOM和BOM編程、jQuery框架
階段2.HTML5 + CSS3 + 移動端核心
HTML5新特性、Canvas專列、CSS3新特性、CSS3進階、CSS3實例演練
階段3.移動端
移動端核心、移動端適配、移動端特效
階段4.伺服器端
伺服器端開發、資料庫操作、前後端交互核心、微信公眾號開發
階段5.JavaScript高級
JavaScript基礎深入剖析、JavaScript面向對象深入講解、JavaScript非同步編程、JavaScript函數式編程、JavaScript設計模式
階段6.前端必備
性能優化、版本控制工具、模塊化、項目構建工具
階段7.高級框架
React框架基本使用、React框架進階、Vue框架基本使用、Vue框架進階、Vue源碼分析
階段8.小程序
原生小程序入門、原生小程序API使用、小程序框架Mpvue
『玖』 馬上就2021年了,在前端行業中如何提高自己的競爭力
第一,獲取相關信息。
可以通過瀏覽招聘信息或者詢問身邊從事前端工作的朋友來對HTML5大前端以及前端開發的工作內容進行一個初步了解。一般來說,前端開發工程師的工作包括:使用HTML、CSS、JavaScript等專業技術和工具將UI設計稿實現為用戶PC端、移動端網頁等網站產品,同時處理相關埠的視覺和交互問題等。
第二,打好學習基礎很重要。
Web前端入門學習的基礎內容有HTML5和CSS3,其中包括PC端網站布局、Weapon頁面布局兩方面。JS交互設計是重點學習部分,這部分需要熟練掌握JavaScript基礎語法、JavaScript進階、JavaScript高級編程、Conquer經典案例等內容。再有前端框架也是重點知識點,現在比較主流的框架有Cue、React、Angular,熟練運用框架可以提升開發效率。
第三,理論結合實踐。
緊跟潮流發展也很關鍵,現在微信小程序和小游戲越來越流行,掌握相關技術點可以在崗位競爭中更具優勢。比如熟悉React Native技術對於小程序開發很有必要,它可以實現熟練開發出匹配項目需求的功能。
第四,找對適合自己的學習方式至關重要。
根據企業的要求,規劃一條科學合理的學習路線圖。請你看下面學習路線圖,完全是針對企業定製化人才需求規劃。避免小白踩坑。
第一階段:前端頁面重構
內容包含了:(PC端網站布局項目、HTML+CSS基礎項目、WebApp頁面布局項目)
第二階段:JavaScript高級程序設計
內容包含:(原生 JavaScript交互功能開發項目、面向對象進階與 ES/ES應用項目、JavaScript工具庫自主研發項目)
第三階段:PC端全棧項目開發
內容包含:(jQuery經典交互特效開發、HTTP協議、Ajax進階與PHP/JAVA開發項目、前端工程化與模塊化應用項目、PC端網站開發項目、PC端管理信息系統前端開發項目)
第四階段:移動端項目開發
內容包含:(Touch端項目、微信場景項目、應用 Angular+Ionic開發 WebApp項目、應用 Vue.js開發 WebApp項目、應用 React.js開發 WebApp項目)
第五階段:混合(Hybrid,ReactNative)開發
內容包含:(微信小程序開發、React Native、各類混合應用開發)
第六階段:NodeJS全棧開發
內容包括:(WebApp後端系統開發、一、NodeJS基礎與NodeJS核心模塊二、Express三、noSQL資料庫)
第七階段:大數據可視化
內容包含:(大數據可視化化基礎與實戰、一、數據可視化入門、二、D.js詳解、三、其他JS庫)
第五,學習web前端注意事項。
1.不要以看書學習為主,學習編程不是數學語文那麼容易,你看看例題就會了,更需要的是別人的講解,你自己看書上那些專業的文字,只是憑你自己意識理解的那樣來,但是一般情況下我們都理解不了,畢竟我們不是出書的人,最好的方式就是找視頻進行學習,找好的視頻進行學習,然後在配上別人的解答,再加上自我的主動學習。
2.當你學習的時候,可能會出現學了就忘記不住的情況,我見過很多這樣的情況,包括自己曾經學習的時候也是這樣。打個比方:比方說我們在學習英語的時候,一天學習20個單詞,但是過了一周之後,我肯定會忘記之前學過的單詞。那麼記住這些單詞最好的辦法就是應用於對話當中。我們學習web前端也是這樣,同一個標簽或者屬性,或者是JavaScript的語法,只有你不斷的見到它,並且應用它,讓它都認識你了,這樣你就扎實的掌握了,所以實際應用非常重要。
3.學習方法決定了你學web前端的效率以及你可以走多遠,學習編程非常依賴一個好的學習方法,有太多人因為學習方法不對最終導致放棄,所以讓各位一定注意自己的學習方法,每個人的學習方法不一樣,但是大多數人錯誤的學習方法都是相同的,所以這方面一定要找。
『拾』 好難受!從培訓班出來的前端,進了公司好難熬,在每家公司都待不長。怎樣做,才能在每家公司長久待下去
每個公司都待不長被辭退,首先找自己的原因,為什麼別人可以你卻不行。培訓時發瘋的玩手機,沒有學到東西,進了公司什麼都幹不了、完不成任務和工作,再難受,也得自己受。