asp购物网站源码常州 招网站开发

pingmian/2026/1/22 19:07:34/文章来源:
asp购物网站源码,常州 招网站开发,滨州 网站建设,忻州网站建设哪家好shallowRef和shallowReactive shallowRef 作用#xff1a;创建一个响应式数据#xff0c;但只对顶层属性进行响应式处理 用法 let myVar shallowRef(initialValue)特点#xff1a;只跟踪引用值变化#xff0c;不关心值内部的属性变化 案例 templatediv c…shallowRef和shallowReactive shallowRef 作用创建一个响应式数据但只对顶层属性进行响应式处理 用法 let myVar shallowRef(initialValue)特点只跟踪引用值变化不关心值内部的属性变化 案例 templatediv classapph2求和为{{ sum }}/h2h2名字为{{ person.name }}/h2h2年龄为{{ person.age }}/h2h2汽车为{{ car }}/h2button clickchangeSumsum1/buttonbutton clickchangeName修改名字/buttonbutton clickchangeAge修改年龄/buttonbutton clickchangePerson修改整个人/buttonspan|||||/spanbutton clickchangeBrand修改品牌/buttonbutton clickchangeColor修改颜色/buttonbutton clickchangeEngine修改发动机/button!-- button clickchangeCar修改整个车/button --/div /templatescript setup langts nameAppimport { ref,reactive,shallowRef,shallowReactive } from vuelet sum shallowRef(0)let person shallowRef({name: 小黑,age:2})let car shallowReactive({brand: 特斯拉,options: {color: 黑色,engine:v8}})function changeSum (){sum.value 1;}// 不会改变function changeName (){person.value.name 大狗;}function changeAge (){person.value.age 5;}//只能改变第一层function changePerson (){person.value {name:乐乐,age:3}}/* ********** */function changeBrand () {car.brand 宝马}function changeColor () {car.options.color 红色}function changeEngine () {car.options.engine v12}// function changeCar () {// Object.assign(car,{})// } /scriptstyle scoped.app{background-color: #ddd;border-radius: 10px;box-shadow: 0 0 10px;padding: 10px;}button{margin:0 5px;} /style总结 通过使用shallowRef()和shallowReactive()来绕开深度响应。浅层式API创建的状态只在其顶层是响应式的对所有深层的对象不会做任何处理避免了对每一个内部属性做响应式所带来的性能成本这使得属性的访问控制变得更快、可提升性能。 readonly与shallowReadonly readonly 作用用于创建一个对象的深只读副本 用法 templatediv classapph2当前求和为{{ sum }}/h2h2当前sum2求和为{{ sum2 }}/h2h2当前car1为{{ car }}/h2h2当前car2为{{ car2 }}/h2button clickchangeSum点我sum1/buttonbutton clickchangeSum2点我sum21/button/div /templatescript setup langts nameAppimport { ref, readonly, reactive,shallowReadonly } from vue;let sum ref(0)let sum2 readonly(sum)function changeSum() {sum.value 1}function changeSum2() {sum2.value 1 //sum2不可修改} /scriptstyle scoped.app{background-color: #ddd;border-radius: 10px;box-shadow: 0 0 10px;padding: 10px;}button{margin:0 5px;} /style特点 对象的所有嵌套属性变成只读任何尝试修改这个对象的操作都会被组织在开发模式下还会再控制台中发出警告 应用场景 创建不可变的状态快照保护全局状态或配置不被修改 shallowReadonly 作用与readonly类似但只作用于对象的顶层属性其他地方仍然可以修改 用法 templatediv classapph2当前car1为{{ car }}/h2h2当前car2为{{ car2 }}/h2button clickchangeBrand1修改car1品牌/buttonbutton clickchangeColor1修改car1颜色/buttonbutton clickchangePrice1修改car1价格/buttonbutton clickchangeBrand2修改car2品牌/buttonbutton clickchangeColor2修改car2颜色/buttonbutton clickchangePrice2修改car2价格/button/div /templatescript setup langts nameAppimport { reactive,shallowReadonly } from vue;let car reactive({brand:奔驰,options: {color:黑色,price:100}})let car2 shallowReadonly(car)function changeBrand1() {car.brand 宝马}function changeColor1() {car.options.color 红色}function changePrice1() {car.options.price 10}function changeBrand2() {car2.brand 宝马}function changeColor2() {car2.options.color 红色}function changePrice2() {car2.options.price 10} /scriptstyle scoped.app{background-color: #ddd;border-radius: 10px;box-shadow: 0 0 10px;padding: 10px;}button{margin:0 5px;} /styletoRaw与markrow toRaw 作用用于获取一个响应式对象的原始对象toRaw返回的对象不再是响应式不会触发视图更新。 何时使用 在需要将响应式对象传递给非Vue的库或外部系统时使用toRaw可以确保他们收到的是普通对象 用法使用toRaw之后 年龄不再改变 templatediv classapph2姓名{{ person.name }}/h2h2年龄{{ person2.age }}/h2button clickperson.age 1修改年龄/button/div /templatescript setup langts nameApp import { reactive,toRaw } from vue;let person reactive({name: 小黑,age:2 }) let person2 toRaw(person)console.log(响应式数据, person) console.log(原始数据,person2) /scriptstyle scoped.app{background-color: #ddd;border-radius: 10px;box-shadow: 0 0 10px;padding: 10px;}button{margin:0 5px;} /stylemarkRaw 作用标记一个对象使其永远都不会变成响应式 何时使用 使用第三方库的时候防止错误把第三库对象变成响应式对象就可以使用markRaw 用法 templatediv classapph2汽车{{ car2 }}/h2button clickcar2.price 10修改价格/button/div /templatescript setup langts nameApp import { reactive,toRaw,markRaw } from vue;/* markRaw */ //添加markRaw 28行就失去作用无法改变成响应式 let car markRaw({ brand: 奔驰, price: 100 }) let car2 reactive(car)console.log(car); console.log(car2);/scriptstyle scoped.app{background-color: #ddd;border-radius: 10px;box-shadow: 0 0 10px;padding: 10px;}button{margin:0 5px;} /stylecustomRef的使用 作用创建一个自定义的ref并对其依赖项跟踪和更新触发进行逻辑控制 实现防抖效果useSumRef.ts) templatediv classapph2{{ msg }}/h2input typetext v-modelmsg/div /templatescript setup langts nameAppimport { ref,customRef } from vue//使用vue提供的默认ref定义响应式数据数据一变页面视图也更新// let msg ref(你好)//使用vue提供的customRef定义响应式数据let initValue 你好let timer:number//track跟踪、trigger触发 不加上页面效果不会改变let msg customRef((track,trigger) {return {//get何时调用——msg被读取时get() { track() //告诉vue数据很重要需要对msg进行持续关注一旦msg变化就去更新return initValue},//set何时调用——msg被修改时set(value) {clearTimeout(timer)timer setTimeout(() {// console.log(set,value);initValue valuetrigger() //通知vue数据变化了}, 1000);}}}) /scriptstyle scoped.app{background-color: #ddd;border-radius: 10px;box-shadow: 0 0 10px;padding: 10px;}button{margin:0 5px;} /style采用hooks封装 定义hooks——useMsgRef.ts import { customRef } from vue;export default function (initValue: string, delay: number) {//使用vue提供的customRef定义响应式数据// let initValue 你好let timer: number//track跟踪、trigger触发 不加上页面效果不会改变let msg customRef((track, trigger) {return {//get何时调用——msg被读取时get() {track() //告诉vue数据很重要需要对msg进行持续关注一旦msg变化就去更新return initValue},//set何时调用——msg被修改时set(value) {clearTimeout(timer)timer setTimeout(() {// console.log(set,value);initValue valuetrigger() //通知vue数据变化了}, delay); //延迟时间不要写死}}})//hooks必须要有返回值return { msg } }App.vue templatediv classapph2{{ msg }}/h2input typetext v-modelmsg/div /templatescript setup langts nameAppimport useMsgRef from ./useMsgRef;//使用useMsgRef来定义一个响应式数据且有延迟效果let { msg } useMsgRef(小黑, 2000)/scriptstyle scoped.app{background-color: #ddd;border-radius: 10px;box-shadow: 0 0 10px;padding: 10px;}button{margin:0 5px;} /styleTeleport 定义Teleport是一种能够将我们的组件html结构移动到指定位置的技术 App.vue templatediv classouterh2我是App组件/h2img srchttps://img.zcool.cn/community/014b275d0a1c95a801213ec257bb95.jpg2o.jpg altbrModal//div /templatescript setup langts nameAppimport Modal from ./Modal.vue; /scriptstyle scoped .outer{background-color: #ddd;border-radius: 10px;padding:5px;box-shadow: 0 0 10px;width: 500px;height: 500px;/* 添加滤镜后模块定位不再参考视口参考的是父容器了 */filter:saturate(150%); } img{height: 180px;object-fit: cover; } /stylemodal.vue templatebutton clickisshow true展示弹窗/button!-- teleport解决添加滤镜后fix定位问题 --teleport tobodydiv classmodal v-showisshowh2我是弹窗标题/h2p我是弹窗内容/pbutton clickisshow false关闭弹窗/button/div/teleport /templatescript setup langts nameModal import { ref } from vue let isshow ref(false) /scriptstyle scoped .modal{width: 200px;height: 150px;background-color: skyblue;border-radius: 10px;padding: 5px;box-shadow: 0 0 5px;text-align: center;position:fixed;left:50%;top: 20px;margin-left: -100px; } /styleSuspense 等待异步组件时渲染一些额外内容让应用有更好的用户体验使用步骤 异步引入组件使用Suspense包裹组件并配置好default和fallback App.vue templatediv classapph2我是App组件/h2!-- 解决异步事件如果不加下面那么Child组件不显示 --Suspensetemplate v-slot:defaultChild//template/Suspense/div /templatescript setup langts nameAppimport { Suspense } from vueimport Child from ./Child.vue /scriptstyle scoped .app{border-color: #ddd;border-radius:10px;padding:10px;box-shadow: 0 0 10px; } /styleChild.vue templatediv classchildh2我是Child组件/h2h3当前sum求和为{{ sum }}/h3/div /templatescript setup langts import { ref } from vue import axios from axioslet sum ref(0) let xxx await axios.get(https://api.uomg.com/api/rand.qinghua?formatjson) console.log(xxx); //如果要看到数据可以解构 xxx 替换成 {data{content}} log直接打印content即可/scriptstyle scoped .child{background-color: skyblue;border-radius:10px;padding:10px;box-shadow: 0 0 10px; } /style全局API转移到应用对象 app.component App.vue templatediv classapph2我是App组件/h2Hello/Child//div /templatescript setup langts nameAppimport Child from ./Child.vue /scriptstyle scoped .app{border-color: #ddd;border-radius:10px;padding:10px;box-shadow: 0 0 10px; } /styleChild.vue templatediv classchildh2我是Child组件/h2h3当前sum求和为{{ sum }}/h3Hello//div /templatescript setup langts import { ref } from vuelet sum ref(0)/scriptstyle scoped .child{background-color: skyblue;border-radius:10px;padding:10px;box-shadow: 0 0 10px; } /styleHello.vue templateh2 stylecolor:red你好/h2 /templatescript setup langts /scriptstyle scoped/stylemain.ts import { createApp } from vue import App from ./App.vue import Hello from ./Hello.vue// 创建应用 const app createApp(App)app.component(Hello, Hello)// 挂载应用 app.mount(#app)app.config main.ts app.config.globalProperties 添加 那么全局都可以使用 import { createApp } from vue import App from ./App.vue import Hello from ./Hello.vue// 创建应用 const app createApp(App)app.component(Hello, Hello) app.config.globalProperties.x 99//这样下面x就不会爆红 declare module vue {interface ComponentCustomProperties {// $http: typeof axios// $translate: (key: string) stringx: number} }// 挂载应用 app.mount(#app)比如Child.vue 页面就会呈现 我是Child组件99 这里x会爆红 在main.ts添加定义部分 templatediv classchildh3当前sum求和为{{ sum }}/h3Hello//div /templatescript setup langts import { ref } from vuelet sum ref(0)/scriptstyle scoped .child{background-color: skyblue;border-radius:10px;padding:10px;box-shadow: 0 0 10px; } /styleapp.directive main.ts import { createApp } from vue import App from ./App.vue import Hello from ./Hello.vue// 创建应用 const app createApp(App)app.directive(beauty, (element, { value }) {element.innerText valueelement.style.color greenelement.style.backgroundColor yellow })// 挂载应用 app.mount(#app)比如Child.vue 页面就会呈现 不高兴0——黄色背景绿色文字 templatediv classchildh2我是Child组件{{ x }}/h2h3当前sum求和为{{ sum }}/h3h4 v-beautysum不高兴/h4Hello//div /templatescript setup langts import { ref } from vuelet sum ref(0)/scriptstyle scoped .child{background-color: skyblue;border-radius:10px;padding:10px;box-shadow: 0 0 10px; } /styleapp.mount main.ts import { createApp } from vue import App from ./App.vue import Hello from ./Hello.vue import type axios from axios// 创建应用 const app createApp(App)// 挂载应用 app.mount(#app)app.unmount main.ts 2秒钟之后 app消失在页面上 import { createApp } from vue import App from ./App.vue import Hello from ./Hello.vue import type axios from axios// 创建应用 const app createApp(App)// 挂载应用 app.mount(#app)setTimeout(() {app.unmount() }, 2000);app.use 见router那一节 安装插件 //使用路由器 app.use(router)Vue3的非兼容性改变 Vue2和Vue3区别 看vue官网Breaking Changes | Vue 3 Migration Guide (vuejs.org) 过渡类名v-enter 修改为 v-enter-from、过渡类名 v-leave 修改为 v-leave-from 。keyCode 作为 v-on 修饰符的支持。v-model 指令在组件上的使用已经被重新设计替换掉了v-bind.sync。v-if 和 v-for 在同一个元素身上使用时的优先级发生了变化。移除了 Son、 Soff 和 Sonce 实例方法。移除了过滤器 filter。移除了 $children 实例 propert。

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

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

相关文章

浙江网站建设制作流程济南汽车网站设计

1、将一个空塑料袋与一个装满空气的塑料袋放到秤上称重。在两个塑料袋本身完全一样的情况下,得出的结果会是 A、空塑料袋更重 B、装满空气的塑料袋更重 C、两个塑料袋一样重 D、无法判断 答案:C 2、全球变暖带来的一个主要影响就是海平面的上升。造…

网站建设好与管理在哪就业公司官网制作开发

文章目录 1 为什么需要卷(Volume)2 卷的挂载2.1 k8s集群中可以直接使用2.2 需要额外的存储组件2.3 公有云 2 PV(Persistent Volume)3 SC(Storage Class) 和 PVC(Persistent Volume Claim)4 总结 1 为什么需要卷(Volume) Pod是由一个或者多个容器组成的,在启动Pod中…

做网站流程 优帮云仿照别人的网站做违法吗

CSS 顺时针旋转 90 再 3D 中绕 Y 轴旋转 180 的示例代码如下: div {transform: rotate(90deg) perspective(500px) rotateY(180deg); }在这个示例中,元素被先进行了 2D 顺时针旋转 90,然后设置了 perspective 属性来定义元素的视角距离&…

网站免费网站免费上海人力资源招聘官网

Linux实验报告-源代码编译安装Apache(Tarball文件安装)实验背景:通常GNU组织提供的程序包都是源代码格式,即将软件的所有源码文件先以tar打包,然后再使用gizp或是bzip2压缩,生成一个.tar.gz或是.tar.bz2结尾的软件包,也…

长沙教育网站建设wordpress tinection

题目链接 参考文章 解题思路 如果从整棵树的角度来看,用层序遍历翻转一棵二叉树需要遍历同一层节点后再反向遍历该层节点并且改变指针,但是这样做不仅低效率还会访问到野指针。因此必须换一个角度考虑问题:如果将每一个父节点的左右孩子交换…

现在外贸做那个网站好网站建设与运营财务报表

最近有偶然的机会学习了一次QPSK防止以后忘记又得找资料,这里就详细的记录一下 基于 QPSK 的通信系统如图 1 所示,QPSK 调制是目前最常用的一种卫星数字和数 字集群信号调制方式,它具有较高的频谱利用率、较强的抗干扰性、在电路上实现也较为…

爱心建站网砍价小程序怎么制作

作者:黄小斜文章来源:【程序员江湖】游戏在今天的普及度已经不是端游时代可以比肩的了。如今人手一台手机、平板就可以吃鸡、打农药,不仅是男生,也有很多女生加入了游戏圈。相信现在在看文章的你也玩游戏,虽然爱玩的程…

wordpress站外链接页面手机app软件开发语言

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。 1. 我的情况 : 项目一直只有我一个开发者,却莫名的出来了一个完全不认识的开发者,我新建后 push 的…

深圳住房和建设局网站官网wordpress主机分类信息网站

鉴于gRPC已进入稳定版分支,并对应用于生产中准备就绪,Google发布了gRPC 1.0。 gRPC源于被称为Stubby的Google内部项目,早期是用于一些Google内部服务间的通信。18个月前Google开源了gRPC框架,希望借此gRPC能被更广泛地采纳&#x…

建设网站的模板下载学科建设的网站

文章底部有个人公众号:热爱技术的小郑。主要分享开发知识、学习资料、毕业设计指导等。有兴趣的可以关注一下。为何分享? 踩过的坑没必要让别人在再踩,自己复盘也能加深记忆。利己利人、所谓双赢。 面试官:SSR解决了什么问题&…

网站建设服务费怎么写分录建设工程类型分为几类

在信息爆炸的时代,我们每天都会接触到大量的文件,从文档、图片到视频、音频等,各种类型、各种格式的文件充斥着我们的电脑和移动设备。如何有效地管理和组织这些文件,成为了我们不得不面对的问题。今天,我们为您带来了…

网站建设 网页开发如何使用电子商务网站

ECMAScript 有两种开发模式:1.函数式(过程化),2.面向对象(OOP)。面向对象的语言有一个标志,那就是类的概念,而通过类可以创建任意多个具有相同属性和方法的对象。但是,ECMAScript 没有类的概念,因此它的对象…

制作企业网站素材视频珠海房地产网站建设

大家好,我是若川。持续组织了6个月源码共读活动,感兴趣的可以点此加我微信 ruochuan12 参与,每周大家一起学习200行左右的源码,共同进步。同时极力推荐订阅我写的《学习源码整体架构系列》 包含20余篇源码文章。历史面试系列这本新…

网站制作广在网站中搜索关键字

实验19:中介者模式 本次实验属于模仿型实验,通过本次实验学生将掌握以下内容: 1、理解中介者模式的动机,掌握该模式的结构; 2、能够利用中介者模式解决实际问题。 [实验任务]:虚拟聊天室 在“虚拟聊天…

佛山提供网站设计方案公司seo关键词推广

循环展开(loop unrolling)是一种编译器优化技术,它通过减少循环的迭代次数,来提高程序的执行速度。循环展开的原理是,将循环体中的语句复制多份,每次迭代执行更多的语句,从而减少循环控制语句&a…

Wordpress 自用主题 免费 分享湛江seo代理商

时间:2024.01 目录1、安装启动 oracle19c 容器 2、rpm包安装clickhouse 3、datax安装 4、datax同步 目标库根据要同步的表,按照clickhouse建表规范建表 编写json文件 编写增量同步shell脚本,加入 crond 定时任务 1、安装启动 oracle19c 容器…

网站建设蘑菇街广州黄埔做网站的公司哪家好

装上PHP5后你会发现这样的问题:你也许会发现,输出的时间和你现在的时间是不相同的。原因是假如你不在程序或配置文件中设置你的服务器当地时区的话,PHP所取的时间是格林威治标准时间,所以和你当地的时间会有出入。格林威治标准时间…

网站怎么做qq的授权登陆网站设计技术入股

前言: FFMPEG的功能强大是毋庸置疑的,那么录屏的需求大家在某些时候大家可能是非常需要的,例如,现有的项目需要演示,因此录制一段演示视频;亦或者做内容分发直播的,比如游戏主播,需…

伊利集团网站建设实训无锡企业建站

文章目录 离线部署 python 3.x 版本1. 下载版本2. 上传到服务器3. 解压并安装4. 新建软连信息5. 注意事项 离线部署 python 3.x 版本 1. 下载版本 python 各版本下载地址 本次使用版本 Python-3.7.0a2.tgz # linux 可使用 wget 下载之后上传到所需服务器 wget https://www.py…

秦皇岛市教育考试院网站dede网站模版

这次给大家带来ESlint操作步骤详解,ESlint操作的注意事项有哪些,下面就是实战案例,一起来看一下。vue-cli脚手架创建的项目默认使用ESlint规则,启动项目的时候因为各种语法报错,不得不先停下了解一下什么是ESlint&…