前端開發 面試 精選

AngularJS。

優勢:html

  1. 模板功能強大豐富,而且是聲明式的,自帶了豐富的Angular指令;
  2. 是一個比較完善的前端MV*框架,包含模板,數據雙向綁定,路由,模塊化,服務,過濾器,依賴注入等全部功能;
  3. 自定義Directive,比jQuery插件還靈活,可是須要深刻了解Directive的一些特性,簡單的封裝容易,複雜一點官方沒有提供詳細的介紹文檔,咱們能夠經過閱讀源代碼來找到某些咱們須要的東西,如:在directive使用 $parse;
  4. ng模塊化比較大膽的引入了Java的一些東西(依賴注入),可以很容易的寫出可複用的代碼,對於敏捷開發的團隊來講很是有幫助,咱們的項目從上線到目前,UI變化很大,在摸索中迭代產品,可是js的代碼基本上不多改動。
  5. 補充:Angular支持單元測試和e2e-testing。

弊端:前端

  1. 驗證功能錯誤信息顯示比較薄弱,須要寫不少模板標籤,沒有jQuery Validate方便,因此能夠本身封裝了驗證的錯誤信息提示;
  2. ngView只能有一個,不能嵌套多個視圖,雖然有 angular-ui/ui-router · GitHub 解決,可是貌似ui-router 對於URL的控制不是很靈活,必須是嵌套式的;
  3. 對於特別複雜的應用場景,貌似性能有點問題,特別是在Windows下使用chrome瀏覽器,不知道是內存泄漏了仍是什麼其餘問題,沒有找到好的解決方案,奇怪的是在IE10下反而很快;
  4. 此次從1.0.X升級到1.2.X,貌似有比較大的調整,沒有完美兼容低版本,升級以後可能會致使一個兼容性的BUG,具體詳細信息參考官方文檔 AngularJS ,對應的中文版本:Angular 1.0到1.2 遷移指南
  5. ng提倡在控制器裏面不要有操做DOM的代碼,對於一些jQuery 插件的使用,若是想不破壞代碼的整潔性,須要寫一些directive去封裝插件,可是如今有不少插件的版本已經支持Angular了,如:jQuery File Upload Demo
  6. Angular 太笨重了,沒有讓用戶選擇一個輕量級的版本,固然1.2.X後,Angular也在作一些更改,好比把route,animate等模塊獨立出去,讓用戶本身去選擇。

什麼是AJAX,簡述異步請求與同步請求的不一樣?

AJAX 是一種在無需從新加載整個網頁的狀況下,可以更新部分網頁的技術。
AJAX = 異步 JavaScript 和 XML。
AJAX 是一種用於建立快速動態網頁的技術。
經過在後臺與服務器進行少許數據交換,AJAX 可使網頁實現異步更新。這意味着能夠在不從新加載整個網頁的狀況下,對網頁的某部分進行更新。html5

同步是指:發送方發出數據後,等接收方發回響應之後才發下一個數據包的通信方式。
用戶填寫全部信息後,提交給服務器,等待服務器的迴應(檢驗數據),是一次性的。信息錯誤又要從新填寫!web

異步是指:發送方發出數據後,不等接收方發回響應,接着發送下個數據包的通信方式。當用戶填寫完一條信息後,該信息會自動向服務器提交,而後服務器響應客戶端,在此過程當中,用戶依然在填寫表格的信息,即向服務器請求屢次,節省了用戶的時間,提升了用戶的體驗。ajax

同步請求:chrome

客戶端請求(等待)->服務端處理->響應->頁面載入
(缺乏對象:XMLhttpRequest)
這時候若是有錯誤,只能再次發送請求,再次等待canvas

異步請求:瀏覽器

好比當你填寫郵箱地址的時候,頁面當時就把郵箱地址發送到了服務器(也就是頁面發送了一個請求),服
務器作處理和響應,獲得你的郵箱地址填寫重複了,把響應結果發給頁面,在這個過程當中你仍然能夠填寫其
他內容,這時候服務器會提示你有重複的郵箱地址,在頁面上的表現只是郵箱地址旁別加了一行字或者把整
個文本框標紅,並無從新刷你的頁面,全部的填寫錯誤會實時的顯示出來,你也會實時的更正。服務器

這個過程當中,你會有整個頁面的刷新,也不會有整個頁面的提交和等待,最後提交,一切都會搞定的
總結:頁面上的操做和服務器端的操做互相之間不會形成阻塞session

=====創建異步請求過程的4個步驟:============
a:new一個XHR對象
b:調用open方法
c:send一些數據
d:對過程進行監聽,來知道服務器是否是正確地作出了響應,接着能夠作一些事情

什麼是閉包?爲何要使用閉包?

閉包就是可以讀取其餘函數內部變量的函數
做用 :一個是前面提到的能夠讀取函數內部的變量,另外一個就是讓這些變量的值始終保持在內存中。

什麼是冒泡?

在一個對象上觸發某類事件(好比單擊onclick事件),若是此對象定義了此事件的處理程序,那麼此事件
就會調用這個處理程序,若是沒有定義此事件處理程序或者事件返回true,那麼這個事件會向這個對象的父
級對象傳播,從裏到外,直至它被處理(父級對象全部同類事件都將被激活),或者它到達了對象層次的最
頂層,即document對象(有些瀏覽器是window)。

打個比方說:你在地方法院要上訴一件案子,若是地方沒有處理此類案件的法院,地方相關部門會幫你繼續
往上級法院上訴,好比從市級到省級,直至到中央法院,最終使你的案件得以處理。

HTML5CSS3有哪些新特性、移除了哪些元素?如何處理HTML5新標籤的瀏覽器兼容問題?

HTML5如今已經不是SGML的子集,主要是關於圖像、位置、存儲、地理定位等功能的增長。
新特性有:

繪畫canvas元素
用於媒介回放的 video 和 audio 元素
本地離線存儲 localStorage 長期存儲數據,瀏覽器關閉後數據不丟失;
sessionStorage 的數據在瀏覽器關閉後自動刪除
語意化更好的內容元素,好比 article、footer、header、nav、section
表單控件,calendar、date、time、email、url、search
CSS3實現圓角、,陰影、對文字加特效,增長了更多的CSS選擇器,多背景rgba,新的技術有webworker、websockt、Geolocation。
移除的元素包括:
純表現的元素  basefont、big、center、font、 s、strike、tt、u;
對可用性產生負面影響的元素  frame、frameset、noframes。

瀏覽器兼容H5問題解決方案:

IE8/IE7/IE6支持經過document.createElement方法產生的標籤,能夠利用這一特性讓這些瀏覽器支持HTML5新標籤,瀏覽器支持新標籤後,還須要添加標籤默認的樣式,固然最好的方式是直接使用成熟的框架:
   <!--[if lt IE 9]> 
   <script> src="http://html5shim.googlecode.com/svn/trunk/html5.js"</script> 
   <![endif]-->

頁面重構怎麼操做?

把「未採用CSS,大量使用HTML進行定位、佈局,或者雖然已經採用CSS,可是未遵循HTML結構化標準的站點」變成「讓標記迴歸標記的本來意義。經過在HTML文檔中使用結構化的標記以及用CSS控制頁面表現,使頁面的實際內容與它們呈現的格式相分離的站點。」的過程就是網站重構
網站爲何要進行重構(網站重構的好處)
a、使頁面加載得更快速;
b、下降帶寬帶來的費用,節約成本;
c、讓你在修改設計時更有效率而代價更低;
d、幫助你的整個站點保持視覺的一致性;
e、更利於搜索引擎的檢索(符合SEO的規範);
f、令站點更容易被各類瀏覽器和用戶
編寫 CSS、讓頁面結構更合理化,提高用戶體驗,實現良好的頁面效果和提高性能。

前端頁面有哪三層構成,分別是什麼?做用是什麼?

最準確的網頁設計思路是把網頁分紅三個層次,即:結構層、表示層、行爲層。

網頁的結構層(structural layer)由HTML或XHTML之類的標記語言負責建立。標籤,也就是那些出如今尖括號裏的單詞,對網頁內容的語義含義作出了描述,但這些標籤不包含任何關於如何顯示有關內容的信息。例如,P 標籤表達了這樣一種語義:「這是一個文本段。」
網頁的表示層(presentation layer)由CSS負責建立。 CSS對「如何顯示有關內容」的問題作出了回答。
網頁的行爲層(behavior layer)負責回答「內容應該如何對事件作出反應」這一問題。這是JavaScript語言和DOM主宰的領域。

什麼是ajax,爲何要使用Ajax?

答案:AJAX是「Asynchronous JavaScript and XML」的縮寫。他是指一種建立交互式網頁應用的網頁開發技術。Ajax包含下列技術:基於web標準(standards-based presentation)XHTML+CSS的表示;使用 DOM(Document Object Model)進行動態顯示及交互;使用 XML 和 XSLT 進行數據交換及相關操做;使用 XMLHttpRequest 進行異步數據查詢、檢索;使用 JavaScript 將全部的東西綁定在一塊兒。爲何要用ajax:Ajax應用程序的優點在於:經過異步模式,提高了用戶體驗優化了瀏覽器和服務器之間的傳輸,減小沒必要要的數據往返,減小了帶寬佔用Ajax引擎在客戶端運行,承擔了一部分原本由服務器承擔的工做,從而減小了大用戶量下的服務器負載。

相關文章
相關標籤/搜索