用淘寶的國內服務器來向國外的服務器請求,咱們向淘寶請求,而不是由咱們直接向國外的服務器請求,會大大提高請求速度,使用時,將全部的npm命令換成cnpm便可html
安裝文檔:https://cli.vuejs.org/zh/guide/cli-service.html#%E4%BD%BF%E7%94%A8%E5%91%BD%E4%BB%A4前端
1 <body> 2 <div id="app"></div> 3 <script src="vue.js"></script> 4 <script> 5 let App={ 6 data(){return{data:"hello"}}, 7 //使用語法 8 template:`<div>我是一個app {{ data | reverse }}</div>`, 9 //建立語法 10 filters:{ 11 reverse:function(val){ 12 return val.split('').reverse().join("") 13 } 14 } 15 } 16 17 new Vue({ 18 el:"#app", 19 data(){ 20 return{} 21 }, 22 template:`<div class="vue"><App></App></div>`, 23 components:{ 24 App 25 } 26 }) 27 </script> 28 </body>
1 <body> 2 <div id="app"></div> 3 <script src="vue.js"></script> 4 <script src="day03/moment.js"></script> 5 <script> 6 //建立語法 7 Vue.filter("showTime",function(val,style,a){ 8 return moment(val).format(style) 9 }) 10 new Vue({ 11 el:"#app", 12 data(){ 13 return{time:new Date()} 14 }, 15 //使用語法 16 template:`<div>如今的時間是:{{ time | showTime("YYYY-MM-DD",1) }}</div>`, 17 }) 18 </script> 19 </body>
注:參數的個數沒有限制vue
JavaScript 日期處理類庫ajax
使用文檔:http://momentjs.cn/vue-router
1 <body> 2 <div id="app"></div> 3 4 <script src="vue.js"></script> 5 <script> 6 let Test={ 7 data(){ 8 return {msg:"shy"} 9 }, 10 template:`<div id="change">我叫{{ msg }}<button @click="change">更新</button></div>`, 11 methods:{ 12 change(){ 13 this.msg="dsz" 14 } 15 }, 16 beforeCreate() { 17 // 組件建立以前 18 console.log('組件建立以前', this.msg); 19 }, 20 created() { 21 //!!!!!!!!!!!!!!!!!!!!!! 22 // 組件建立以後,此時的DOM尚未渲染完成 23 //做用:可用來發送ajax,獲取ajax數據,爲DOM操做提供數據支撐 24 console.log('組件建立以後', this.msg); 25 }, 26 27 beforeMount() { 28 // 掛載以前: 29 console.log(document.getElementById('app')); 30 }, 31 mounted() { 32 //!!!!!!!!!!!!!!!!!!!!!! 33 //掛載以後:Test掛載在App上,App掛載在Vue上 34 //做用:能夠在此處操做DOM, 35 console.log(document.getElementById('app')); 36 }, 37 38 beforeUpdate() { 39 // 在更新以前,調用此鉤子,應用:獲取原始的DOM 40 console.log(document.getElementById('change').innerHTML); 41 42 }, 43 updated() { 44 // 在更新以後,調用此鉤子,應用:獲取最新的DOM 45 console.log(document.getElementById('change').innerHTML); 46 }, 47 48 beforeDestroy() { 49 //在組件銷燬以前 50 console.log('beforeDestroy'); 51 }, 52 destroyed() { 53 //在組件銷燬以後 54 //做用:經常使用於清除定時器 55 console.log('destroyed',this.timer); 56 }, 57 58 activated(){ 59 console.log('組件被激活了'); 60 }, 61 deactivated(){ 62 console.log('組件被停用了'); 63 } 64 }; 65 let App={ 66 data(){ 67 return{is_show:true} 68 }, 69 template: `<div><keep-alive><Test v-if="is_show"></Test></keep-alive><button @click="change_test">改變test組件的生死</button></div>`, 70 methods:{ 71 change_test(){ 72 this.is_show=!this.is_show 73 } 74 }, 75 components:{ 76 Test 77 } 78 }; 79 new Vue({ 80 el:"#app", 81 data(){ 82 return{} 83 }, 84 template: `<div><App></App></div>`, 85 components:{ 86 App 87 } 88 89 }) 90 </script> 91 </body>
vuex
Vue提供的內置組件vue-cli
主要做用:讓組件產生緩存npm
注:獲取DOM的救命稻草編程
document.querySelector("#app")後端
vue-router是vue的核心插件
vue+vue-router 主要來作 SPA(Single Page Application) 單頁面應用
傳統的路由跳轉,若是後端資源過多,會致使頁面出現白屏現象,讓前端來作路由,在某個生命週期的鉤子函數中發送ajax,數據驅動。爲了用戶體驗
注:掘金,開發者資源網站
下載地址:https://unpkg.com/vue-router/dist/vue-router.js
注:vue-router插件依賴於vue
1 <body> 2 <div id="app"> 3 <p> 4 <!--router-link和router-link是vue-router的兩個全局組件--> 5 <!--router-link至關於a標籤 to至關於href--> 6 <router-link to="/">首頁</router-link> 7 <router-link to="/course">課程</router-link> 8 </p> 9 <!--router-view是整個路由組件的出口--> 10 <router-view></router-view> 11 </div> 12 <script src="vue.js"></script> 13 <script src="vue-router.js"></script> 14 <script> 15 //0.若是是模塊化編程,必需要加這句話,至關於Vue.proptotype.$VueRouter=VueRouter,給Vue的原型上掛載一個屬性 16 // Vue.use() 17 18 //3.定義路由組件 19 const Home={ 20 template:`<div>我是主頁內容</div>` 21 }; 22 const Course={ 23 template:`<div>我是課程內容</div>` 24 }; 25 26 //1.建立router實例 27 const router=new VueRouter({ 28 //擺脫了哈希,它使用URL的哈希來模擬一個完整的URL 29 mode:'history', 30 routes:[ 31 //2.定義路由規則 32 { 33 path:'/', 34 //對訪問地址重定向 35 redirect:'/home' 36 }, 37 { 38 path:'/home', 39 component:Home 40 }, 41 { 42 path:"/course", 43 component:Course 44 } 45 ] 46 }); 47 48 //4.建立並掛載router實例 49 const app=new Vue({ 50 //key和value相同寫一個 51 router 52 }).$mount("#app") 53 </script> 54 </body>
(1)在routes中定義name
1 <body> 2 <div id="app"> 3 <p> 4 //(2)在使用時對router-link的to屬性綁定 5 <router-link :to='{name:"Home"}'>首頁</router-link> 6 <router-link :to="{name:'Course'}">課程</router-link> 7 </p> 8 <router-view></router-view> 9 </div> 10 <script src="vue.js"></script> 11 <script src="vue-router.js"></script> 12 <script> 13 14 const Home={ 15 template:`<div>我是首頁</div>` 16 }; 17 18 const Course={ 19 template:`<div>我是課程</div>`, 20 }; 21 22 const router=new VueRouter({ 23 routes:[ 24 { 25 //(1)在routes中定義name 26 path:'/home', 27 name:'Home', 28 component:Home 29 }, 30 { 31 path:'/course', 32 name:'Course', 33 component:Course 34 } 35 ] 36 }); 37 const app=new Vue({ 38 router, 39 }).$mount("#app") 40 </script> 41 </body>
若是是動態路由用parmas
1 <body> 2 <div id="app"> 3 <p> 4 //使用時 5 <router-link :to='{name:"Home",params:{id:1}}'>第一頁</router-link> 6 <router-link :to='{name:"Home",params:{id:2}}'>第二頁</router-link> 7 </p> 8 <router-view></router-view> 9 </div> 10 <script src="vue.js"></script> 11 <script src="vue-router.js"></script> 12 <script> 13 14 const Home={ 15 data(){ 16 return{ 17 user_id:3 18 } 19 }, 20 template:`<div>我是首頁{{ user_id }}</div>`, 21 watch:{ 22 //路由信息對象(到哪裏去,從哪裏來) 23 '$route'(to,from){ 24 console.log(111) 25 console.log(to); 26 this.user_id = to.params.id; 27 } 28 } 29 }; 30 31 const router=new VueRouter({ 32 routes:[ 33 { 34 //定義時 35 path:'/home/:id', 36 name:'Home', 37 component:Home 38 } 39 ] 40 }); 41 const app=new Vue({ 42 router, 43 }).$mount("#app") 44 </script> 45 </body>
編程式經過本身的邏輯,來實現複雜的業務 聲明式是經過框架自帶的標籤屬性來完成業務 前者須要本身寫大量重複的事務控制代碼,後者經過設置能夠一次性給全部的業務方法添加上事務特性。