1. 程式人生 > >Vue學習系列(一)——初識Vue.js核心

Vue學習系列(一)——初識Vue.js核心

 前言

    vue.js是一套構建使用者介面的漸進式框架,vue.js的目標是通過儘可能簡單的API實現響應的資料繫結和組合的檢視元件。

    vue通過DOM事件操作和指令來進行檢視層和模型層的相互通訊,會為每一處需要動態更新的DOM節點建立一個指令物件。每當一個指令物件觀測的資料變化時,它便會對所繫結的目標節點執行相應的DOM操作。基於指令的資料繫結使得具體的DOM操作都被合理地封裝在指令定義中,業務程式碼只需要涉及模板和對資料狀態的操作即可,這使得應用的開發效率和可維護性都大大提升。

    因此,資料繫結,元件是整個vue的核心。響應的資料繫結就是資料驅動檢視的概念。它讓你在寫 Web 應用介面時,只需要關注兩件事:資料如何展示和資料如何變化。一旦資料發生變化時,比如使用者輸入,或者 ajax 請求返回後資料發現修改,對應的檢視介面會自動的進行更新。

 原理

    vue.js是MVVM的架構,如圖:

 

    從圖中可以看出檢視層和模型層的相互傳遞,通過使用者操作來繫結一些DOM事件來重新渲染到檢視層。具體的內部架構如下圖:

 

 開始

一、 資料繫結:

    實現方式:資料繫結即是檢視層和模型層的雙向繫結。即資料的改變驅動了檢視的自動更新。  

    通過ViewModel控制,修改資料,從而控制View的展示,實現MVVM的思想。

 

    裡面的兩個屬性getter和setter,在這兩個函式內部實現依賴的收集和觸發,而且完美支援巢狀的物件結構。對於陣列,則通過包裹陣列的可變方法(比如push)來監聽陣列的變化。這使得操作Vue.js的資料和操作原生物件幾乎沒有差別。

  • Obejct.defineProperty 【提供getter 和 setter】
  • Observer 【提供getter 和 setter】—— 訂閱者模式,一個目標物件管理所有相依於它的觀察者物件,並且在它本身的狀態改變時主動發出通知,用來實時事件處理系統。
  • watcher 【提供getter 和 setter】 —— 模板和 Observer 物件結合在一起的紐帶
  • Dep 【負責收集watcher】
  • Directive 【處理Vue模板指令】

    observe -> 觸發setter -> watcher -> 觸發update -> Directive -> 觸發update -> 指令(如上圖流程所示)

<span>Hello, this is {{name}}</span>
<script>
var app = new Vue({
    el : '#app',
    data : {
        name: 'i3yuan'
    }
})

</script>

相關推薦

Vue學習系列()——初識Vue.js核心

 前言     vue.js是一套構建使用者介面的漸進式框架,vue.js的目標是通過儘可能簡單的API實現響應的資料繫結和組合的檢視元件。     vue通過DOM事件操作和指令來進行檢視層和模型層的相互通訊,會為每一處需要動態更新的DOM節點建立一個指

VUE學習筆記() --對VUE作用域的一些思考

我學習有一個習慣,就是在用的時候一定要搞清楚一些基本問題,要不然稀裡糊塗的,腦子裡沒有一根清晰的線,總感覺是一團亂。所以學習筆記裡不會有什麼語法之類的,這些在各大教程裡都講的很清楚,在這裡只記錄一些我自己的思考和理解,如果有不對的地方,歡迎路過的大神幫忙指點。 1.VUE中,作用域及作用範圍

Vue學習筆記 建立vue專案

1:安裝Node.js Node.js 是一個基於 Chrome V8 引擎的 JavaScript 執行環境。可以搜尋Node.js的官網下載,安裝完成後,開啟命令提示符cmd.exe,輸入node

Vue.js系列之一初識Vue

method ntp 前端 spl 也會 date() 代碼 剖析 script 在看vue.js之前,可以先看這兩篇文章,對於為什麽要使用vue會有一定幫助 1、 Vue.js !important 2、界面之下:還原真實的MV*模式 !important 3、web前端

vue學習)、Vue.js簡介

Vue.js 五天 湯小洋一、 Vue.js簡介1. Vue.js是什麼Vue.js也稱為Vue,讀音/vju:/,類似view,錯誤讀音v-u-e 版本:v1.0 v2.0是一個構建使用者介面的框架是一個輕量級MVVM(Model-View-ViewModel)框架,和angular、react類似,其實就

Vue.js系列():Vue專案建立詳解

引言 Vue.js作為目前最熱門最具前景的前端框架之一,其提供了一種幫助我們快速構建並開發前端專案的新的思維模式。本文旨在幫助大家認識Vue.js,並詳細介紹使用vue-cli腳手架工具快速的構建Vue專案,以及對專案目錄結構的解釋說明,使大家清晰的瞭解Vue專案的開發流程。 簡介 Vue (讀音 /vj

vue學習筆記第一天-vue.js簡易留言板

fad ima con targe right 彈出框 n) ade ack <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> &l

Vue開發系列 壞境搭建

pos 全局 ini 基於 vue-cli vue 項目 ejs 前端開發 使用vue開發,需要用到圍繞vue.js配套的一系列工具,常用的工具如下: vue.js 核心。 VueRouter2 實現路由組織工具。 webpack 項目打包以及編

Vue 學習隨筆 - 初始化

Vue最近火的一塌糊塗,之前靠著年輕時候學過的一點jQuery皮毛,一直在勉強堅持做著前端的一些工作,個人水平不夠,不是說jQuery不好。但是想到年紀大了的人也要與時俱進,故,乘著專案空閒期,試了一下 VUE 和 Kotlin (java開發技術,在後續的文章會涉及)。這裡,我略過那些VUE怎麼高大上,怎麼

VUE學習筆記

什麼是Vue.js+打包工具 Webpack , Gulp+ Vue.js 是目前最火的一個前端框架,React是最流行的一個前端框架(React除了開發網站,還可以開發手機App, Vue語法也是可以用於進行手機App開發的,需要藉助於Weex)+ Vue.js 是前端的**主流框架之一**,和Angula

Vue學習系列 -- Top 30 開源專案

背景:之前負責的一個內部平臺需要進行升級改造,而FE人力緊張,無人力投入,且前端是用的Vue寫的。專案簡單,排期較長,由後端RD統一進行開發。 本人一直從事的是後端工作,對於前端工作了解的很少,對於Vue更是知之甚微,決定先進行Vue基礎知識的瞭解,然後結合開源專案加深對Vue的瞭解。 下面

Vue學習)——掛載點、模板、例項之間的關係

<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>Vue入門</title> <script src="./vue.js

Vue學習):Vue例項

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>vue例項建立</title> </head> &l

腳手架vue-cli系列:安裝與規範

我很喜歡Vue的一個重要原因就是因為它的vue-cli,這個工具可以讓一個簡單的命令列工具來幫助我快速地構建一個足以支撐實際專案開發的Vue環境,並不像Angular和React那樣要在Yoman上找適合自己的第三方腳手架。vue-cli的存在將專案環境的初始化工作與複雜度降到了最低。 1.安裝vue-cl

vue學習(prop傳不同值、 v-bind 動態賦值、單向資料流、prop校驗)

區域性註冊 在這些情況下,你可以通過一個普通的 JavaScript 物件來定義元件: var ComponentA = { /* ... */ } 然後在 components 選項中定義你想要使用的元件: new Vue({ el: '#app',

Vue學習) 利用idea 搭建 vue 專案

環境準備工作: 安裝node.js 環境  -- 略 安裝vue-li  全域性安裝vue-cli,在命令列中執行npm install -g vue-cli idea準備工作: 安裝vue.js File -> Settings ->

vue學習筆記() 環境搭建

1.對vue的認識 對於vue框架的,官方的解釋是“一套構建使用者介面的漸進式框架”,“只關注檢視層,採用自底向上增量開發的設計”,“目標是通過儘可能簡單的API實現響應的資料繫結和組合的檢視元件”。簡單粗暴的理解就是,vue是一個輕便、簡潔的框架,它可以快速構建一個工程。vue的複用性很高

Vue學習筆記:快速開始vue

import Vue from 'vue' import Vuex from 'vuex' Vue.use(Vuex) const store = new Vuex.Store({ // 定義狀態 state: { author:'dongwei', isLogin :'100'

vue學習)介紹

  1.Vue是一套用於構建使用者介面的漸進式框架 什麼是漸進式 漸進式代表的含義是:主張最少。 每個框架都不可避免會有自己的一些特點,從而會對使用者有一定的要求,這些要求就是主張,主張有強有弱,它的強勢程度會影響在業務開發中的使用方式。 比如說,Angular,它兩個

Vue學習之原始碼分析--Vue.js依賴收集(二)

為什麼要依賴收集 先看下面這段程式碼 new Vue({ template: `<div> <span>text1:</span> {{text1}}