web学习笔记(七十)

目录

1.webpack和vite区别

2. vue2声明数据和绑定事件

3.vue2 data为什么必须是函数?

4.vue2事件传参

5.计算属性和watch 

6.this.$router和this.$route


1.webpack和vite区别

  1. 它们都是代码构建工具,就是把项目中的.vue文件转换为浏览器认识的html和css代码;
  2. 他们的核心功能是编译代码,将组件化的代码最终转化为html、css、js,以便浏览器能够识别代码并加载页面。附加功能:(1)提供了一个开发服务器,方便调试;(2)压缩css和js代码;(3)组件拆包,提升首屏加载速度(路由懒加载)
  3. 在开发阶段vite比webpack编译速度快,因为webpack在开发阶段,也是实时的将组件转换为js,是实时编译的,因此每次保存代码webpack都要把整个项目全部编译一遍,效率低下,而vite开发阶段采用的是js模块化方式来编译项目,不是全量编译,速度快。

2. vue2声明数据和绑定事件

vue2是选项式api,所有的响应式数据都要写在data中,并且需要return出去,事件的绑定方法和vue3是一样的,但是需要将声明的方法都写在   methods对象中。

<template><div class="home"><h2>首页</h2><button @click="add">加</button><button @click="subtract">减</button><h2>{{ count }}</h2></div></template><script>export default {name: "HomeViem",data() {return {// 这里声明当前组件的响应式数据 一定要保持结构完整,如果写data就一定要写return,哪怕没有响应式数据也要写。count: 1,};},methods: {add() {this.count++;},subtract() {this.count--;},},};</script>

需要注意的是如果页面中并不需要响应式数据就可以不写data,但是只要写data就一定要在内部写一个return,哪怕data内部并没有声明响应式数据也一定要写return。 在script里面调用响应式数据和方法都是需要通过this来操作的,eg:this.count

3.vue2 data为什么必须是函数?

       如果data不是函数,而直接写一个对象,那么所有组件共用同一个数据了,此时的数据变成了全局变量,任意一个组件修改data中的数据,所有组件都会同步变化,这样的话,组件复用就会出现问题,因为组件复用本质上是复用的标签结构和样式而已,数据肯定不能共享,每个组件实例对象this都需要维护自己内部的数据,保证数据的独立性。因此data必须是函数,且函数每部需要返回一个新对象,每次组件实例this被创建的时候,vue都会调用data这个函数,返回一个新对象,对象内部包裹的就是当前组件所拥有的响应式数据。

4.vue2事件传参

和vue3的传参方式是一样的,在没有自定义参数时可以在事件内部直接打印事件对象e,输出相关信息,但是当有自定义参数时需要在传实参时传一个$event,然后在形参的位置用e接一下,再在事件内部输出事件对象e。

<body><div id="app"><h1>{{num}}</h1><button v-on:click="add">++</button><button @click="add5(5,$event)">+5</button></div><script src="./vue.js"></script><script>new Vue({el: '#app',// 存放在data中的数据都是响应式数据,所谓的响应式就是改变数据视图。data: {num: 0},// methods方法methods: {add: function (e) {// 事件对象console.log(e);console.log(this);this.num++},add5(n, e) {console.log(e);this.num += n;}}})</script></body>

5.计算属性和watch 

vue2中计算属性需要写到computed选项内部。watch监听需要写到watch选项内部

(1)计算属性主要用于计算购物车商品总价,会根据响应式护士巨大变化自动计算结果。需要注意的是计算属性必须返回一个结果。

<template><div class="home"><h2>首页</h2><button @click="add">加</button><button @click="subtract">减</button><h2>{{ count }}</h2><p>双倍{{ doublecount }}</p><p>加100 {{ testcount }}</p></div>
</template>
<script>
import { computed } from "vue";
// this.$router  用来跳转路由  this.$router.push()  this.$router.replace
// this.$route  用来获取路由参数 this.$route.query
export default {name: "HomeViem",data() {return {// 这里声明当前组件的响应式数据 一定要保持结构完整,如果写data就一定要写return,哪怕没有响应式数据也要写。count: 1,};},methods: {add() {this.count++;},subtract() {this.count--;},},computed: {// 使用场景:购物车计算商品总价// 根据响应式数据的变化自动计算结果。//   计算属性必须返回一个结果doublecount() {return this.count * 3;},testcount() {return this.count + 100;},},};
</script>

 (2)watch监听可以监听路由的跳转或者响应式数据的变化,没有返回结果,只是监听, 做实时搜索可以用,watch监听有两者写法,一种是函数写法,一种是对象写法,当需要开启深度监听或者首次触发时就需要用到对象写法。

<template><div class="home"><h2>首页</h2><button @click="add">加</button><button @click="subtract">减</button><h2>{{ count }}</h2><p>双倍{{ doublecount }}</p><p>加100 {{ testcount }}</p></div>
</template>
<script>
import { computed } from "vue";
// this.$router  用来跳转路由  this.$router.push()  this.$router.replace
// this.$route  用来获取路由参数 this.$route.query
export default {name: "HomeViem",data() {return {// 这里声明当前组件的响应式数据 一定要保持结构完整,如果写data就一定要写return,哪怕没有响应式数据也要写。count: 1,};},methods: {add() {this.count++;},subtract() {this.count--;},},watch: {// 监听路由的跳转或者响应式数据的变化// 没有返回结果,只是监听, 做实时搜索可以用//函数写法// count: (newv, oldv) => {//   console.log(newv, oldv);//   console.log(newv + oldv);// },$route: (newv, oldv) => {console.log(newv, oldv);},//   对象写法count: {handler(newv, oldv) {console.log(newv, oldv);console.log(newv + oldv);},immediate: true, //首次立即执行deep: true, //深度监听,主要针对对象,数组这种复杂的数据},},
};
</script>

6.this.$router和this.$route

this.$router  用来跳转路由  eg: this.$router.push()  this.$router.replace

this.$route  用来获取路由参数 eg: this.$route.query

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/34727.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

solidity智能合约如何实现跨合约调用函数

背景 比如现在有一个需求、我需要通过外部合约获取BRC20 token的总交易量。那么我需要在brc20的转账函数里面做一些调整&#xff0c;主要是两个函数内统计转移量。然后再提供外部获取函数。 /*** dev Sets amount as the allowance of spender over the callers tokens.** Ret…

文化财经wh6boll带macd多空转折点提示指标公式源码

文化财经wh6boll带macd多空转折点提示指标公式源码&#xff1a; DIFF:EMA(CLOSE,12) - EMA(CLOSE,26); DEA:EMA(DIFF,9); MACD:2*(DIFF-DEA); MID:MA(CLOSE,26);//求N个周期的收盘价均线&#xff0c;称为布林通道中轨 TMP2:STD(CLOSE,26);//求M个周期内的收盘价的标准差 …

onlyoffice实现在单页面加载文档的功能

草图 实现案例的基本原型 这里我们的样式库使用的是Tailwindcss&#xff0c;我们的前端UI组件库使用的是Ant Design Vue。 基本原型是&#xff0c;有个按钮&#xff0c;没有点击按钮的时候&#xff0c;页面显示的时普通的内容。当点击这个按钮的时候&#xff0c;页面加载文档…

【Linux】线程Thread

&#x1f525;博客主页&#xff1a; 我要成为C领域大神&#x1f3a5;系列专栏&#xff1a;【C核心编程】 【计算机网络】 【Linux编程】 【操作系统】 ❤️感谢大家点赞&#x1f44d;收藏⭐评论✍️ 本博客致力于知识分享&#xff0c;与更多的人进行学习交流 ​ ​ 线程概述 …

鸿蒙学习(-)

.ets文件结构 //页面入口 Entry //组件 Component struct test{//页面结构build(){//容器 **一个页面只能有一个根容器&#xff0c;父容器要有大小设置**}1、Column 组件 沿垂直方向布局的组件&#xff0c;可以包含子组件 接口 Column({space}) space的参数为string | numbe…

云层区分神经网络模型——二分类

云层区分神经网络模型——二分类 问奶奶&#xff0c;是什么让他们维护一份感情长达年&#xff0c;奶奶说那个年代什么东西坏了都会想要修&#xff0c;现在什么坏了都想着换。 安装依赖 # 要运行脚本&#xff0c;请先安装以下库&#xff1a;pip install tensorflowpip install …

华为HCIP Datacom H12-821 卷7

1.单选题 在 USG 系统防火墙中,DMZ 区域的安全级别是多少? A、85 B、5 C、50 D、100 正确答案:C 解析: 非受信区域(Untrust)低安全级别的安全区域,安全级别为5。 非军事化区域(DMZ)中等安全级别的安全区域,安全级别为50。 受信区域(Trust)较高安全级别的安全区…

JAVA每日作业day6.26

ok了家人们&#xff0c;今天我们学习了面向对象-多态&#xff0c;话不多说我们一起来看看吧 一.多态概述 面向对象的第三大特性&#xff1a;封装、继承、多态 我们拿一个生活中的例子来看 生活中&#xff0c;比如跑的动作&#xff0c;小猫、小狗和大象&#xff0c;跑起来是不一…

山水风景视频素材去哪里下?去哪里找?山水风景下载网站分享

在这个数字时代&#xff0c;视频已经成为最直观、有效的传达情感和分享故事的工具。对于那些渴望通过视频传递视觉美感和情感共鸣的创作者来说&#xff0c;拥有高质量的山水风景视频素材是关键。互联网虽然是一个信息量庞大的平台&#xff0c;但找到令人赞叹的山水风景视频素材…

Android系统主动修改鼠标样式

将鼠标移到到Button上&#xff0c;鼠标样式由箭头变成小手&#xff0c;pointerType1000是箭头&#xff0c;pointerType1002是鼠标小手 frameworks/base/core/java/android/view/ViewRootImpl.java processPointerEventmaybeUpdatePointerIcon(event);if (event.getActionMaske…

快速搭建redis集群

快速搭建redis集群 文章目录 快速搭建redis集群一、说明二、安装redis三、快速启动单机redis四、搭建三节点redis集群&#xff08;三主&#xff09;&#xff1a;全部节点都可以用&#xff0c;集群才可用五、搭建三节点redis集群&#xff08;三主&#xff09;&#xff1a;一半以…

【Linux】使用ntpdate同步时间

ntpdate 是一个在 Linux 系统中用于同步系统时间的命令行工具&#xff0c;它通过与 NTP 服务器通信来调整本地系统时钟。然而&#xff0c;需要注意的是&#xff0c;ntpdate 已经被许多现代 Linux 发行版弃用。 安装 yum install -y ntpdate 查看时间 date同步时间 ntpdate ntp…

问界M9累计大定破10万,创中国豪车新纪录

ChatGPT狂飙160天&#xff0c;世界已经不是之前的样子。 更多资源欢迎关注 6月26日消息&#xff0c;华为常务董事、终端BG董事长、智能汽车解决方案BU董事长余承东今日宣布&#xff0c;问界M9上市6个月&#xff0c;累计大定突破10万辆。 这一成绩&#xff0c;也创造了中国市场…

postman汉化中文(Windows)

Postman 是一款专业的 API 开发工具&#xff0c;为开发者提供了创建、测试、调试和分享 HTTP 请求的便利性和灵活性。其主要功能包括请求构建与发送、自动化测试、团队协作与分享、实时监视与调试以及环境与变量管理。无论是个人开发者还是团队&#xff0c;Postman 都能有效地提…

深入了解 msvcr120.dll问题解决指南,msvcr120.dll在电脑中的重要性

在Windows操作系统中&#xff0c;.dll 文件扮演了非常重要的角色&#xff0c;它们包含许多程序运行所需的代码和数据。其中 msvcr120.dll 是一个常见的动态链接库文件&#xff0c;是 Microsoft Visual C Redistributable Packages 的一部分。这篇文章将探讨 msvcr120.dll 的功能…

使用Python进行并发和并行编程:提高效率的秘诀

使用Python进行并发和并行编程&#xff1a;提高效率的秘诀 ​ 大家好&#xff0c;今天我们来聊聊如何使用Python进行并发和并行编程&#xff0c;以提升数据处理的效率&#xff1b;在之前的文章中&#xff0c;我们探讨了Python的函数式编程和数据流处理。今天&#xff0c;我们将…

查询SQL 人大金仓 与MySQL的区别

查询SQL 人大金仓 与MySQL的区别&#xff0c;以若依为例 最常见 时间范围 1.人大金仓 Kingbase <select id"selectUserListByOrgIds" parameterType"SysUser" resultMap"SysUserResult">select u.user_id, u.dept_id, u.nick_name,u.tj_…

力扣2748.美丽下标对的数目

力扣2748.美丽下标对的数目 朴素思路 二重循环模拟 class Solution {public:int gcd(int a,int b){return b ? gcd(b,a%b):a;}int countBeautifulPairs(vector<int>& nums) {int res0;for(int i0;i<nums.size() - 1;i)for(int ji1;j<nums.size();j){strin…

C++用Crow实现一个简单的Web程序,实现动态页面,向页面中输入数据并展示

Crow是一个轻量级、快速的C微框架&#xff0c;用于构建Web应用程序和RESTful API。 将处理前端页面的POST请求以添加数据的逻辑添加到 /submit 路由中&#xff0c;并添加了一个新的路由 / 用于返回包含输入框、按钮和表格的完整页面。当用户向表格添加数据时&#xff0c;JavaS…

SpringAOP执行流程——从源码画流程图

文章目录 了解ProxyFactory入门操作添加多个Advice的执行顺序关于异常Advice关于proceed()方法指定方法才进行增强逻辑 创建代理对象的其他方式ProxyFactoryBeanBeanNameAutoProxyCreatorDefaultAdvisorAutoProxyCreator 对SpringAOP的理解TargetSourceProxyFactory选择JDK/CJL…