2023/9/17总结

2023-09-18 20:49:16

Vue

defineOptions

为什么要使用defineOptions

  在有<script setup> 之前  如果需要定义props  emit  可以很容易的添加一个与setup 平级的属性  但是用了 <script setup> 后 就不能这样做了  setup 属性也就没有了,就不能添加 与其平级 的属性

为了解决这个问题  引入了defineProps 与 defineEmits 俩个编译宏  但是只是解决了 props 与emits 这俩个属性  如果我们要定义组件的name 或者其他自定义的属性  就得回到原始的写法——添加一个普通的<script>标签  这样就会存在俩个<script> 标签

在vue3.3中 新引入了defineOptions 宏 主要是用来定义Options API的选项  可以用defineOptions 定义任意的选项,props,emits,expose,slots除外  因为已经有了相关的 编译宏了

defineModel

在vue3中  自定义组件上使用v-model  相当于 传递一个 modelValue 属性  同时触发update:modelValue 事件

 注意

 Pinia 快速入门

Pinia 是 vue 最新的 状态管理工具  是Vuex 的替代品

  • 提供了更加简单的API  (去掉了mutation)
  • 提供符合,组合式风格的API
  • 去掉了 modules 的概念  每一个store 都是一个独立的模块
  • 配合Typescript 更加友好 提供可靠的类型推断

添加Pinia配置

然后启动项目就行

 

Setup  Store

利用Store可以十分便捷的共享数据

定义了一个counter.js  来保证数据的 共享 以及访问

action 异步支持

 在对应的Store 中 ,如果把返回的数据解构了 那么就不支持响应式 ,如果想解构并且保持 响应式。

使用  Pinia持久化  插件

先去官网上

快速开始 | pinia-plugin-persistedstate (prazdevs.github.io)

安装  下面说的是npm 安装

npm i pinia-plugin-persistedstate

然后在main.js 的文件中

 

搞完之后要重启服务器

然后就可以发现数据变成持久化的了,即使是刷新,也不会变回到原来的数据

pnpm 包管理器

优势:比同类工具 快 2 倍左右 节省磁盘空间 

安装:

  • 全局安装: npm install -g pnpm
  • 局部安装:npm install pnpm

安装好之后

创建项目   pnpm create vue 

其他指令:

创建一个pnpm安装的vue项目

Eslint 配置代码风格

把下面这段代码加到下面

rules: {
    'prettier/prettier': [
      'warn',
      {
        singleQuote: true, //单引号
        semi: false, //无分号
        printWidth: 80,//每行宽度至多80字符
        trailingComma: 'none', //不加对象|数组最后逗号
        endOfLine: 'auto' //换行符号不限制(win mac不一-致)
      }
    ],
    'vue/multi-word-component-names': [
      'warn',
      {
        ignores: ['index'] // vue组件名称多单词组成(忽略index. vue)
      }
    ],
    'vue/no-setup-props -destructure': ['off'], //关闭props解构的校验
// 添加未定 义变量错误提示,create-vue@3.6.3 关闭,这里加上是为了 支持下一个章节演示。
    'no-undef': 'error'
  }

 基于husky的代码检查工作流

vue-router 路由代码解析

router  vue3 中跳转地址

引入 Element Plus

会发现用  el-  开头组件会不一样

 然后就可以直接使用

更多推荐

黑马JVM总结(十六)

(1)垃圾回收器垃圾回收器分为以下:吞吐量:垃圾回收时间占程序回收时间的一个占比,占比越低,吞吐量越高(2)垃圾回收器_串行使用上面的开启串行垃圾回收器的JVM参数,它分为两个部分Serial工作在新生代,采用复制算法,SerialOld工作在老年代,采用标记+整理算法新生代和老年代的垃圾回收器是分别运行的,新生代空间

jvm中对象创建、内存布局以及访问定位

对象创建Java语言层面,创建对象通常(例外:复制、反序列化)仅仅是一个new关键字即可,而在虚拟机中,对象(限于普通Java对象,不包括数组和Class对象等)的创建又是怎样一个过程呢?①Java虚拟机遇到一条字节码new指令时,首先将去检查这个指令的参数是否能在常量池中定位到一个类的符号引用,并且检查这个符号引用代

Spring Security的使用

SpringSecurity是一个强大且灵活的安全框架,它为Spring应用程序提供身份验证、授权和安全性。SpringSecurity可以在Web和非Web应用程序中提供安全性。以下是使用SpringSecurity的步骤:在项目的pom.xml文件中添加SpringSecurity的依赖。<dependency><

【Seata】分布式事务问题和理论基础

目录1.分布式事务问题1.1本地事务1.2分布式事务2.理论基础2.1CAP定理2.1.1一致性2.1.2可用性2.1.3分区容错2.1.4矛盾2.2BASE理论2.3解决分布式事务的思路1.分布式事务问题1.1本地事务本地事务,也就是传统的单机事务。在传统数据库事务中,必须要满足四个原则:1.2分布式事务分布式事务,

JavaMail发送和接收邮件API(详解)

JavaMail发送和接收邮件API(详解)一、JavaMail概述:JavaMail是由Sun定义的一套收发电子邮件的API,不同的厂商可以提供自己的实现类。但它并没有包含在JDK中,而是作为JavaEE的一部分。厂商所提供的JavaMail服务程序可以有选择地实现某些邮件协议,常见的邮件协议包括:SMTP:简单邮件

尝试访问启动磁盘设置时出错怎么办?

当出现“尝试访问启动磁盘设置时出错”这样的错误提示,而且启动转换控制面板打不开了时,是无法开启触摸板功能的。我们可以使用以下方法来解决问题。1.在Windows桌面左下角搜索框输入“计算机管理”后点击“打开”。2.点击“本地用户与组”,鼠标右键点击“用户”,选择“新用户”。3.设置用户名为Apple,然后设置密码。其他

GitHub Copilot Chat

9月21日,GitHub在官网宣布,所有个人开发者可以使用GitHubCopilotChat。用户通过文本问答方式就能生成、检查、分析各种代码。据悉,GitHubCopilotChat是基于OpenAI的GPT-4模型打造而成,整体使用方法与ChatGPT类似。例如,能帮我生成一个Python的吃豆小游戏代码,并加上代

什么是接口测试,我们如何实现接口测试?

1.什么是接口测试顾名思义,接口测试是对系统或组件之间的接口进行测试,主要是校验数据的交换,传递和控制管理过程,以及相互逻辑依赖关系。其中接口协议分为HTTP,WebService,Dubbo,Thrift,Socket等类型,测试类型又主要分为功能测试,性能测试,稳定性测试,安全性测试等。在分层测试的“金字塔”模型中

25 DRF详细学习篇章二|Parsers|Renderers|Serializers

文章目录Parsers解析器解析的过程设置全局解析器使用局部解析器常见的接口函数JSONParserFormParser和MultiPartParserFileUploadParserRenderers渲染器解析的过程设置全局渲染器使用局部渲染器常用接口函数JSONRendererTemplateHTMLRendere

RayViz 一款服务于SolidWorks用于光学和机械设计的有效工具

RayViz作为SolidWorks的一个扩展插件,不仅可以在SolidWorks工作环境中直接定义和保存模型光学属性,而且还可以在该CAD工作环境中直接进行光线追迹。通过RayViz,把TracePro和Solidworks链接了起来,一个模型可以在TracePro中用于光学计算和分析,也可以在Solidworks中

js前端条件语句优化

背景在实际开发中,由于应用需求可能存在多种情况场景,那处理时就需要列举所有对应的情况去处理,常见的处理可能会用到if…else去处理。但是如果条件判断太多,就会导致代码过于冗余难以维护,因此我们可以使用其他的方式去优化、较少代码冗余量。使用1、借用Array的方法1.1多个判断用includes或者indexOf举个例

热文推荐