Vue介绍
前台框架:angular、react、vue
vue:有前两大框架优点,摈弃缺点;没有前两个框架健全
vue优点:中文API、单页面应用、组件化开发、数据双向绑定、虚拟DOM、数据驱动思想(相比DOM驱动)
如何使用Vue
模板:
<!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF-8"> <title></title> </head> <body> <div id="app"> </div> </body> <script src="js/vue.js"></script> <script> new Vue({ el: '#app', data: { } }) </script> </html>
Vue实例
1.el实例
new Vue({
el: '#app'
})
// 实例与页面挂载点一一对应
// 一个页面中可以出现多个实例对应多个挂载点,挂载点采用的是css3选择器语法,但是只能匹配第一次检索到的结果
// 实例只操作挂载点内部内容
// html与body标签不能作为挂载点
2.data数据
<div id='app'> {{ msg }} </div> <script> var app = new Vue({ el: '#app', data: { msg: '数据', } }) console.log(app.$data.msg); console.log(app.msg); </script> <!-- data为插件表达式中的变量提供数据 --> <!-- data中的数据可以通过Vue实例直接或间接访问-->
3.methods方法
<style> .box { background-color: orange } </style> <div id='app'> <p class="box" v-on:click="pClick">测试</p> <p class="box" v-on:mouseover="pOver">测试</p> </div> <script> var app = new Vue({ el: '#app', methods: { pClick () { // 点击测试 }, pOver () { // 悬浮测试 } } }) </script> <!-- 了解v-on:为事件绑定的指令 --> <!-- methods为事件提供实现体-->
<!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF-8"> <title>Vue实例</title> <style> body { user-select: none; } </style> </head> <body> <section> <div id="d1"> {{ msg }} <p v-on:click="pClick" v-bind:style="pStyle">{{ info }}</p> </div> <hr> <div class="d2"> {{ }} </div> <hr> <div class="d2"> {{ }} </div> </section> </body> <script src="js/vue.js"></script> <script> ` console.log(Vue); let app = new Vue({ el: '#d1', // 挂载点:vue实例与页面标签建立关联 }); new Vue({ el: '.d2', // 挂载点采用的是css3选择器语法,但是只能匹配第一次检索到的结果 }); `; // 总结: // 1、通常挂载点都采用id选择器(唯一性) // 2、html与body标签不能作为挂载点(组件知识点解释) // new Vue({ // el: 'body' // }) let app = new Vue({ el: 'section', data: { // data为挂载点内部提供数据 msg: 'message', info: '信息', pStyle: { color: 'yellowgreen' } }, methods: { pClick: function () { if (app.pStyle.color !== 'yellowgreen') { app.pStyle.color = 'yellowgreen' } else { app.pStyle.color = 'red' } console.log(app.msg); console.log(app.pClick); console.log(this.msg); console.log(this.pClick); } } }); // 声明的实例是否用一个变量接收 // 1、在实例内部不需要,用this就代表当前vue实例本身 // 2、在实例外部或其他实例内部需要,定义一个变量接收new Vue()产生的实例 console.log(app.msg) </script> </html>
插值表达式
<!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF-8"> <title></title> </head> <body> <div id="app"> <p>{{ msg }}</p> //msg <p>{{ num * 10 }}</p> //100 <p>{{ msg + num }}</p> //msg10 <p>{{ msg[1] }}</p> //s <p>{{ msg.split('') }}</p> //["m","s","g"] </div> </body> <script src="js/vue.js"></script> <script> new Vue({ el: '#app', data: { msg: 'msg', num: 10 } }) </script> </html>
文本指令
v-text:不能解析html语法的文本,会原样输出
v-html:能解析html语法的文本
v-once:处理的标签的内容只能被解析一次
<!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF-8"> <title></title> </head> <body> <div id="app"> <!-- 文本指令: 1、{{ }} 2、v-text:不能解析html语法的文本,会原样输出 3、v-html:能解析html语法的文本 4、v-once:处理的标签的内容只能被解析一次 --> <p>{{ msg.split('') }}</p> //[ "m", "e", "s", "s", "a", "g", "e" ] <p v-text="msg.split('')">12345</p> //[ "m", "e", "s", "s", "a", "g", "e" ] <p v-text="info"></p> //<i>info</i> <p v-html="info"></p> //info(斜体 ) <hr> <p v-on:click="pClick" v-once>{{ msg + info }}</p> //message<i>info</i> <p>{{ msg }}</p> //信息 </div> </body> <script src="js/vue.js"></script> <script> new Vue({ el: '#app', data: { msg: 'message', info: '<i>info</i>' }, methods: { pClick: function () { this.msg = '信息' } } }) </script> </html>
面向对象js
<!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF-8"> <title>面向对象js</title> </head> <body> <h1>面向对象js</h1> </body> <script> // undefined、null、string、number、boolean、object(Array)、function // var、let、const、不写 // object(Array)、function function f1() { console.log('f1 run') } f1(); //f1 run // 构造函数 == 类 function F2(name) { this.name = name; this.eat = function (food) { console.log(this.name + '在' + food); } } let ff1 = new F2("Bob"); console.log(ff1.name); //f1 Bob let ff2 = new F2("Tom"); console.log(ff2.name); //f1 Tom ff1.eat('饺子'); //Bob在饺子 ff2.eat('sao子面'); //Tom在sao子面 let obj = { name: 'Jerry', // eat: function (food) { // console.log(this.name + '在' + food) // }, eat(food) { // 方法的语法 console.log(this.name + '在' + food) } }; console.log(obj.name); //Jerry obj.eat('hotdog'); // Jerry在hotdog </script> </html>
js的函数
var let count d
function f() { d = 40; // 全局变量 } f(); console.log(d); const c = 30; // 常量 // c = 20 常量不能被修改 console.log(c); if (1) { var a = 10; //可以重复定义 let b = 20; // let、const定义的变量不能重复定义,且具备块级作用域(只要有大括号,出了大括号就用不了了) } console.log(a); // console.log(b); for (let i = 0; i < 5; i++) { console.log(i); } // console.log(i); // console.log(i); // console.log(i);
function、箭头函数、方法
箭头函数
// 如果箭头函数没有函数体,只有返回值
let f4 = (n1, n2) => n1 + n2;
let res = f4(10, 25);
console.log(res); //35
// 如果箭头函数参数列表只有一个,可以省略(),如果没有参数,或者参数大于1个,必须写()
let f5 = num => num * 10;
res = f5(10);
console.log(res); //100