摘要: 年後公司項目開始上vue2.0,本身對學習進行了總結,但願對你們有幫助!javascript
VUE2.0學習php
核心庫
只關注視圖層,可是vue並不僅關注視圖,和angular同樣也有指令,過濾器這些東西# 全局安裝 vue-cli $ npm install --global vue-cli # 建立一個基於 webpack 模板的新項目 $ vue init webpack my-project # 安裝依賴,走你 $ cd my-project $ npm install $ npm run dev
npm install vue-loader -save-dev
{
test: /\.js$/, // 用正則來匹配文件路徑,這段意思是匹配 js 或者 jsx loader: 'babel'// 加載模塊 "babel" 是 "babel-loader" 的縮寫 }, { test: /\.vue$/, loader: 'vue' }
vue: { loaders: { js: 'babel' } }
{
"presets": ["es2015","stage-0","stage-1","stage-2","stage-3"] // "plugins": ["transform-runtime"] }
resolve: { extensions: ['', '.js', '.json', '.scss', '.vue'] }
npm install vue -save
npm install vue-template-compiler -save
import Vue from 'vue' import AppContainer from '../containers/AppContainer' const app = new Vue({ render: h => h(AppContainer), }).$mount('#app') // new Vue({ // el:'#app', // render: h => h(App) // })
<template> <div> {{msg}} </div> </template> <style> body{ background-color:#ff0000; } </style> <script> export default{ data(){ return{ msg:'hello vue' } } } </script>
實例.動態屬性名
實例.$實例屬性名
獲取this.a
去獲取動態屬性this.$data
去獲取實例屬性var data = {a: 1} const app = new Vue({ // 和數據相關的都掛載到data上 data: data, // 和方法相關的都掛載到methods上 methods: { // this和$的使用 func1: function () { console.log(this.a); console.log(this.$data.a); }, changeData:function () { this.a=2 } } }) // 先監聽再改變 app.$watch('a', function (newVal, oldVal) { console.log(newVal) console.log(oldVal) }) // 值改變以後會自動執行監聽方法 // data的值是能夠直接改變的,和react的setState方法不同,由於vue裏面用了ES6的set和get方法,能夠起到自動監聽的做用 app.a=3 // 動態屬性和實例屬性 // console.log(app) // console.log(app.a) // console.log(app.$data.a)
// 錯誤的寫法 <div id="{{id}}"></div> // 正確的寫法 <div v-bind:id="id"></div>
{{ number + 1 }} {{ ok ? 'YES' : 'NO' }} {{ message.split('').reverse().join('') }} <div v-bind:id="'list-' + id"></div>
{{ message | capitalize }}
{{ message | filterA | filterB }}
new Vue({ // ... filters: { capitalize: function (value) { if (!value) return '' value = value.toString() return value.charAt(0).toUpperCase() + value.slice(1) } } })
<a v-on:click="doSomething">
<form v-on:submit.prevent="onSubmit"></form>
<!-- 完整語法 --> <a v-bind:href="url"></a> <!-- 縮寫 --> <a :href="url"></a>
<!-- 完整語法 --> <a v-on:click="doSomething"></a> <!-- 縮寫 --> <a @click="doSomething"></a>
計算屬性 vs methodscss
<template> <div> <p>Original message: "{{ message }}{{name}}"</p> <p>Computed reversed message: "{{ reversedMessage }}"</p> <p>Computed reversed message: "{{ reverseMessage() }}"</p> </div> </template> <style> body{ background-color:#ff0000; } </style> <script> export default