亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專(zhuān)欄INFORMATION COLUMN

Vue2.0 學(xué)習(xí)筆記

cgh1999520 / 3084人閱讀

摘要:父子組件通信父組件通過(guò)向下傳遞數(shù)據(jù)給子組件,子組件通過(guò)給父組件發(fā)送消息。是一個(gè)對(duì)象而不是字符串?dāng)?shù)組時(shí),它包含驗(yàn)證要求。狀態(tài)管理由于多個(gè)狀態(tài)分散的跨越在許多組件和交互間,大型應(yīng)用的復(fù)雜度也隨之增長(zhǎng)。提供了,可以通過(guò)文檔學(xué)習(xí)。

什么是vue

vue是一個(gè)前端框架,主要兩個(gè)特點(diǎn):數(shù)據(jù)綁定、組件化。

安裝環(huán)境

根據(jù)教程安裝環(huán)境:node.js、npm、webpack、vue-cli
主要的命令行:

# 保證已安裝node.js環(huán)境    全局安裝 vue-cli(vue的腳手架)
$ npm install --global vue-cli
# 創(chuàng)建一個(gè)基于 webpack 模板的新項(xiàng)目
$ vue init webpack my-project
# 安裝依賴(lài),走你
$ cd my-project
$ npm install
$ npm run dev

相關(guān)的幾個(gè)命令行:

# node版本
$ node -v
# 清緩存
$ npm cache clean -f
# 全局安裝鏡像
$ npm install -g nrm
# 可用的鏡像資源
$ nrm ls
# 選用taobao的鏡像(安裝鏡像之后,npm可以輸入cnpm代替)
$ nrm use taobao
# 安裝vue路由模塊和網(wǎng)絡(luò)請(qǐng)求模塊
$ cnpm install vue-router vue-resource --save
# 工程打包
$ npm run build
編輯器插件

sublime text 中安裝Vue Syntax Highlight插件

使用官網(wǎng)文檔學(xué)習(xí)

一些小總結(jié):

template 寫(xiě) html,script寫(xiě) js,style寫(xiě)樣式

一個(gè)template下只能有一個(gè)并列的 div

數(shù)據(jù)要寫(xiě)在return 里面,如:





組件

組件是什么?
組件可以擴(kuò)展html元素,封裝可以重用的代碼。Vue.js的編譯器為它添加特殊功能。

使用組件

注冊(cè)全局組件,使用:Vue.component(tagName,options):

    //注冊(cè),對(duì)于自定義標(biāo)簽名稱(chēng),不強(qiáng)制要求遵循W3C規(guī)則(小寫(xiě),并且包含一個(gè)短杠),不過(guò)還是盡量遵循的比較好
    Vue.component("my-component",{
        template:"
A example component!
" }) //使用
//創(chuàng)建根實(shí)例,要確保初始化根實(shí)例之前注冊(cè)了組件 new Vue({ el:"#example" })

注冊(cè)局部組件,通過(guò)組件實(shí)例選項(xiàng)注冊(cè),可以使組件盡在另一個(gè)實(shí)例/組件的作用域中可用:

var Child= {
    template:"
A example component!
" } new Vue({ //... components:{ //將只在父模板可用 "my-component":Child } })

這種封裝也適用于其他可注冊(cè)的Vue功能,如指令。

父子組件通信

父組件通過(guò)props向下傳遞數(shù)據(jù)給子組件,子組件通過(guò)events給父組件發(fā)送消息。

props
組件實(shí)例的作用域是孤立的。子組件的模板內(nèi)不應(yīng)該直接引用父組件的數(shù)據(jù),可以使用props把數(shù)據(jù)傳給子組件。

props是父組件用來(lái)傳遞數(shù)據(jù)的一個(gè)自定義的屬性。子組件需要顯式的用props選項(xiàng)聲明的“prop”

Vue.component("child",{
    //聲明props
    props:["myMessage"],//使用非字符串模板時(shí),prop的名字形式會(huì)從camelCase轉(zhuǎn)為kebab-case
    template:"hello,{{message}}!"
})
//使用

//渲染
hello,jake!

動(dòng)態(tài)的props

可以用v-bind動(dòng)態(tài)綁定props的值到父組件的數(shù)據(jù)中,當(dāng)父組件的數(shù)據(jù)有變化時(shí),子組件會(huì)隨之變化。

//:my-message 是 v-bind:my-message的縮寫(xiě)

prop驗(yàn)證

組件可以為props指定驗(yàn)證要求。prop是一個(gè)對(duì)象而不是字符串?dāng)?shù)組時(shí),它包含驗(yàn)證要求。

自定義事件

子組件傳遞數(shù)據(jù)給父組件,需要用到自定義事件:
使用 $on(eventName) 監(jiān)聽(tīng)事件
使用 $emit(eventName) 觸發(fā)事件

{{ total }}

Vue.component("button-counter",{ template:"", data:function () { return { counter:0 } }, methods:{ increment: function(){ this.counter +=1 this.$emit("incrment") } } }) new Vue({ el:"#counter-event-example", data:{ total:0 }, methods:{ incrementTotal:function(){ this.total +=1 } } })
非父子組件通信

簡(jiǎn)單場(chǎng)景下,使用一個(gè)用的Vue實(shí)例作為中央事件的總線(xiàn)。

var bus = new Vue()
//觸發(fā)組件A中的事件
bus.$emit("id-selected",1)
//在組件B創(chuàng)建的鉤子中監(jiān)聽(tīng)事件
bus.$on("id-selected",function(id){
    //...
})

復(fù)雜情況下,應(yīng)該考慮專(zhuān)門(mén)的狀態(tài)管理模式。

編寫(xiě)可復(fù)用的組件

可復(fù)用的組件應(yīng)當(dāng)定義一個(gè)清晰的公開(kāi)接口,Vue組件的接口,來(lái)自三部分——props、events、slots:
props允許外部環(huán)境傳遞數(shù)據(jù)給組件。
events允許組件觸發(fā)外部環(huán)境的副作用。
slots允許外部環(huán)境將額外的內(nèi)容組合在組件中。

路由

大多數(shù)的單頁(yè)面應(yīng)用,都推薦使用vue-router庫(kù)
簡(jiǎn)單的路由不需要引入整個(gè)路由庫(kù)。如:

const NotFound = { template: "

Page not found

" } const Home = { template: "

home page

" } const About = { template: "

about page

" } const routes = { "/": Home, "/about": About } new Vue({ el: "#app", data: { currentRoute: window.location.pathname }, computed: { ViewComponent () { return routes[this.currentRoute] || NotFound } }, render (h) { return h(this.ViewComponent) } })

將 h 作為 createElement 的別名是 Vue 生態(tài)系統(tǒng)中的一個(gè)通用慣例,實(shí)際上也是 JSX 所要求的,如果在作用域中 h
失去作用, 在應(yīng)用中會(huì)觸發(fā)報(bào)錯(cuò)。

狀態(tài)管理

由于多個(gè)狀態(tài)分散的跨越在許多組件和交互間,大型應(yīng)用的復(fù)雜度也隨之增長(zhǎng)。采用簡(jiǎn)單的store模式

var store = {
  debug: true,
  state: {
    message: "Hello!"
  },
  setMessageAction (newValue) {//變更記錄
    this.debug && console.log("setMessageAction triggered with", newValue)
    this.state.message = newValue
  },
  clearMessageAction () {
    this.debug && console.log("clearMessageAction triggered")
    this.state.message = "clearMessageAction triggered"
  }
}
//實(shí)例/組件仍然可以擁有和管理自己的私有狀態(tài)
var vmA = new Vue({
  data: {
    privateState: {},
    sharedState: store.state
  }
})
var vmB = new Vue({
  data: {
    privateState: {},
    sharedState: store.state
  }

組件不允許直接修改屬于 store 實(shí)例的 state,而應(yīng)執(zhí)行 action 來(lái)分發(fā) (dispatch) 事件通知 store 去改變,我們最終達(dá)成了 Flux 架構(gòu)。這樣約定的好處是,我們能夠記錄所有 store 中發(fā)生的 state 改變,同時(shí)實(shí)現(xiàn)能做到記錄變更 (mutation) 、保存狀態(tài)快照、歷史回滾/時(shí)光旅行的先進(jìn)的調(diào)試工具。Vue提供了vuex,可以通過(guò)文檔學(xué)習(xí)。

服務(wù)端渲染SSR

先看看我們什么時(shí)候需要它:

SEO 搜索引擎優(yōu)化

客戶(hù)端網(wǎng)絡(luò)慢

客戶(hù)端運(yùn)行在老的或者沒(méi)有javascript引擎上,Vue只能運(yùn)行在IE9+

服務(wù)端渲染來(lái)改善一個(gè)少數(shù)的營(yíng)銷(xiāo)頁(yè)面等的SEO,可以用預(yù)渲染替換??梢杂?strong>prerender-spa-plugin插件來(lái)添加預(yù)渲染。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/86681.html

相關(guān)文章

  • Vue 筆記三:Vue2.0與1.0的區(qū)別

    摘要:升級(jí)的區(qū)別與的斷層式升級(jí)不同,延續(xù)了自己的風(fēng)格。在命名方式和上有一些區(qū)別,掌握它們是你升級(jí)整個(gè)項(xiàng)目的關(guān)鍵。以下內(nèi)容都是來(lái)源于個(gè)人項(xiàng)目的一些經(jīng)驗(yàn)之談,并非系統(tǒng)性的闡述。總目錄前端經(jīng)驗(yàn)收集器轉(zhuǎn)載自個(gè)人建了前端學(xué)習(xí)群,旨在一起學(xué)習(xí)前端。 升級(jí)的區(qū)別 與angular的斷層式升級(jí)不同,vue延續(xù)了自己的風(fēng)格。在命名方式和API上有一些區(qū)別,掌握它們是你升級(jí)整個(gè)項(xiàng)目的關(guān)鍵。以下內(nèi)容都是來(lái)源于個(gè)人...

    Big_fat_cat 評(píng)論0 收藏0
  • (原創(chuàng))vue 學(xué)習(xí)筆記

    摘要:菜鳥(niǎo)教程這是一個(gè)屬性其值是字符串菜鳥(niǎo)教程同上這是一個(gè)屬性其值是字符串用于定義的函數(shù),可以通過(guò)來(lái)返回函數(shù)值。它們都有前綴,以便與用戶(hù)定義的屬性區(qū)分開(kāi)來(lái)。 開(kāi)篇語(yǔ) 我最近學(xué)習(xí)了js,取得進(jìn)步,現(xiàn)在學(xué)習(xí)vue.js.建議新手學(xué)習(xí),請(qǐng)不要用npm的方式(vue-cli,vue腳手架),太復(fù)雜了. 請(qǐng)直接下載vue.js文件本地引入,就上手學(xué)習(xí)吧參照菜鳥(niǎo)教程網(wǎng)站的vue.js教程http://...

    layman 評(píng)論0 收藏0
  • vue2.0學(xué)習(xí)筆記(事件處理)

    摘要:請(qǐng)記住,會(huì)告訴瀏覽器你不想阻止事件的默認(rèn)行為。而單單釋放也不會(huì)觸發(fā)事件。修飾符修飾符允許你控制由精確的系統(tǒng)修飾符組合觸發(fā)的事件。當(dāng)一個(gè)被銷(xiāo)毀時(shí),所有的事件處理器都會(huì)自動(dòng)被刪除。 1、監(jiān)聽(tīng)事件 用 v-on 指令監(jiān)聽(tīng) DOM 事件,并在觸發(fā)時(shí)運(yùn)行一些 JavaScript 代碼。 Add 1 The button above has been clicked {{ counte...

    bovenson 評(píng)論0 收藏0
  • vue2.0學(xué)習(xí)筆記(表單輸入綁定)

    摘要:復(fù)選框當(dāng)選中時(shí)當(dāng)沒(méi)有選中時(shí)這里的和特性并不會(huì)影響輸入控件的特性,因?yàn)闉g覽器在提交表單時(shí)并不會(huì)包含未被選中的復(fù)選框。 1、基礎(chǔ)用法 v-model指令可以實(shí)現(xiàn)表單元素和Model中數(shù)據(jù)的雙向數(shù)據(jù)綁定。只能運(yùn)用在表單元素中(input、radio、text、address、email、select、checkbox、textarea) 可以用 v-model 指令在表單 、 及 元素上...

    Seay 評(píng)論0 收藏0
  • vue2.0學(xué)習(xí)筆記(組件注冊(cè))

    摘要:組件名在注冊(cè)一個(gè)組件的時(shí)候,我們始終需要給它一個(gè)名字。局部注冊(cè)全局注冊(cè)往往是不夠理想的。基礎(chǔ)組件的自動(dòng)化全局注冊(cè)可能你的許多組件只是包裹了一個(gè)輸入框或按鈕之類(lèi)的元素,是相對(duì)通用的。記住全局注冊(cè)的行為必須在根實(shí)例通過(guò)創(chuàng)建之前發(fā)生。 1、組件名 在注冊(cè)一個(gè)組件的時(shí)候,我們始終需要給它一個(gè)名字。 Vue.component(my-component-name, { /* ... */ }) ...

    silvertheo 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<