Vue的學(xué)習(xí)2/官方文檔筆記

學(xué)習(xí)過(guò)程中突發(fā)奇想

  • 程序語(yǔ)言都是處理0和1 肯定很多地方是一樣的,那么肯定有書教你怎么寫程序
  • 學(xué)習(xí)編程的第一要素是要語(yǔ)文好,語(yǔ)文好理解能力,看文檔才能懂
  • vue模板什么意思?
    //HTML 模板應(yīng)該指的是原生HTML涝影,通過(guò) el 掛載到 Vue 實(shí)例上。如在 DOM-模版解析說(shuō)明 章節(jié)提到的 HTML 模板解析的一些限制
    <table>
    <my-row>...</my-row>
    </table>
    //字符串模板,即JavaScript內(nèi)聯(lián)模版字符串
    Vue.component('my-component', {
    template: '<div>A custom component!</div>'
    })
  • 根據(jù)上面的知識(shí)點(diǎn)啟發(fā),貌似運(yùn)行環(huán)境遇到不認(rèn)識(shí)的語(yǔ)法,都默認(rèn)把代碼當(dāng)成字符串
  • 鏡像就是副本的意思,因?yàn)閲?guó)內(nèi)有墻,所以用npm下載東西有時(shí)候會(huì)太慢甚至掛掉,所以有的大公司會(huì)鏡像也就是copy一模一樣常用的框架和庫(kù)提供給國(guó)內(nèi)互聯(lián)網(wǎng)開發(fā)者

安裝

  • 目前最穩(wěn)定2.5.16版本/直接下載并用 <script> 標(biāo)簽引入,Vue 會(huì)被注冊(cè)為一個(gè)全局變量。
    //感覺和之前學(xué)的jQuery一樣,利用命名空間把所有東西封裝進(jìn)一個(gè)全局變量里面,源碼應(yīng)該return一個(gè)對(duì)象出來(lái)讓我們使用,直接Vue.XXXX
  • 在開發(fā)環(huán)境下不要使用壓縮版本,不然你就失去了所有常見錯(cuò)誤相關(guān)的警告!
  • Vue有兩個(gè)版本下載,開發(fā)和生產(chǎn)
  • Vue 提供了配套工具來(lái)開發(fā)單文件組件
  • Vue 提供一個(gè)官方命令行工具炒辉,(cli)
    //可快速搭建大型單頁(yè)應(yīng)用。
    //該工具為現(xiàn)代化的前端開發(fā)工作流提供了開箱即用的構(gòu)建配置。
    //只需幾分鐘即可創(chuàng)建并啟動(dòng)一個(gè)帶熱重載拥峦、保存時(shí)靜態(tài)檢查以及可用于生產(chǎn)環(huán)境的構(gòu)建配置的項(xiàng)目
    //vue與Cli的關(guān)系應(yīng)該和git 與gitbash的關(guān)系類似
# 全局安裝 vue-cli
$ npm install --global vue-cli
# 創(chuàng)建一個(gè)基于 webpack 模板的新項(xiàng)目
$ vue init webpack my-project
# 安裝依賴,走你
$ cd my-project
$ npm run dev
  • 官方說(shuō)通讀vue指南文檔之后再用cli
  • 不同的構(gòu)建版本應(yīng)該就是不同版本的vue的意思....
    //也就是說(shuō)vue團(tuán)隊(duì)不斷優(yōu)化自己的代碼,可能會(huì)導(dǎo)致個(gè)別API的使用方法改變

Vue術(shù)語(yǔ)

  • 完整版
    //Vue的完整版本,包括編譯器和運(yùn)行時(shí)的版本
  • 編譯器:用來(lái)將模板字符串編譯成為 JavaScript 渲染函數(shù)的代碼溪掀。
    //編譯器是代碼,是將模板字符串編譯成JavaScript渲染函數(shù)的代碼,因?yàn)関ue是寫在html 和 JavaScript上面的,vue的語(yǔ)法是不符合JavaScript和html語(yǔ)法的,所以需要編譯器來(lái)把Vue代碼翻譯成符合html,JavaScript代碼,這樣瀏覽器才能理解,并且操作頁(yè)面
  • 運(yùn)行時(shí):用來(lái)創(chuàng)建 Vue 實(shí)例事镣、渲染并處理虛擬 DOM 等的代碼【疚福基本上就是除去編譯器的其它一切璃哟。
    //就是區(qū)別于編譯器的Vue代碼,因?yàn)榫幾g器是內(nèi)置在vue這個(gè)框架代碼內(nèi)的,用戶是不用操作的,用戶操作的vue代碼都是運(yùn)行時(shí)
    //簡(jiǎn)單來(lái)說(shuō),vue代碼就是運(yùn)行時(shí),編譯器就是翻譯vue代碼的用JavaScript寫的一個(gè)庫(kù)(一般來(lái)說(shuō)是函數(shù))
  • UMD(vue的UMD版本)
    UMD 版本可以通過(guò) <script> 標(biāo)簽直接用在瀏覽器中。jsDelivr CDN 的https://cdn.jsdelivr.net/npm/vue 默認(rèn)文件就是運(yùn)行時(shí) + 編譯器的 UMD 版本 (vue.js)喊递。
    //也就是說(shuō)UMD有完整版和不完整版,他的特點(diǎn)在于可以直接通過(guò)script標(biāo)簽引入
  • 除了UMD還有commonJS,ESmodule 一共三個(gè)版本的vue,前者兼容webpack1.0后者兼容webpack2.0

糾正上面的一些理解

// 需要編譯器
new Vue({
  template: '<div>{{ hi }}</div>'
})

// 不需要編譯器
new Vue({
  render (h) {
    return h('div', this.hi)
  }
})
  • vue有組件,運(yùn)用組件要把定義標(biāo)簽寫在html上面,那么就需要編譯器了,因?yàn)閔tml頁(yè)面不認(rèn)識(shí)JavaScript代碼啊,因?yàn)関ue是用JavaScript寫的嘛
  • 運(yùn)行時(shí),就是指的是不涉及html頁(yè)面上的vue代碼,都叫運(yùn)行時(shí),因?yàn)椴簧婕癶tml就不需要編譯啊...
  • 因?yàn)闉g覽器只認(rèn)識(shí).js.css這些后綴的文件,所以你用到vue也是要編譯成JavaScript代碼瀏覽器才能理解,才能渲染頁(yè)面,webpack這種打包工具就是將各種前端開發(fā)中遇到的難題打包處理的工具,不要太爽啊

vue介紹

  • 漸進(jìn)式代表的含義是:也就是主張少,只關(guān)注視圖層随闪,便于與第三方庫(kù)或既有項(xiàng)目整合。https://www.zhihu.com/question/51907207
    - 觀看官方視頻的時(shí)候有些疑惑
    1.它說(shuō)這幾年頁(yè)面的代碼大量地從后端搬到了前端,前端代碼也是服務(wù)器響應(yīng)給瀏覽器的啊!!!肯定也是保存在后端服務(wù)器上啊...奇怪了怎么說(shuō)搬到前端?難道是說(shuō)渲染頁(yè)面的工作由后端轉(zhuǎn)移到了前端的意思?

vue介紹視頻

  • 視頻里說(shuō),因?yàn)榍岸说陌l(fā)展,大量JavaScript代碼由后端搬到了前端(估計(jì)是在瀏覽器運(yùn)行JavaScript代碼的意思),可是一個(gè)大項(xiàng)目JavaScript代碼成千上萬(wàn)啊,所以會(huì)很亂,框架就是整理這些代碼,管理代碼的工具
    //這也印證了前端代碼這幾年的模塊化之路
  • 視頻里面說(shuō):如果你有一個(gè)現(xiàn)成的服務(wù)端應(yīng)用,可以把vue當(dāng)做應(yīng)用中的一部分嵌入其中,帶來(lái)更豐富的交互體驗(yàn)
  • vue也可以幫你把更多的業(yè)務(wù)邏輯代碼放到前端來(lái),如果用了vue生態(tài)的話
  • vue允許你將一個(gè)頁(yè)面分割成多個(gè)可以復(fù)用的組件,每個(gè)組件都包含了自身的html/css/JavaScript來(lái)渲染頁(yè)面響應(yīng)的地府
    //父組件APP因?yàn)樽銐虼?所以能渲染整個(gè)頁(yè)面,子組件和孫組件比較小,可以引入APP中,供APP使用,積小成多最后撐起整個(gè)頁(yè)面,整個(gè)頁(yè)面都是VUE組件渲染的了
  • vue的特點(diǎn):
    //響應(yīng)式雙向綁定,在vue實(shí)例中的data數(shù)據(jù),只要更改都會(huì)自動(dòng)刷新,因?yàn)殡p向綁定,這是vue來(lái)做的,換言之再也不用操作jQuery了
    //當(dāng)然data數(shù)據(jù),不僅僅是顯示字符串那么簡(jiǎn)單,也可以是復(fù)雜的類型,前提是你要在vue實(shí)例里面的data屬性,那里先聲明注冊(cè)
    //貌似data必須是數(shù)組或者對(duì)象或者字符串,不能是函數(shù)
    //其中還可以用create這個(gè)API引入外部數(shù)據(jù)庫(kù)的數(shù)據(jù)
create(){
  fetch('https://XXXX')
      .then(response=>response.json())
      .then(json=>{
    this.products = json.products
  })
}
  • 構(gòu)建工具
    //構(gòu)建工具骚勘,我往往會(huì)在前面加「自動(dòng)化」三個(gè)字铐伴,因?yàn)闃?gòu)建工具就是用來(lái)讓我們不再做機(jī)械重復(fù)的事情撮奏,解放我們的雙手的。
  • 安裝教程給出了更多安裝 Vue 的方式当宴。請(qǐng)注意我們不推薦新手直接使用 vue-cli畜吊,尤其是在你還不熟悉基于 Node.js 的構(gòu)建工具時(shí)。
    //這是官方原話

Vue介紹

  • 聲明式渲染
    //vue.js的核心是一個(gè)系統(tǒng),一個(gè)將數(shù)據(jù)渲染進(jìn)dom,的系統(tǒng)(可以用模板語(yǔ)法來(lái)聲明式操作)
    //dom是一個(gè)JavaScript對(duì)象,一個(gè)根據(jù)html結(jié)構(gòu)產(chǎn)生了相應(yīng)節(jié)點(diǎn)(可操作的JavaScript對(duì)象)的對(duì)象,這個(gè)對(duì)象封裝了很多可以操作這些節(jié)點(diǎn)對(duì)象的函數(shù)(方法),可以說(shuō)頁(yè)面的展示離不開dom,dom可以操作html,可以修改html節(jié)點(diǎn),文本,樣式,所以Vue要把頁(yè)面的數(shù)據(jù)交給dom,由dom來(lái)渲染頁(yè)面
    //不僅如此,Vue還做到了極致,因?yàn)镈OM是根據(jù)DOM渲染樹來(lái)渲染頁(yè)面的,而頁(yè)面的代碼加載是有順序的,而且加載到哪里,頁(yè)面就渲染到哪里;Vue不是直接交數(shù)據(jù)給DOM,而是先交給虛擬DOM,讓虛擬DOM計(jì)算最終樣式,才把最終樣式交給真的DOM來(lái)渲染頁(yè)面
    //所以Dom有文本和特性這些概念,dom文本實(shí)際上就是某個(gè)標(biāo)簽里面的文本內(nèi)容,dom特性其實(shí)就是某個(gè)節(jié)點(diǎn)的特性,或者說(shuō)是某個(gè)html標(biāo)簽的特性
    //沒有vue的時(shí)候,我們用jQuery來(lái)做特效,需要用命令式的代碼來(lái)操作DOM;現(xiàn)vue幫你操作dom,不用親自寫dom相關(guān)的代碼,但是vue又不會(huì)干預(yù)你想親自操作dom,這就是Vue聲明式代碼的好處
  • v-for 指令可以綁定數(shù)組的數(shù)據(jù)來(lái)渲染
    //很明顯,用v-for的數(shù)據(jù)必須是一個(gè)數(shù)組,而且還可以親自操作 app4.todos.push({ text: '新項(xiàng)目' })户矢,在列表最后添加了一個(gè)新項(xiàng)目玲献。
  • 模板是將一個(gè)事物的結(jié)構(gòu)規(guī)律予以固定化、標(biāo)準(zhǔn)化的成果梯浪,它體現(xiàn)的是結(jié)構(gòu)形式的標(biāo)準(zhǔn)化,簡(jiǎn)單來(lái)說(shuō)就是一種格式
  • Vue應(yīng)用的意思就是一個(gè)頁(yè)面,對(duì)應(yīng)SPA單頁(yè)面應(yīng)用,也就是說(shuō)一個(gè)頁(yè)面就是一個(gè)應(yīng)用
  • 注意只有v-Module的數(shù)據(jù)才是雙向綁定,其他只算是響應(yīng)式,這里面是有區(qū)別的

組件化應(yīng)用構(gòu)建

  • 組件系統(tǒng)是 Vue 的另一個(gè)重要概念捌年,因?yàn)樗且环N抽象,允許我們使用小型挂洛、獨(dú)立和通忱裨ぃ可復(fù)用的組件構(gòu)建大型應(yīng)用。
  • 在 Vue 里虏劲,一個(gè)組件本質(zhì)上是一個(gè)擁有預(yù)定義選項(xiàng)的一個(gè) Vue 實(shí)例托酸。
    //組件就是一個(gè)vue實(shí)例,一個(gè)擁有預(yù)定義選項(xiàng)的vue實(shí)例,使用組件必須在vue注冊(cè)
  • 終于搞清楚了,模板指的是組件模板,和組件相關(guān)的vue語(yǔ)法 就是模板語(yǔ)法,不管在html頁(yè)面里還是JavaScript頁(yè)面里,只要和組件模板相關(guān)的語(yǔ)法都是模板語(yǔ)法
// 定義名為 todo-item 的新組件
Vue.component('todo-item', {
  template: '<li>這是個(gè)待辦項(xiàng)</li>'
})
現(xiàn)在你可以用它構(gòu)建另一個(gè)組件模板:
<ol>
  <!-- 創(chuàng)建一個(gè) todo-item 組件的實(shí)例 -->
  <todo-item></todo-item>
</ol>

但是這樣會(huì)為每個(gè)待辦項(xiàng)渲染同樣的文本,這看起來(lái)并不炫酷伙单。我們應(yīng)該能從父作用域?qū)?shù)據(jù)傳到子組件才對(duì)获高。讓我們來(lái)修改一下組件的定義,使之能夠接受一個(gè) prop

Vue.component('todo-item', {
  // todo-item 組件現(xiàn)在接受一個(gè)
  // "prop"吻育,類似于一個(gè)自定義特性念秧。
  // 這個(gè) prop 名為 todo。
  props: ['todo'],
  template: '<li>{{ todo.text }}</li>'
})

現(xiàn)在布疼,我們可以使用 v-bind 指令將待辦項(xiàng)傳到循環(huán)輸出的每個(gè)組件中

<div id="app-7">
  <ol>
    <!--
      現(xiàn)在我們?yōu)槊總€(gè) todo-item 提供 todo 對(duì)象
      todo 對(duì)象是變量摊趾,即其內(nèi)容可以是動(dòng)態(tài)的。
      我們也需要為每個(gè)組件提供一個(gè)“key”游两,稍后再
      作詳細(xì)解釋砾层。
    -->
    <todo-item
      v-for="item in groceryList"
      v-bind:todo="item"
      v-bind:key="item.id">
    </todo-item>
  </ol>
</div>
Vue.component('todo-item', {
  props: ['todo'],
  template: '<li>{{ todo.text }}</li>'
})

var app7 = new Vue({
  el: '#app-7',
  data: {
    groceryList: [
      { id: 0, text: '蔬菜' },
      { id: 1, text: '奶酪' },
      { id: 2, text: '隨便其它什么人吃的東西' }
    ]
  }
})

總結(jié)

  • Vue的實(shí)例就是開發(fā)SPA中的單頁(yè)面應(yīng)用,當(dāng)然也可以是多頁(yè)面應(yīng)用,簡(jiǎn)單來(lái)說(shuō)就是Vue實(shí)例綁定一個(gè)頁(yè)面的body,頁(yè)面變成了一個(gè)Vue實(shí)例
  • 根據(jù)Vue官方視頻的說(shuō)法,webapp是由多個(gè)組件組成的,所以Vue實(shí)例這個(gè)頁(yè)面應(yīng)用也有很多組件組成的,用法就是Vue.component來(lái)注冊(cè),然后在頁(yè)面上寫上組件的模板就行了
  • 其中vue的實(shí)例(當(dāng)前頁(yè)面app)的data就用來(lái)存總數(shù)據(jù)的,它可以給子組件使用,而子組件(vue.compenent聲明的所有子組件都可以用props這個(gè)屬性來(lái)接受父組件傳的數(shù)據(jù),)
    //也可以說(shuō)props是子組件的data,只不過(guò)這是父親那邊傳過(guò)來(lái)的
  • 最后如果想使用父親的data 方法是在組件模板中, 用模板指令來(lái)建立橋梁 讓子組件的props和父組件的data變量產(chǎn)生關(guān)聯(lián)
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市贱案,隨后出現(xiàn)的幾起案子肛炮,更是在濱河造成了極大的恐慌,老刑警劉巖宝踪,帶你破解...
    沈念sama閱讀 216,402評(píng)論 6 499
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件侨糟,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡瘩燥,警方通過(guò)查閱死者的電腦和手機(jī)秕重,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,377評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)厉膀,“玉大人溶耘,你說(shuō)我怎么就攤上這事二拐。” “怎么了凳兵?”我有些...
    開封第一講書人閱讀 162,483評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵百新,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我留荔,道長(zhǎng)吟孙,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,165評(píng)論 1 292
  • 正文 為了忘掉前任聚蝶,我火速辦了婚禮,結(jié)果婚禮上藻治,老公的妹妹穿的比我還像新娘碘勉。我一直安慰自己,他們只是感情好桩卵,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,176評(píng)論 6 388
  • 文/花漫 我一把揭開白布验靡。 她就那樣靜靜地躺著,像睡著了一般雏节。 火紅的嫁衣襯著肌膚如雪胜嗓。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,146評(píng)論 1 297
  • 那天钩乍,我揣著相機(jī)與錄音辞州,去河邊找鬼。 笑死寥粹,一個(gè)胖子當(dāng)著我的面吹牛变过,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播涝涤,決...
    沈念sama閱讀 40,032評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼媚狰,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了阔拳?” 一聲冷哼從身側(cè)響起崭孤,我...
    開封第一講書人閱讀 38,896評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎糊肠,沒想到半個(gè)月后辨宠,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,311評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡罪针,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,536評(píng)論 2 332
  • 正文 我和宋清朗相戀三年彭羹,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片泪酱。...
    茶點(diǎn)故事閱讀 39,696評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡派殷,死狀恐怖还最,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情毡惜,我是刑警寧澤拓轻,帶...
    沈念sama閱讀 35,413評(píng)論 5 343
  • 正文 年R本政府宣布,位于F島的核電站经伙,受9級(jí)特大地震影響扶叉,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜帕膜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,008評(píng)論 3 325
  • 文/蒙蒙 一枣氧、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧垮刹,春花似錦达吞、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至寺董,卻和暖如春覆糟,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背遮咖。 一陣腳步聲響...
    開封第一講書人閱讀 32,815評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工滩字, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人盯滚。 一個(gè)月前我還...
    沈念sama閱讀 47,698評(píng)論 2 368
  • 正文 我出身青樓踢械,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親魄藕。 傳聞我的和親對(duì)象是個(gè)殘疾皇子内列,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,592評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容

  • 1.安裝 可以簡(jiǎn)單地在頁(yè)面引入Vue.js作為獨(dú)立版本,Vue即被注冊(cè)為全局變量背率,可以在頁(yè)面使用了话瞧。 如果希望搭建...
    Awey閱讀 11,014評(píng)論 4 129
  • vue對(duì)比react交排、Angular(轉(zhuǎn)官方文檔) React React 和 Vue 有許多相似之處,它們都有:...
    simple_50a1閱讀 1,356評(píng)論 0 5
  • 這篇筆記主要包含 Vue 2 不同于 Vue 1 或者特有的內(nèi)容饵筑,還有我對(duì)于 Vue 1.0 印象不深的內(nèi)容埃篓。關(guān)于...
    云之外閱讀 5,048評(píng)論 0 29
  • The exam was finished, I felt very good. I went to eat sp...
    木穰閱讀 189評(píng)論 0 1
  • 拆書幫年會(huì) 一、 I:丘舵對(duì)我說(shuō):采訪了很多成功人士根资,在臨死的時(shí)候架专,他們遺憾的事情80%的事情是想做沒有做的事情同窘,...
    慧玲蘭心閱讀 238評(píng)論 0 1