开发vue3,真的可以不用ref/reactive了,也不需要ref.value

什么是Cabloy-Front?

Cabloy-Front 是一款支持 IOC 容器的 Vue3 框架。不用ref/reactive,不用ref.value,不用pinia

与UI库的配合

Cabloy-Front 可以搭配任何 UI 库使用,并且内置了几款 UI 库的项目模版,便于开箱即用,包括:

  • antdv
  • element-plus
  • quasar
  • vuetify

特性

Cabloy-Front 为 Vue3 引入了以下鲜明特征:

  • 不用ref/reactive:因为在大多数场景下,不需要使用 ref 和 reactive
  • 不用ref.value:因为在 Cabloy-Front 中定义响应式变量更加直观,不再需要 ref 语义
  • 不用pinia:因为 Cabloy-Front 提供了 IOC 容器,可以更加灵活的定义和使用全局对象

动图演示

No ref/reactive

演示:不用ref/reactive,不用ref.value

1. 定义响应式状态

@Local()
export class MotherPageCounter extends BeanMotherPageBase {counter: number = 0;inrement() {this.counter++;}decrement() {this.counter--;}
}

2. 使用响应式状态

@Local()
export class RenderPageCounter extends BeanRenderBase {render() {return (<div><div>counter(ref): {this.counter}</div><button onClick={() => this.inrement()}>Inrement</button><button onClick={() => this.decrement()}>Decrement</button></div>);}
}

演示:依赖注入

1. 逻辑抽离

counter逻辑抽离出来,创建一个Counter Bean

@Local()
export class LocalCounter extends BeanBase {counter: number = 0;inrement() {this.counter++;}decrement() {this.counter--;}
}

2. 在组件中注入并使用

@Local()
export class MotherPageCounter extends BeanMotherPageBase {@Use()$$counter: LocalCounter;
}
@Local()
export class RenderPageCounter extends BeanRenderBase {render() {return (<div><div>counter(ref): {this.$$counter.counter}</div><button onClick={() => this.$$counter.inrement()}>Inrement</button><button onClick={() => this.$$counter.decrement()}>Decrement</button></div>);}
}

框架已开源: https://github.com/cabloy/cabloy-front

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

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

相关文章

免费SSL证书签发安装指南

一、签发 1.选择证书颁发机构&#xff08;CA&#xff09;&#xff1a;首先&#xff0c;你需要找到一个提供免费SSL证书的CA。有些CA会提供永久免费的SSL证书&#xff0c;而有些则可能只提供有限时间的试用证书&#xff0c;如JoySSL就提供永久免费证书。 2.生成CSR&#xff08…

WPF 鼠标拖拽平移

效果 xaml <ScrollViewer x:Name"scrollViewer" HorizontalScrollBarVisibility"Hidden" VerticalScrollBarVisibility"Disabled" Background"#FFF1ADAD"PreviewMouseDown"ScrollViewer_OnPreviewMouseDown"PreviewMou…

Electron学习笔记(一)

文章目录 相关笔记笔记说明 一、轻松入门 1、搭建开发环境2、创建窗口界面3、调试主进程 二、主进程和渲染进程1、进程互访2、渲染进程访问主进程类型3、渲染进程访问主进程自定义内容4、渲染进程向主进程发送消息5、主进程向渲染进程发送消息6、多个窗口的渲染进程接收主进程发…

白鲸开源CEO郭炜在2024 DataOps发展大会上获聘专家

2024年5月15日&#xff0c;白鲸开源CEO郭炜在2024 DataOps发展大会上被正式聘任为DataOps专家&#xff0c;并获得了荣誉证书。本次大会由中国通信标准化协会主办&#xff0c;中关村科学城管委会提供支持&#xff0c;大数据技术标准推进委员会&#xff08;CCSATC601&#xff09;…

iisnginx环境一次奇怪的跨域问题解决经过

跨域问题描述&#xff1a; iis网站跨域、nginx 网站跨域 都已配置&#xff0c;访问接口依然出现跨域问题。 错误提示&#xff1a; ccess to XMLHttpRequest at ‘https://xxx.com/gameapi/preserve/get/status’ from origin ‘https://cdn.xxx.com’ has been blocked by CO…

GO语言核心30讲 实战与应用 (io包,bufio包,os包,网络服务,http,性能分析)

原站地址&#xff1a;Go语言核心36讲_Golang_Go语言-极客时间 一、io包中的接口和工具 1. strings.Builder、strings.Reader 和 bytes.Buffer 这些类型实现了 io 包的很多接口&#xff0c;目的是什么&#xff1f; 是为了提高不同程序实体之间的互操作性。 程序实体是指比如网…

浏览器插件Video Speed Controller(视频倍速播放),与网页自身快捷键冲突/重复/叠加的解决办法

浏览器插件Video Speed Controller&#xff08;视频倍速播放&#xff09;&#xff0c;与网站自身快捷键冲突/重复/叠加的解决办法 插件介绍问题曾今尝试的办法今日发现插件列表中打开Video Speed Controller的设置设置页面翻到下面&#xff0c;打开实验性功能。将需要屏蔽的原网…

网络工程师----第三十一天

DNS&#xff1a; DNS含义&#xff1a;DNS 是 Domain Name System&#xff08;域名解析系统&#xff09; 端口号&#xff1a;DNS为53&#xff08;UDP&#xff09; 域名的层次结构&#xff1a; 域名的分级&#xff1a; 域名服务器&#xff1a; 域名解析过程&#xff1a; 递归查…

PHP xdebug

使用场景 一台MAC上安装了phpstorm&#xff0c;虚拟机安装了对应的web程序&#xff0c;需要调试。 坑点&#xff0c;网上教程太多&#xff0c;不如看官网&#xff0c;需要按照xdebug版本来配置php.ini https://www.jetbrains.com/help/phpstorm/2023.3/configuring-xdebug.htm…

【Java】HOT100+代码随想录 动态规划(上)背包问题

目录 理论基础 一、基础题目 LeetCode509&#xff1a;斐波那契数 LeetCode70&#xff1a;爬楼梯 LeetCode746&#xff1a;使用最小花费爬楼梯 LeetCode62&#xff1a;不同路径 LeetCode63&#xff1a;不同路径ii LeetCode343&#xff1a;整数拆分 LeetCode96&#xff1a;不…

vue uniapp 小程序 判断日期是今天(显示时分秒)、昨天、本周的周几、超出本周显示年月日

效果图&#xff1a; util.js /*** 转换时间*/ const messageFormat (datetime) >{ let result "";let currentTime new Date();if(isToday(datetime)){result datetime.substring(11,16);}else if(isYesterday(datetime)){result "昨天";}else if(…

操作系统磁盘管理类问题

例题&#xff1a;在磁盘上存储数据的排列方式会影响1/0服务的总时间。假设每个磁道被划分成10个物理块&#xff0c;每个物理块存放1个逻辑记录。逻辑记录R1,R2....R10存放在同一个磁道上&#xff0c;记录的排列顺序如下表所示&#xff1a; 假定磁盘的旋转速度为10ms/周&#xf…

VMware虚拟机-安装程序无法自动安装virtual machine......_windows server 2008 R2

系统版本&#xff1a;windows server 2008 R2 问题-安装程序无法自动安装virtual machine… 在使用虚拟机安装windows server 2008 R2系统中&#xff0c;安装VMware Tools工具安祖啊寄给你失败&#xff0c;提示安装程序无法自动安装virtual machine…&#xff0c;必须手动安装…

从源头到洞察:大数据时代的数据提取与分析实战指南

随着科技的飞速发展&#xff0c;大数据已经成为现代社会的核心驱动力之一。从商业决策到科学研究&#xff0c;从政策制定到个人生活&#xff0c;数据无处不在&#xff0c;影响着我们的每一个决策。然而&#xff0c;如何从海量的数据中提取有价值的信息&#xff0c;并转化为深刻…

List类

什么是 List 在集合框架中&#xff0c; List 是一个接口&#xff0c;继承自 Collection 。 Collection 也是一个接口 &#xff0c;该接口中规范了后序容器中常用的一些方法&#xff0c;具体如下所示&#xff1a; List 中提供了好的方法&#xff0c;具体如下&#xff1a; List…

Conda 常用命令大全

Conda 常用命令大全 配置源conda配置清华源pip配置清华源pip配置阿里源 环境管理创建一个新的虚拟环境列出虚拟环境激活虚拟环境退出虚拟环境删除虚拟环境复制某个虚拟环境 conda包管理列出全部包安装包卸载包 pip包管理列出全部包安装包卸载包 其他命令查询 conda 版本查看环境…

C语言详解:数组指针

数组指针是指针 int* p[10] 这是指针数组的写法 &#xff0c;因为【】的优先级比*高&#xff0c; 所以为了解决优先级问题&#xff0c;加&#xff08;&#xff09; int(* p)[10]&arr;//数组的地址要存起来 说明p是指针&#xff08;首先与*结合&#xff09;&#xff0c…

哈希表法快速求解最长连续序列 | 力扣128题详细解析

❤️❤️❤️ 欢迎来到我的博客。希望您能在这里找到既有价值又有趣的内容&#xff0c;和我一起探索、学习和成长。欢迎评论区畅所欲言、享受知识的乐趣&#xff01; 推荐&#xff1a;数据分析螺丝钉的首页 格物致知 终身学习 期待您的关注 导航&#xff1a; LeetCode解锁100…

关于电源3(整流滤波电路)

整流滤波电路 框图 一共有四种整流电路 以下是自己参考别人的文章https://blog.csdn.net/zhuguanlin121/article/details/130653498?ops_request_misc%257B%2522request%255Fid%2522%253A%2522171582622316800215096518%2522%252C%2522scm%2522%253A%252220140713.130102334…

jenkins配置不同版本nodeJS,保姆级叫你配置

问题描述&#xff1a;公司jenkins被改了nodejs版本适配其他项目导致以前的项目构建失败&#xff0c;原因就是nodejs版本太高或太低导致&#xff0c;这里教大家不去更改服务器默认版本&#xff0c;当需要特殊版本直接在jenkins里配置即可。 过程 1、安装nodeJS插件 1.1点击管…