漸進式JavaScript框架javascript
經過對框架的瞭解與運用程度,來決定其在整個項目中的應用範圍,最終能夠獨立以框架方式完成整個web前端項目css
VUE能夠徹底脫離服務器端,之前端代碼複用的方式渲染整個頁面:組件化開發html
<body> <div id="app"></div> <p class="p1">{{ }}</p> <p class="p2">{{ }}</p> </body> <script src="js/vue.js"></script> <script> new Vue({ el:'#app' }) </script>
<body> <div id="app"> <p>{{ msg }}</p> <p>{{ info }}</p> <h3>{{ msg }}</h3> </div> </body> <script src="js/vue.js"></script> <script> // 實例成員中的data是爲vue頁面模板經過數據變量的 let app = new Vue({ el: '#app', data: { msg: 'message', info: 'vue變量信息' } }); console.log(app.info); // 建立vue實例(new Vue)傳進去的字典(對象)的key,稱之爲vue實例成員(變量) // 訪問實例成員,用 vue實例.$成員名, eg:app.$el console.log(app.$el); console.log(app.$data); console.log(app.$data.info); </script>
<script> // 1.js中沒有字典,只要對象類型,能夠把對象當作字典來使用 // 2.key本質是屬性名,因此都是字符串類型(能夠出現1,true),其實都是省略引號的字符串 let sex = '男'; let dic = { 'name': 'Owen', 1: 100, true: 12345, age: 18, // sex: 'sex', sex, }; console.log(dic['name']); console.log(dic['1']); console.log(dic['true']); console.log(dic['age']); console.log(dic.sex); dic.price = 3.5; console.log(dic.price); // 聲明類建立對象,類能夠實例化n個對象,哪一個對象調用,this就表明誰 function People(name, age) { this.name = name; this.age = age; this.eat = function () { console.log(this.name + '在吃飯'); return 123 } } let p1 = new People('Owen', 17.5); console.log(p1.name); let res = p1.eat(); console.log(res); // 直接聲明對象,{}內的key都屬於當前對象的 // {}中的方法一般會簡寫 let stu1 = { name: '張三', age: 18, // eat: function () { // console.log(this.name + '在吃飯'); // } eat () { console.log(this.name + '在吃飯'); } }; stu1.eat() </script>
<html lang="zh"> <head> <meta charset="UTF-8"> <title>事件</title> <style> body { /*頁面內容不容許被選中*/ user-select: none; } .p1:hover { cursor: pointer; color: green; } </style> </head> <body> <div id="app"> <p class="p1" v-on:click="fn">這是一個段落,被點擊了{{ count }}下</p> <p class="p2" v-on:mouseover="overAction" v-on:mouseout="outAction" >該便籤被{{ action }}</p> <div v-on:mouseover="overAction" v-on:mouseout="outAction">div被{{ action }}</div> </div> </body> <script src="js/vue.js"></script> <script> let app = new Vue({ el: '#app', data: { count: 0, action: '渲染', // fn: function () { // // console.log(app.count); // // app.count ++ // console.log(this); // this不是該vue實例對象,是頂級Window對象 // } }, // methods就是爲vue實例提供事件函數的 methods: { fn: function () { // console.log(app.count); // app.count ++; // console.log(this); // this表明當前該vue實例對象 this.count ++ }, overAction: function () { this.action = '懸浮' }, outAction: function () { this.action = '離開' } } }); </script> </html>
<body> <div id="app"> <!--插值表達式--> <p>{{ msg }}</p> <!--eg:原文本會被msg替代--> <p v-text="msg">原文本</p> <!--解析帶html的標籤的文本信息--> <p v-html="msg"></p> <!-- v-once 控制的標籤只能被賦值一次--> <p v-once>{{ msg }}</p> </div> </body> <script src="js/vue.js"></script> <script type="text/javascript"> //指令:出如今html標籤中,能夠被vue解析處理的全局屬性 new Vue({ el:"#app", data:{ msg:'message' } }) </script>
<body> <div id="app"> <!--事件指令:v-on:事件名="事件函數" --> <!--簡寫:@事件名="事件函數" --> <p v-on:click="f1">被點擊了{{ count }}下</p> <p @click="f2">{{ p2 }}</p> <!--綁定的事件函數能夠添加(),添加括號就表明要傳遞參數--> <ul> <li @click="f3(100)">{{ arr[0] }}</li> </ul> <!--綁定的事件函數若是沒有傳遞參數,默認傳入 事件對象 --> <div class="box" @click="f5"></div <!--事件函數一旦添加傳參(),系統就再也不傳遞任何參數,須要事件對象時,能夠手動傳入 $event --> <div class="box" @click="f6(10, $event)"></div> </div> </body>
<body> <div id="app"> <!--給自定義全局屬性綁定變量--> <p v-bind:abc="abc"></p> <!--以原形字符串綁定全局屬性--> <p v-bind:title="'abc'"></p> <!--單類名綁定--> <p v-bind:class="c1"></p> <!--多類名綁定--> <p v-bind:class="[c2,c3]"></p> <!--類名狀態綁定--> <p v-bind:class="[{c5:true},{c6:false}]"></p> <!--樣式綁定--> <div :style="div_style"></div> <div :style="{width:'100px',height:'100px',backgroundColor:'blue'"></div> </div> <script type="text/javascript"> new Vue({ el: "#app", data:{ abc:"abc", c1:'p1', c2:'p2', c3:'p3', div_style:{ width:"200px", height:"200px", backgroundColor:"cyan" } } }) </script> <!-- v-bind:指令能夠簡寫爲 : --> </body>
<body> <div id="app"> <!-- 默認將msg做爲參數傳給filterFn --> <p>{{ msg | filterFn }}</p> <!--過濾器串聯--> <p>{{ num | f1 | f2 }}</p> <!--能夠同時對多個變量進行過濾,變量用,分割,過濾器還能夠額外傳入參數輔助過濾--> <!--過濾器方法接收全部傳入的參數,按傳入的位置進行接收--> <p>{{ msg, num | f3(666, '好的') }}</p> </div> </body> <script src="js/vue.js"></script> <script> new Vue({ el: '#app', data: { msg: '文本內容', num: 1 }, filters: { filterFn(v1, v2) { // console.log(v1); // console.log(v2); return `<b>${v1}</b>`; }, f1(v1) { return v1 * 100; }, f2(v1) { return v1 * 100; }, f3(v1, v2, v3, v4) { console.log(v1); console.log(v2); console.log(v3); console.log(v4); } } }) </script>
<style> .box { width: 200px; height: 200px; border-radius: 50%; overflow: hidden; } .b1 { width: 100px; height: 200px; background-color: red; float: left; } .b2 { width: 100px; height: 200px; background-color: green; float: right; } </style> </head> <body> <div id="app"> <div class="box"> <div class="b1"></div> <div class="b2"></div> </div> </div> </body> <script src="js/vue.js"></script> <script> new Vue({ el: '#app' }) </script>