渐进式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>