Vue基础使用
Vue
Vue与JQuery比较
- VUE与Jquery比较 jquery在操作数据的时候一般要操作dom,进行标签的crud
- Vue主要是面向数据操作,主要功能是处理数据,对于标签的操作由Vue自动完成
- Vue面向数据编程思想的一种体现,对数据完成操作即对标签完成操作
Vue简介
- Vue是一套构建用户界面的渐进式前端框架
- 自是关注视图层,方便与其他已有库配合或与已有项目整合
- 通过尽可能简单的 API 来实现响应数据的绑定和组合的视图组件。
- Vue特点: 易用:在有 HTML CSS JavaScript 的基础上,快速上手
- 灵活:简单小巧的核心,渐进式技术栈,足以应付任何规模的应用
- 性能:20kb min+gzip 运行大小、超快虚拟 DOM、最省心的优化。
Vue入门
-
Vue组成部分
视图:负责页面渲染 ,主要由HTML+CSS组成 - 脚本:负责业务数据模型与数据的处理逻辑
Vue核心对象:每个Vue程序都是从一个Vue核心对象开始的
let vm=new Vue({
选项列表;
});
选项列表:
-
el:用于接收当前页面的元素,一般是用选择器获取想要操作的元素
数据绑定:
-
给模板中的数据赋值
<body> <!-- 模板 --> <div id="div"> <div>姓名:{{name}}</div> <div>班级:{{classRoom}}</div> <button onclick="hi()">打招呼</button> <button onclick="update()">修改班级</button> </div> </body> <!-- 引入Vue文件 -->
## Vue指令 - 指令:标签中 是带有 v- 前缀的特殊属性,不同指令具有不同含义。例如 v-html,v-if,v-for - 使用指令时,通常编写在标签的属性上,值可以使用 JS 的表达式 - 常用指令 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2dlS6IQt-1593508243996)(C:\Users\11079\AppData\Roaming\Typora\typora-user-images\1593396597153.png)] - 文件插值:解析html标签 ~~~html <body> <div id="div"> <div>{{msg}}</div> <div v-html="msg"></div> // 解析标签 </div> </body> <script src="js/vue.js"></script> <script> // 解析标签指令 new Vue({ el:"#div", data:{msg: "<b>炸弹人</b>"} }) </script>
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-L4V0XCe7-1593508243999)(C:\Users\11079\AppData\Roaming\Typora\typora-user-images\1593397440716.png)]
-
绑定属性
v-bind 语法一:v-bind:属性名=变量 - 语法二::属性名=变量民
<style> .my{ border: 1px solid red; } </style> </head> <body> <div id="div"> <a v-bind:href="url">百度一下</a> <br> <a :href="url">百度一下</a> <br> <div :class="cls">我是div</div> </div> </body> <script src="js/vue.js"></script> <script> new Vue({ el:"#div", data:{ // 相当于给变量赋值 url:"www.baidu.com", cls:"my" } }) </script>
-
条件渲染
v-if:对条件进行判断是否渲染
-
v-else:相当于java中的if中的else与另外两个标签配合使用
-
v-else-if:与if和else配合使用
-
v-show :切换display的值 在不满足条件的时候在dom树上有这个元素但是存在属性display
-
v-for:列表渲染
<body> <div id="div"> <!-- 对传递的data大小进行判断--> <div v-if="data>4">data大于4</div> <div v-else-if="data>3">data大于3小于4</div> <div v-else="data<3">data小于3</div> <div v-show="flag">显示</div> </div> </body> <script src="js/vue.js"></script> <script> new Vue({ el:"#div", data:{ data:5, flag:false } }); </script>
列表渲染
<body> <div id="div"> <ul> <li v-for="name in names"> // 循环遍历names数组中的数据生成li标签 {{name}} </li> <li v-for="value in student">// 循环遍历对象中的属性信息生成li标签 {{value}} </li> </ul> </div> </body> <script src="js/vue.js"></script> <script> new Vue({ el:"#div", data:{ names:["零点","王侠","詹蓝","赵樱空","霸王"], student:{ name:"郑吒", age:24, heigh:175 } } }) </script>
事件绑定
- v-on绑定事件
- 语法: 在模板标签中添加 v-on:事件名=“需要触发的函数”
- @事件名=“触发的函数”
<body> <div id="div"> <div>{{name}}</div> <button v-on:click="change1()">改变div的内容</button> <button @dblclick="change2()">改变div的内容</button> </div> </body> <script src="js/vue.js"></script> <script> new Vue({ el:"#div", data:{ name:"南兖州" }, methods:{ change1(){ this.name="北俱芦洲" }, change2(){ this.name="桐叶洲" } } }) </script>
表单绑定
- 表单绑定 v-model :在表单元素上创建双向数据绑定
-
更新data数据表单中的数据也会更新
<body> <div id="div"> <form autocomplete="off"> 姓名:<input type="text" name="username" v-model="username"> // 拿到data中的数据并赋值给input标签 <br> 年龄:<input type="number" name="age" v-model="age"> </form> </div> </body> <script src="js/vue.js"></script> <script> new Vue({ el:"#div", data:{ username:"张三", age:23 } }); </script>
Element的基本使用
-
简介:
饿了么公司前端团队开发的一款基于 Vue的网站组价库 - Element 官网:https://element.eleme.cn/#/zh-CN
基本使用
-
下载 Element 核心库。
表单组件
// rules:校验规则 ref:每个表单的唯一标识 <el-form :model="ruleForm" :rules="rules" ref="ruleForm" label-width="100px" class="demo-ruleForm"> // prop 校验具体规则 <el-form-item label="自定义" prop="name"> <el-input v-model="ruleForm.name"></el-input> </el-form-item> <el-form-item label="下拉选择" prop="region"> <el-select v-model="ruleForm.region" placeholder="请选择活动区域"> <el-option label="选择一" value="shanghai"></el-option> <el-option label="选择二" value="beijing"></el-option> </el-select> </el-form-item> <el-form-item> <el-button type="primary" @click="submitForm('ruleForm')">立即创建</el-button> <el-button @click="resetForm('ruleForm')">重置</el-button> </el-form-item> </el-form> <script> new Vue({ el:"#div", data:{ ruleForm: { name: '', region: '', date1: '', date2: '', delivery: false, type: [], resource: '', desc: '' }, rules: { name: [ { required: true, message: '请输入活动名称', trigger: 'blur' }, { min: 3, max: 5, message: '长度在 3 到 5 个字符', trigger: 'blur' } ], region: [ { required: true, message: '请选择活动区域', trigger: 'change' } ], date1: [ { type: 'date', required: true, message: '请选择日期', trigger: 'change' } ], date2: [ { type: 'date', required: true, message: '请选择时间', trigger: 'change' } ], type: [ { type: 'array', required: true, message: '请至少选择一个活动性质', trigger: 'change' } ], resource: [ { required: true, message: '请选择活动资源', trigger: 'change' } ], desc: [ { required: true, message: '请填写活动形式', trigger: 'blur' } ] } }, methods:{ submitForm(formName) { // 调用validate函数返回一个布尔值 this.$refs[formName].validate((valid) => { // valid是一个布尔值 if (valid) { // 通过验证要执行的事件 alert('submit!'); } else { // 没有通过验证要执行的事件 console.log('error submit!!'); return false; } }); }, resetForm(formName) { // this.$refs[formName]选中forName表单 this.$refs[formName].resetFields(); } } }); </script>
表格组件
-
当
el-table元素中注入
data对象数组后,在
el-table-column中用
prop属性来对应对象中的键名即可填入数据,用
label属性来定义表格的列名。可以使用
width属性来定义列宽。
<div id="div"> <template> <el-table :data="tableData" style="width: 100%"> <el-table-column prop="date" //template数据中data属性 label="日期" width="180"> </el-table-column> <el-table-column prop="name"//template数据中name属性 label="姓名" width="180"> </el-table-column> <el-table-column prop="address"//template数据中address属性 label="地址"> </el-table-column> </el-table> </template> </div> <script> new Vue({ el:"#div", data:{ tableData: [{ date: '2016-05-02', name: '王小虎', address: '上海市普陀区金沙江路 1518 弄' }, { date: '2016-05-04', name: '王小虎', address: '上海市普陀区金沙江路 1517 弄' }, { date: '2016-05-01', name: '王小虎', address: '上海市普陀区金沙江路 1519 弄' }, { date: '2016-05-03', name: '王小虎', address: '上海市普陀区金沙江路 1516 弄' }] } }) </script>
Vue自定义组件
-
自定义组件格式
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xoe4abTT-1593508244001)(C:\Users\11079\AppData\Roaming\Typora\typora-user-images\1593482919895.png)]
<body> <div id="div"> <my-button>我的按钮</my-button> <wx-botton locaton="地址" gender="male" age="23"></wx-botton> // 使用自定义标签 </div> </body> <script> Vue.component("my-button",{ // 属性 props:["style"], // 数据函数 data: function(){ return{ msg:"我的按钮" } }, //解析标签模板 template:"<button style='color:red'>{{msg}}</button>" }); Vue.component("wx-botton",{ // 自定义属性 props:["location","gender","age"], // 定义模板 template:"<div><div>{{location}}</div><div>{{gender}}</div><div>{{age}}</div><div>{{bzr}}</div></div>", // 定义标签属性默认值 data:function(){ return { bzr:"lzll", age:"23" } } }) new Vue({ el:"#div" }); </script>
-
生命周期
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uXpknsJz-1593508244003)(C:\Users\11079\AppData\Roaming\Typora\typora-user-images\1593484677775.png)]
Vue异步请求
axios
-
使用
导入axios的js文件
-
在Vue中的methods里面使用
-
axios中的方法
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UivZCXa4-1593508244004)(C:\Users\11079\AppData\Roaming\Typora\typora-user-images\1593486654446.png)]
<script> new Vue({ el:"#div", data:{ name:"张三" }, methods:{ send(){ // GET方式请求 // axios.get("testServlet?name=" + this.name) // .then(resp => { // alert(resp.data); // }) // .catch(error => { // alert(error); // }) // POST方式请求 axios.post("testServlet","name="+this.name) .then(resp => { alert(resp.data); }) .catch(error => { alert(error); }) } } }); </script>
{
// alert(resp.data);
// })
// .catch(error => {
// alert(error);
// })
// POST方式请求 axios.post("testServlet","name="+this.name) .then(resp => { alert(resp.data); }) .catch(error => { alert(error); }) } } });~~~
- Vue.js基础使用教程
- Vue的路由功能(1)简单路由与vue-router的基础使用(同步/异步组件)
- VUE复习深入学习02.基础变量和修饰符的使用
- Vue的路由功能(1)简单路由与vue-router的基础使用(同步/异步组件)
- Vue基础系列:路由的基本使用
- Webpack的基本使用与Vue的基础配合
- 使用vscode,根据vue基础模板文件生成代码
- vue的基础之指令的使用
- 使用Vue开发网站之路3-slot内容分发实现基础表单,衍生表单
- 使用eclipse初步学习vue.js基础==》v-for的使用 ②
- Vue的基础认知一---构建环境/v指令的使用
- 从壹开始前后端分离 [ Vue2.0+.NET Core2.1] 十七 ║Vue基础:使用Vue.js 来画博客首页(一)
- vue基础之使用get、post、jsonp实现交互功能示例
- Vue学习(6)-插槽、模块化导入导出、webpack基础配置使用
- vue-router路由的基础使用
- 基于vue-cli的vue项目之axios的使用2--最基础的请求
- Vue的路由功能(1)简单路由与vue-router的基础使用(同步/异步组件)
- vue.js的使用总结(1)基础篇
- vue2.0+基础知识连载(13)--- 计算属性的使用
- vue.js--基础 v-bind绑定属性使用