一、 JS高級
1.作用域/作用域鏈
2.原型/原型鏈
3.閉包
4.This指向call/apply
6.Ajax原理、Axios庫
7.同步/異步編程
8.jQuery源碼學習
二、ES6
1.字符串、數(shù)組對象擴展API
2.變量擴展:let 、const的解構賦值,塊級作用域
3.函數(shù)擴展:箭頭函數(shù)默認參數(shù)、rest參數(shù)
4.展開運算符、模板字符串
5.Set、map數(shù)據(jù)結構
6.迭代器和生成器函數(shù)next和yield的理解
7.Proxy對象屬性代理器:屬性的讀?。╣et)和設置(set)相關操作
8.Promise對象、異步編程的解決方案
9.Async+await:異步編程的終極方案 promise+generator的語法糖
10.Class語法、構造函數(shù)的語法糖
11.模塊化編程export + import 的導入和導出
三、DOM
四、瀏覽器BOM
1.瀏覽器的構成和運行機制
2.瀏覽器內(nèi)核
3.瀏覽器交互:BOM和DOM相關的webapi、監(jiān)聽事件
4.瀏覽器緩存機制
5.瀏覽器的渲染原理
6.瀏覽器的安全行:跨域和攻擊
五、模塊化編程AMD/UMD/COMMONJS
1.
六、關于網(wǎng)絡協(xié)議
1. http協(xié)議
2. cookie、session、token
七、HTML/CSS/LESS
1.HTML
1.1 Html語義化標簽的理解、結構化的理解;
1.2 SEO優(yōu)化
1.3 H5新增屬性,如data、類名className;新增表單元素,拖拽drag
2. CSS
1、css選擇器(三大特性)
2、BFC機制
3、盒子模型
4、css模塊化開發(fā)(封裝);SCSS和LESS的使用
5、屏幕適配以及頁面自適應
6、css3中心軸的選擇器
7、css3新增屬性,transform、transition、animation等
4. 關于布局
1. 標準文檔流(padding + margin + 負margin) + 浮動float + 定位left + right + top + bottom
2. 百分比布局: px單位用%num 代替,占父級元素的百分比
3. flex彈性布局: 主軸、輔助軸的幾個數(shù)學
4. grid柵格布局: 使用框架中的類名來替代,本質上還是百分比布局
八、NODE/EXPRESS
九、Webpack
1.打包原理
十、VUE
1.Vue雙向綁定數(shù)據(jù)的原理
vue實現(xiàn)數(shù)據(jù)雙向綁定主要是:采用數(shù)據(jù)劫持結合“發(fā)布者-訂閱者”模式的方式,通過Object.defineProperty()來劫持各個屬性的setter、getter,在數(shù)據(jù)變動時發(fā)布消息給訂閱者,觸發(fā)相應監(jiān)聽回調
2.解釋單向數(shù)據(jù)流和雙向數(shù)據(jù)綁定
單向數(shù)據(jù)流:顧名思義,數(shù)據(jù)流是單向的。數(shù)據(jù)流動方向可以跟蹤,流動單一,追查問題的時候可以更快捷。缺點就是寫起來不太方便。要使UI發(fā)生變更就必須創(chuàng)建各種action來維護對應的state。
雙向數(shù)據(jù)綁定:數(shù)據(jù)直接是相通的, 將數(shù)據(jù)變更的操作隱藏在框架內(nèi)部。優(yōu)點是在表單交互較多的場景下,會簡化大量與業(yè)務無關的代碼。缺點就是無法追蹤局部狀態(tài)的變化,增加了出錯時debug的難度
3.Vue 生命周期的理解
????beforeCreate: 在實例創(chuàng)建之前執(zhí)行
????create:在實例創(chuàng)建、數(shù)據(jù)加載后,能初始化數(shù)據(jù),DOM渲染之前執(zhí)行
????beforeMount:虛擬dom已創(chuàng)建完成,在數(shù)據(jù)渲染前最后一次更改數(shù)據(jù)
????Mounted:頁面、數(shù)據(jù)渲染完成,真實DOM掛載完成
????beforeUpdate:重新渲染之前觸發(fā)
????Updated: 數(shù)據(jù)已更改完成,DOM也重新reder完成,更改數(shù)據(jù)會陷入死循環(huán)
????beforeDestory和destoryed:前者是銷毀實例前執(zhí)行(實例仍然完全可用),后者則是銷毀后執(zhí)行。
4.組件通信
4.1子組件通過props屬性,綁定父組件數(shù)據(jù),實現(xiàn)雙方通信
4.2子組件向父組件通信
將父組件的事件在子組件通過$emit觸發(fā)
4.3非父子、兄弟組件之間的數(shù)據(jù)傳遞
如:EventBus
5.v-if和v-show區(qū)別
使用v-if 的時候,如果值為false, 那么頁面將不會有html標簽生成
v-show則是不管值為true,還是false, html元素都會存在,只是css中display顯示或隱藏
6.NextTick
$nextTick 是在下次DOM更新循環(huán)結束之后執(zhí)行延遲回調,在修改數(shù)據(jù)之后使用$nextTick,則可以在回調中獲取更新后的DOM
7.Vue組件data為什么必須是函數(shù)
因為js本身的特性帶來的,如果data是一個對象,那么由于對象本身屬于引用類型,當我們修改其中的一個屬性時,會影響到所有vue實力的數(shù)據(jù)。如果將data作為一個函數(shù)返回一個對象,那么每一個實例的data屬性都是獨立的,不會相互影響了。
8.Computed/methods區(qū)別
我們可以將同一個函數(shù)定義為一個method或者一個計算屬性。對于最終的結果,兩種方式是相同的。
不同點:
-- computed:計算屬性是基于它們的依賴進行緩存的,只有在它的相關依賴發(fā)生改變時才會重新求值
-- methods:只要發(fā)生重新渲染,method調用總會執(zhí)行該函數(shù)
9.jQuery、vue有什么不同
Jquery專注視圖層,通過操作DOM去實現(xiàn)頁面的一些邏輯;vue專注于數(shù)據(jù)層,通過數(shù)據(jù)的雙向綁定,最終表現(xiàn)在DOM層面,減少DOM操作。
Vue 使用了組件化思想,使得項目子集職責清晰,提高了開發(fā)效率,方便重復利用,便于協(xié)同開發(fā)
10.Vue中key的作用
Key的特殊屬性主要用在vue的虛擬DOM算法,在新舊nodes對比時辨識VNodes。如果不使用key,vue會使用一種最大限度減少動態(tài)元素并且盡可能地嘗試修復/再利用相同類型元素的算法。使用key,它會基于key的變化重新排列元素順序,并且會移除key不存在的元素
有相同父元素的子元素必須有獨特的key。重復的key會造成渲染錯誤
11.插槽slot
12.Vuex
13.Vue-router
搭建SPA單頁應用
1.路由組件配置
2.路由間傳參
3.路由跳轉
4.路由導航守衛(wèi)
14.Vue-cli
15.Vue 深入、源碼閱讀
1.數(shù)據(jù)響應式原理
2.Virtual dom
3.Diff算法
4.NextTick等等
十一、面向對象的編程思想
1、類的抽象
2、對象的封裝、繼承
3、為了更好的去管理數(shù)據(jù)、分類數(shù)據(jù),實現(xiàn)高內(nèi)聚、低耦合
十二、設計模式
1、常用設計模式:單例、工廠
十三、數(shù)據(jù)結構/算法
1.學習常用的排序搜索算法、順序表、鏈表、棧、隊列、樹、堆
十四、系統(tǒng)編程
1.LINUX命令行操作、系統(tǒng)文件管理
2.多任務、多線程、多進程、協(xié)程、并發(fā)、并行、串行、同步、異步等概念的理解