答 : vue是採用數據劫持,而且使用發佈-訂閱者的開發模式。原理是觀察者observer經過Object.defineProperty()
來劫持到各個屬性的getter
setter
,在數據變更的時候,會被observer觀察到,會經過Dep通知數據的訂閱者watcher,以後進行相應的視圖上面的變化css
具體實現步驟,感興趣的能夠看看vue
第一步:須要observe的數據對象進行遞歸遍歷,包括子屬性對象的屬性,都加上 setter和getter
這樣的話,給這個對象的某個值賦值,就會觸發setter,那麼就能監聽到了數據變化node
第二步:compile解析模板指令,將模板中的變量替換成數據,而後初始化渲染頁面視圖,並將每一個指令對應的節點綁定更新函數,添加監聽數據的訂閱者,一旦數據有變更,收到通知,更新視圖webpack
第三步:Watcher訂閱者是Observer和Compile之間通訊的橋樑,主要作的事情是:
一、在自身實例化時往屬性訂閱器(dep)裏面添加本身
二、自身必須有一個update()方法
三、待屬性變更dep.notice()通知時,能調用自身的update()方法,並觸發Compile中綁定的回調,則功成身退。ios
第四步:MVVM做爲數據綁定的入口,整合Observer、Compile和Watcher三者,經過Observer來監聽本身的model數據變化,經過Compile來解析編譯模板指令,最終利用Watcher搭起Observer和Compile之間的通訊橋樑,達到數據變化 -> 視圖更新;視圖交互變化(input) -> 數據model變動的雙向綁定效果web
答 : 建立前/後,DOM渲染前/後,更新前/後,銷燬前/後;
對於各個週期的理解:
建立前/後:
beforeCreated:此時的vue實例尚未掛載元素$el
,數據對象data也是undefiend;
created:vue實例的數據對象data有了,可是$el
尚未
載入前/後:
beforeMount:vue的實例的$el和data都初始化了,但仍是掛載在以前虛擬的DOM節點上面,data.message還未替換
mounted :vue實例掛載完成,data.message成功渲染。
更新前/後
在data發生變化的時候,會觸發beforeUpdate和updated方法。
銷燬前/後:
在destiory以後,對data的改變不會再觸發周期函數,說明此時vue實例已經解除了事件監聽以及和dom的綁定,可是dom結構依然存在vue-router
首先,組件能夠提高整個項目的開發效率。可以把頁面抽象成多個相對獨立的模塊,解決了咱們傳統項目開發:效率低、難維護、複用性等問題。
而後,使用Vue.extend方法建立一個組件,而後使用Vue.component方法註冊組件。子組件須要數據,能夠在props中接受定義。而子組件修改好數據後,想把數據傳遞給父組件。能夠採用emit方法。vuex
vue-router模塊的router-link組件。vue-cli
當有多層組件嵌套的時候,能夠考慮嵌套路由實現
所以咱們須要在 VueRouter 的參數中使用 children 配置,這樣就能夠很好的實現路由嵌套。
可能還會問如何實現重定向:
使用redirect配置npm
在router目錄下的index.js文件中,對path屬性加上/:id。
使用router對象的params.id。
三種;
最經常使用的是一個全局導航鉤子,router.beforeEach(to,from,next)
,能夠用做路由跳轉前進行判斷攔截
第二種:組件內的鉤子
第三種:單獨路由獨享組件
css的預編譯。
使用步驟:
第一步:用npm 下三個loader(sass-loader、css-loader、node-sass)
第二步:在build目錄找到webpack.base.config.js,在那個extends屬性中加一個拓展.scss
第三步:仍是在同一個文件,配置一個module屬性
第四步:而後在組件的style標籤加上lang屬性 ,例如:lang=」scss」
能夠實現雙向綁定,指令(v-class、v-for、v-if、v-show、v-on)。vue的model層的data屬性。綁定事件:
axios:是請求後臺資源的模塊;
由於vue-cli會創建一個服務器,那麼本地去用axios請求,會形成跨域;解決方法是經過vue-cli生成的框架的結構目錄下的config/index.js,去配置proxyTable配置項;
詳情可參照:https://blog.csdn.net/qq_33559304/article/details/72966028
vue框架中狀態管理。在main.js引入store,注入。新建了一個目錄store,….. export 。場景有:單頁應用中,組件之間的狀態。音樂播放、登陸狀態、加入購物車
state、mutations、actions、getters四個屬性值