前端小知識集錦

持續更新中............
 
同點:都是保存在瀏覽器端,且同源的
 
區別:
cookie數據始終在同源的http請求中攜帶(即便不須要),即cookie在瀏覽器和服務器間來回傳遞。而sessionStorage和localStorage不會自動把數據發給服務器,僅在本地保存。
cookie數據還有路徑(path)的概念,能夠限制cookie只屬於某個路徑下。存儲大小限制也不一樣,cookie數據不能超過4k,同時由於每次http請求都會攜帶cookie,因此cookie只適合保存很小的數據,如會話標識。sessionStorage和localStorage 雖然也有存儲大小的限制,但比cookie大得多,能夠達到5M或更大。
數據有效期不一樣,sessionStorage:僅在當前瀏覽器窗口關閉前有效,天然也就不可能持久保持;localStorage:始終有效,窗口或瀏覽器關閉也一直保存,所以用做持久數據;cookie只在設置的cookie過時時間以前一直有效,即便窗口或瀏覽器關閉。
做用域不一樣,sessionStorage不在不一樣的瀏覽器窗口中共享,即便是同一個頁面;localStorage 在全部同源窗口中都是共享的;cookie也是在全部同源窗口中都是共享的。
Web Storage 支持事件通知機制,能夠將數據更新的通知發送給監聽者。Web Storage 的 api 接口使用更方便。
 
 
2.什麼是漸進加強(progressive enhancement)、優雅降級(graceful degradation)呢?
  漸進加強 progressive enhancement:針對低版本瀏覽器進行構建頁面,保證最基本的功能,而後再針對高級瀏覽器進行效果、交互等改進和追加功能達到更好的用戶體驗。
  優雅降級 graceful degradation:一開始就構建完整的功能,而後再針對低版本瀏覽器進行兼容。
  區別:優雅降級是從複雜的現狀開始,並試圖減小用戶體驗的供給,而漸進加強則是從一個很是基礎的,可以起做用的版本開始,並不斷擴充,以適應將來環境的須要。降級(功能衰減)意味着往回看;而漸進加強則意味着朝前看,同時保證其根基處於安全地帶。
 
「優雅降級」觀點
「優雅降級」觀點認爲應該針對那些最高級、最完善的瀏覽器來設計網站。而將那些被認爲「過期」或有功能缺失的瀏覽器下的測試工做安排在開發週期的最後階段,並把測試對象限定爲主流瀏覽器(如 IE、Mozilla 等)的前一個版本。
在這種設計範例下,舊版的瀏覽器被認爲僅能提供「簡陋卻無妨 (poor, but passable)」 的瀏覽體驗。你能夠作一些小的調整來適應某個特定的瀏覽器。但因爲它們並不是咱們所關注的焦點,所以除了修復較大的錯誤以外,其它的差別將被直接忽略。
 
「漸進加強」觀點
「漸進加強」觀點則認爲應關注於內容自己。
內容是咱們創建網站的誘因。有的網站展現它,有的則收集它,有的尋求,有的操做,還有的網站甚至會包含以上的種種,但相同點是它們全都涉及到內容。這使得「漸進加強」成爲一種更爲合理的設計範例。這也是它當即被 Yahoo! 所採納並用以構建其「分級式瀏覽器支持 (Graded Browser Support)」策略的緣由所在。
 
3.組件、插件、控件的區別

控件:是編程中用到的,按鈕就算是一個控件,窗口也是等等html

組件:是軟件的一部分.軟件的組成部分.前端

插件:網頁中用到的,flash插件,沒有它瀏覽器不能播放flash.java

 

首先範圍最廣的應該是組件,英文component,提起組件咱們不該該把他和具體的技術,什麼dll文件,ocx控件,activex等等聯繫起來,由於組件僅僅是一個概念,若是非要解釋的話,那就是凡是在軟件開發中用到了軟件的複用,被複用的部分均可以稱爲組件。構件的英文也是component,因此說構件和組件實際上是一個意思只是翻譯的不一樣而已。android

 

其實我認爲最有意思的應該是插件,顧名思義,「插件」是容許咱們動態插入的,而不是在編程的時候靜態的寫入的,這就是與普通的組件的區別,由於普通的組件是在編程的時候引入的。咱們以硬件爲例子,例如USB接口,主機設定了標準的接口,而沒必要考慮外部接口具體是什麼設備只要這種設備實現主機提供的接口,二者就能夠通信。這種插件有個最大的優勢就是即插即用,即支持動態的插入。web

 

插件是組件(構件)的一種,咱們能夠這樣給插件進行定義,那就是凡是在應用程序中已經預留接口的組件就是插件,例如:Java中jdbc技術,jdbc只是一個接口,任何一個插件製造商只要實現這個接口均可以被java平臺所使用。咱們還能夠拿IE插件做爲例子,IE中之因此能夠嵌入不少的應用程序,那是由於IE容許他們插入,說的明白一點,那就是在IE的源程序中已經爲這些應用程序預留了接口,只要把通知瀏覽器已經加載了什麼插件,瀏覽器就會調用預留的接口調用這些所謂的插件。chrome

 

固然控件也是組件(構件)的一種,按照網上的說法,控件就是可視化的組件,我也贊成這種說法,其實再從普通組件中分解出控件徹底是沒有必要的,由於對於開發人員來說,可不可視對於非軟件人員來講可能很重要,可是對於軟件人員來講又有什麼區別呢?編程

 

4.目前主流的四大瀏覽器內核有Trident、Gecko、WebKit和Presto。api

  Trident/IE內核:Trident內核的常見瀏覽器有:IE六、IE七、IE8(Trident 4.0)、IE9(Trident 5.0)、IE10(Trident 6.0)、2345瀏覽器、騰訊TT、淘寶瀏覽器、阿雲瀏覽器(早期版本)、瑞星安全瀏覽器、螞蟻瀏覽器、飛騰瀏覽器、速達瀏覽器、佐羅瀏覽器、海豚瀏覽器等等。瀏覽器

 Gecko/Firefox內核:火狐。安全

 WebKit內核:WebKit內核常見的瀏覽器:傲遊瀏覽器三、[1] Apple Safari (Win/Mac/iPhone/iPad)、Symbian手機瀏覽器、Android 默認瀏覽器。

Presto內核:因爲Presto是商業引擎,使用Presto的除開Opera之外,只剩下NDSBrowser、Wii Internet Channle、Nokia 770網絡瀏覽器等。

//-ms表明【ie】內核識別碼

//-moz表明火狐【firefox】內核識別碼

//-webkit表明谷歌【chrome】/蘋果【safari】內核識別碼

//-o表明歐朋【opera】內核識別碼

 

5.React Js的目的是爲了使前端的V層更具組件化,能更好的複用,它可以使用簡單的html標籤建立更多的自定義組件標籤,內部綁定事件,同時可讓你從操做dom中解脫出來,只須要操做數據就會改變相應的dom。React Native的目的是但願咱們可以使用前端的技術棧就能夠建立出可以在不一樣平臺運行的一個框架。能夠建立出在移動端運行的app,可是性能可能比原聲app差一點。

相關文章
相關標籤/搜索