当前位置: 首页 > news >正文

初步认识vue

介绍:

vue是一种自下而上的渐进式框架,当实现简单的应用时,只需一个轻量小巧的核心库;当实现复杂的应用时,可以引入各式各样的Vue插件

Vue特点:

1. 遵循MVVM模式

2. 编码简洁,体积小,运行效率高,适合移动/PC端开发

3. 它本身只关注UI,可以引入其它第三方库开发项目

Vue周边库:

vue-cli:vue脚手架

vue-resource

axios

vue-router:路由

vuex:状态管理

element-ui:基于vue的UI组件库(PC端)

Vue中的布局:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title>
</head>
<stype>
//样式
</stype>
<body><!-- 1.创建一个容器 --><div id="app"></div>
</body>
<!-- 引入核心库 -->
<script src="../js/vue.min.js"></script>
<script>// 2.创建一个Vue实例 let vm = new Vue({data() {return {str: "<h2>这是Vue中的数据</h2>", //string}}})// 绑定视图vm.$mount("#app");
</script>
</html>

Vue创建实例的方式:

使用后面的方式

由于数据前端和后端是相通的,前端数据改动会影响后端数据,但是如果我们不想改后端数据怎么办呢

前面就是一个全局唯一实例

第二个是每次调用都new一个

创建实例的同时绑定视图
new Vue({el:"#app", // 绑定视图data:{ //数据模型str:"这是Vue中的数据"}
})// 写法二 先创建实例,再绑定视图
// 创建实例
let vm = new Vue({data() {return {str: "<h2>这是Vue中的数据</h2>", //string}}
})
// 绑定视图
vm.$mount("#app");

常用的语法:

插值语法{{}}:

用来传递后台数据显示到前端的

<body><div id="app"><!-- 插值语法 {{数据}} --><div>{{str}}</div><div>{{num * 2}}</div><div>{{bol}}</div><div>{{arr[1]}}</div><div>{{obj.uname}}</div><div>{{obj.phone}}</div></div>
</body>
<script>data() {return {str: "这是Vue中的数据", //stringnum: 10,bol: true,arr: ["1111", "2132", "吼吼吼"],obj: {uname: "saggg",phone: "1231123432123"}}}})vm.$mount("#app");
</script>

v-show和v-if

v-show:

1.css层面控制元素的显示和隐藏,当状态为false时,元素隐藏,但依然存在,只是在当前元素上设置了display:none

2.当频繁切换状态时使用

使用场景:背景音乐,下拉列表,点击弹窗...

v-if:

1.真正的条件渲染,当状态为true时,元素创建,当状态为false时,元素直接销毁

2.不频繁切换状态时使用

使用场景:条件判断...

<body><div id="app"><div v-show="strIsShow">{{str}}</div> <div v-if="strIsShow">{{str}}</div> <hr><!-- v-if条件判断 --><div v-if="surpriseMoney <= 2000000">give you 1000</div><div v-else-if="surpriseMoney > 2000000 && surpriseMoney <= 3000000">give you 2000</div><div v-else-if="surpriseMoney > 3000000 && surpriseMoney <= 4000000">give you 3000</div><div v-else>nothing~~</div></div>
</body>
<script src="../js/vue.min.js"></script>
<script>let vm = new Vue({data(){return{str:"我无我无我无我无为?",strIsShow:false,surpriseMoney:4000000}}})vm.$mount("#app")
</script>

v-bind,指令用来单向绑定数据

使用v-bind来进行操作,实现数据的动态更新和响应式渲染。‌

<style>.bg{background-color: aqua;}
</style>
<body><!-- 1.创建一个容器 --><div id="app"><!-- v-bind指令:单向绑定数据(动态绑定数据)  --><a v-bind:href="aLink">点我跳转</a><hr><!-- 简写 : 代替v-bind:--><img :src="path" alt="" style="width: 200px;"><hr><!-- 动态绑定样式 --><div :class="{bg:bol}">{{str}}</div></div>
</body>
<script src="./vue.min.js"></script>
<script>// 2.创建一个实例let vm = new Vue({data(){return{str:"这是一个div",aLink:"https://www.baidu.com",path:"../img/img01.webp",bol:true}}})vm.$mount("#app")
</script>

v-for遍历

v-for用来循环遍历,包括数组,字符串,甚至对象都可以

<body><!-- 1.创建一个容器 --><div id="app"><!-- v-for指令:循环遍历 --><!-- 循环遍历数字 --><div v-for="item in num">{{item}}</div><!-- 循环遍历字符串 --><div v-for="(item,index) in str">{{item}}--{{index}}</div>    <!-- 循环遍历数组 --><div v-for="(item,index) in arr">{{index}}--{{item}}</div><!-- 循环遍历对象 --> <!-- <div v-for="item in obj">{{item}}</div> --><div v-for="(item,key) in obj">{{item}}--{{key}}</div></div>
</body>
<script src="./vue.min.js"></script>
<script>let vm = new Vue({data(){return{num:10,str:"JavaScript",arr:["元素1","元素2","元素3","元素4"],obj:{uname:"张三",age:50}}}})vm.$mount("#app");
</script>

v-if和v-for的优先级

v-if和v-for的优先级:

v-for的优先级更高;v-if和v-for在同时使用时,需要将v-if放在父元素上使用

原因:如果在li上进行v-if的判断那么就会先遍历v-for,再if判断False,对遍历的结果进行销毁,如果li中有几十上百条数据,那么就会销毁上百次,极大的影响性能,所以在父元素上直接销毁。

<body><!-- 1.创建一个容器 --><div id="app"><ul  v-if="bol"><li v-for="item in arr">{{item}}</li></ul></div>
</body>
<script src="../js/vue.min.js"></script>
<script>let vm = new Vue({data(){return{arr:["列表项1","列表项2","列表项3","列表项4"],bol:false}}})vm.$mount("#app");
</script>

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • android studio 无法识别androidTest模块Test模块
  • Linux 内核源码分析---I/O 体系结构与访问设备
  • 【多线程-从零开始-伍】volatile关键字和内存可见性问题
  • OD C卷 - 多线段数据压缩
  • 【PCA提取主要特征通俗】
  • Unity 功能 之 创建 【Unity Package】 Manager 自定义管理的包使用配置URL,使用 git URL加载的简单整理
  • Java SpringBoot 集成 MinIO 资料
  • RabbitMq架构原理剖析及应用
  • 【PostgreSQL教程】PostgreSQL UPDATE 语句
  • 数据库的基础的exists
  • java中字面量和golang中字面量区别
  • 掌握Java并发编程基础
  • 计算机网络(网络层)
  • 基于RFID技术的智能压缩机装配线优化方案
  • 2024年有哪些好用的文件加密软件?十款常用加密软件推荐
  • python3.6+scrapy+mysql 爬虫实战
  • 11111111
  • eclipse(luna)创建web工程
  • Java精华积累:初学者都应该搞懂的问题
  • js操作时间(持续更新)
  • magento 货币换算
  • PHP 7 修改了什么呢 -- 2
  • Spark RDD学习: aggregate函数
  • Web标准制定过程
  • 等保2.0 | 几维安全发布等保检测、等保加固专版 加速企业等保合规
  • 普通函数和构造函数的区别
  • 如何设计一个比特币钱包服务
  • 深入体验bash on windows,在windows上搭建原生的linux开发环境,酷!
  • 数组大概知多少
  • 算法之不定期更新(一)(2018-04-12)
  • elasticsearch-head插件安装
  • 阿里云IoT边缘计算助力企业零改造实现远程运维 ...
  • (Redis使用系列) Springboot 在redis中使用BloomFilter布隆过滤器机制 六
  • (板子)A* astar算法,AcWing第k短路+八数码 带注释
  • (读书笔记)Javascript高级程序设计---ECMAScript基础
  • (附源码)ssm高校实验室 毕业设计 800008
  • (四)activit5.23.0修复跟踪高亮显示BUG
  • (一)Linux+Windows下安装ffmpeg
  • (一)模式识别——基于SVM的道路分割实验(附资源)
  • (转)ORM
  • .net core 外观者设计模式 实现,多种支付选择
  • .NET 除了用 Task 之外,如何自己写一个可以 await 的对象?
  • .NET 项目中发送电子邮件异步处理和错误机制的解决方案
  • ?.的用法
  • @LoadBalanced 和 @RefreshScope 同时使用,负载均衡失效分析
  • @RunWith注解作用
  • @Transactional事务注解内含乾坤?
  • [28期] lamp兄弟连28期学员手册,请大家务必看一下
  • [AIGC] 使用Curl进行网络请求的常见用法
  • [C#]OpenCvSharp使用帧差法或者三帧差法检测移动物体
  • [C#基础知识系列]专题十七:深入理解动态类型
  • [Day 65] 區塊鏈與人工智能的聯動應用:理論、技術與實踐
  • [DP 训练] Longest Run on a Snowboard, UVa 10285
  • [Golang] go-kit 介绍和使用 (微服务实现工具)
  • [hdu 3652] B-number