无法避免的正则表达式 前言什么是正则表达式?我们在日常开发中总是能遇到一些需要校验的功能,例如校验邮箱、手机号等等,或者对一些字符串做替换处理等,正则表达式总是避不开的。个人理解正则就是用来匹配字符,校验字符规则,或者是提取一段字符中的内容。本文只介绍正则的一些基本使用。 匹配字符匹配模糊长度123const regexp = /ab{1,5}c/gconst str = "abc abb 2023-12-13 技术博客 #JavaScript #正则表达式
TypeScript入坑指北 类型Typescript 包含 Javascript 的全部类型,也就是 number、boolean、string、object、bigint、symbol、undefined、null,还有包装类 Number、Boolean、String、Object、Symbol。 除此之外,Typescript 还有 void、never、enum、unknown、any、tuple(元组) 以及自定义 2023-10-31 技术博客 #TypeScript
JavaScript设计模式(五):装饰器模式 定义是一种结构型设计模式。在不改变原对象的基础上,通过对其进行包装拓展,使原有对象可以满足用户的更复杂需求。 装饰函数装饰函数可以让我们在不修改原方法的情况加对原函数进行包装,增加额外的功能。在日常开发中难免遇到原来的需求现在要增加新的功能,如果原来的代码是自己写的还好,如果是接手别人写的代码,直接修改源代码就很冒风险,甚至有可能导致其他功能异常。 保存原引用方法123456789function 2023-10-17 技术博客 #JavaScript #设计模式
JavaScript设计模式(四):发布-订阅模式、观察者模式 定义我们暂且把发布订阅模式和观察者模式理解成相同的,是行为型模式的一种,定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态变化时,会通知所有的观察者对象,使他们能够自动更新自己。在日常生活中也有例子,例如我们办理银行卡时,如果订阅了手机短信功能,那么每次消费后都会给我们发送短信。 简单实现我们先来简单模拟实现一个发布订阅模式。 12345678910111213 2023-10-13 技术博客 #JavaScript #设计模式
JavaScript设计模式(三):代理模式 代理模式 为其他对象提供一种代理以控制对这个对象的访问。 简单理解就是你想使用一个东西,但是你不能直接用,你必须通过一个中间商来使用,就像你想要找老板加工资,但不让你直接见老板,而是需要去找老板的助理,通过助理反馈给老板让他给你加工资。 代理模式其实也很常见,我们在写页面时,一个父节点下有很多子节点,每次点击子节点都需要触发事件,我们肯定不会挨个子节点去添加事件,而是会在让他的父节点做代理,通过 2023-10-11 技术博客 #JavaScript #设计模式
JavaScript设计模式(二):策略模式 什么是策略模式 定义一系列的算法,把它们一个个封装起来,并且使它们可以相互替换。 简单说就是对于不同的场景,我们才采取不同的方式来应对。举几个简单的小例子: 我们要组装一台电脑,如果预算充足的话,那就可以什么都用顶配,如果预算不够,那就追求性价比,用最少的预算获得最高的性能,如果基本没有什么预算,那就只能楼下网吧对付一下了,对于不同的预算就需要不同的策略。 在网购过程中,我们买的东西越多,相应 2023-10-10 技术博客 #JavaScript #设计模式
JavaScript设计模式(一):单例模式、工厂模式 设计模式原则 单一功能原则(Single Responsibility Principle) 开放封闭原则(Opened Closed Principle) 里式替换原则(Liskov Substitution Principle) 接口隔离原则(Interface Segregation Principle) 依赖反转原则(Dependency Inversion Principle) 单例模 2023-09-13 技术博客 #JavaScript #设计模式
React事件系统 React 独特的事件系统首先要明确的是,React为了兼容全部的浏览器,模拟实现了一套自己的事件系统,也就是我们现在看到的事件都是被React处理过后的,给元素的事件也并不是真正的事件处理函数,所以原生事件中像 return false 阻止默认行为这种方式在 React 中是不生效的。 在 v17 之前,React事件绑定在 document 上,之后绑定在应用对应容器 container 上 2023-08-19 技术博客 #React
Vite-进阶篇 Module Federation简单说就是提出一个模块作为“远程模块”,”本地模块“可以导入这个模块使用,同时”本地模块“也可以作为其他模块的”远程模块“ 优点 只是作为引用, 不会参与本地模块打包,减小产物体积 可以做到按需加载 每个模块单独存在,可以单独进行开发、测试等 实践首先说一下大概的流程: 新建 remote host 项目(官方是同vue,我们也是用vue) remote 作为 2023-08-17 技术博客 #Vite
Vite-架构篇(Rollup) 快速开始初始化 1234# 初始化项目pnpm init -y# 安装 rolluppnpm install rollup 根目录下新建 rollup 的配置文件 rollup.config.js 12345678// rollup.config.jsexport default { input: 'src/main.js', output: { 2023-08-12 技术博客 #Vite