自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Sapling

前端知识分享

  • 博客(232)
  • 资源 (2)
  • 收藏
  • 关注

原创 兼容性问题集合

input跟按钮高度不一致,在谷歌和火狐上的window跟mac版本:https://blog.csdn.net/weixin_33813128/article/details/863559492.input button类型设置高度 在mac下safari和chrome浏览器无效: https://www.jianshu.com/p/782395762ea7...

2019-12-23 10:53:00 125

原创 npm清除缓存

npm清除缓存:npm cache clean -f

2019-11-27 11:03:31 11125

原创 git最全面教程

git 是一款分布式版本管理系统。其实我们平时使用的命令有git add … git commit -m “” git push现在介绍一些也比较常用的命令。1. 版本回退使用git log 指令可以查看提交的历史记录,如下:提示:这里的commit 23318b11这个是提交的版本号。如果此时发现出错了,想进行版本回退,首先要知道现在的版本号是多少,此时是23318, 在git...

2019-03-07 13:38:30 280

原创 字体图标书写

现在的字体图标无非分为三种,分别是Unicode, Font class, Symbol。1.UnicodeUnicode 是字体在网页端最原始的应用方式,特点如下兼容性最好,支持IE6+,以及现代的浏览器可以按字体的方式调整大小,颜色因为是字体,不支持多色第一步:拷贝项目下面生成的@font-face@font-face { /*定义的字体图标名称,可以自己改*/ f...

2019-02-14 17:21:49 396 2

原创 ES6中导入与导出规范

ES6 的模块化规范 默认导出向外导出: export default {} 【默认导出】对应的导入方式: import 名称 from ‘模块路径’ 【默认导入】 按需导出向外导出: export var a = 10 【按需导出】向外导出: export var b = 20 ...

2019-01-22 10:47:08 1423 1

原创 react创建组件的两种方式

1. 使用构造函数来创建组件如果需要传参,在函数中加一个props参数来接受,并且必须向外return一个合法的jsx创建的虚拟DOM。//1. 组件名首字母为大写 2. 必须return 合法的jsx// 这里就可以相当于子组件function Hellow (props){ //props为父组件传过来的数据 //如果打印props的话,只要子组件用的到东西都会打印出来,在这里...

2019-01-22 10:17:11 1802

原创 apply手写

【代码】apply手写。

2024-04-18 09:09:47 329

原创 手写call方法,以及call如何实现的解释、原理

call方法用于改变this的指向,从而将一个对象的属性或方法在另一个对象方法中使用,实际上内部原理是结合this绑定的规格和给传入对象新增某个方法实现的。

2024-04-18 08:57:50 182

原创 node mysql 同时向两张表插入数据,并且其中一张表插入多次数据

【代码】node mysql 同时向两张表插入数据,并且其中一张表插入多次数据。

2024-03-10 11:06:55 352

原创 node mysql 同时向两张表插入数据

在Node.js中使用MySQL模块,如果需要同时向两张关联的表插入数据,通常不会通过一条SQL语句来完成,因为MySQL本身不支持一次插入操作跨多个表。但是,可以采用事务(Transaction)的方式来保证两个插入操作的原子性,即两个操作要么都成功,要么都失败。在Node.js中使用MySQL来同时向两张关联的表插入数据,你通常需要确保数据的一致性和完整性。这通常涉及到事务(Transaction)的使用,以确保两个操作要么都成功,要么都失败。以下是一个基本的例子,展示了如何在Node.js中使用。

2024-03-10 11:05:32 432

原创 CommonJS、require、moudle实现两个文件传参

文件A给B传入一个参数,并且文件B代码执行后再传回A。

2024-02-25 08:47:45 359

原创 如何拆分express项目中app.js中的路由

由于项目越来越大,app.js中的路由会变多,导致app.js文件变大,需要提取出路由。

2024-02-25 08:45:25 390

原创 在react+ant desgin项目中使用iconfont

链接:https://ant-design.antgroup.com/components/icon-cn。

2024-02-23 20:00:18 568

原创 vite配置别名时遇到错误Error: Dynamic require of “path“ is not supported

vite项目中出现的错误Error: Dynamic require of “path” is not supported。因为vite中没有不支持。

2024-01-21 18:20:04 564

原创 深拷贝与浅拷贝

深拷贝是指创建一个新的对象或数组,该对象或数组与原始对象或数组具有相同的值,但是它们是完全独立的,即使原始对象或数组发生更改,也不会影响深拷贝后的对象或数组。深拷贝需要递归地复制所有嵌套的对象和数组,以确保所有引用都是独立的。浅拷贝:将原对象或原数组的引用直接赋值给新对象,新对象只是一个引用。

2023-11-06 15:38:50 118

原创 TypeScript中的类型运算符

是一个单目运算符,接受一个对象类型作为参数,返回该对象的所有键名组成的联合类型。这个例子返回MyObj的所有键名组成的联合类型,即由于 JavaScript 对象的键名只有三种类型,所以对于任意对象的键名的联合类型就是。对于没有自定义键名的类型使用 keyof 运算符,返回never类型,表示不可能有这样类型的键名上面示例中,由于object类型没有自身的属性,也就没有键名,所以返回never类型。由于 keyof 返回的类型是,如果有些场合只需要其中的一种类型,那么可以采用交叉类型的写法。

2023-10-27 08:12:07 172

原创 TypeScript中的d.ts类型声明文件

单独使用的模块,一般会同时提供一个单独的类型声明文件(declaration file),把本模块的外部接口的所有类型都写在这个文件里面,便于模块使用者了解接口,也便于编译器检查使用者的用法是否正确。类型声明文件里面只有类型代码,没有具体的代码实现。它的文件名一般为[模块名].d.ts的形式,其中的d表示 declaration(声明)。在类型声明文件中,模块输出可以写成export=或者表示。

2023-10-27 08:11:42 355

原创 TypeScript中的declare关键字

这里url和path都是单独的模块脚本,它们的类型都定义在node.d.ts这个文件中。protocol?: string;hostname?: string;pathname?: string;): Url;

2023-10-27 08:11:26 972

原创 TypeScritpt中的namespace

它是在ES模块诞生前,ts自己发明的模块功能,目前已经不推荐使用了,namespace意为。

2023-10-27 08:11:11 240

原创 TypeScript中的tsconfig.json

是 TypeScript 项目的配置文件,放在项目的根目录。反过来说,如果一个目录里面有,TypeScript 就认为这是项目的根目录。如果项目源码是 JavaScript,但是想用 TypeScript 处理,那么配置文件的名字是,它跟tsconfig的写法是一样的。文件主要供tsc编译器使用,它的命令行参数--project或-p可以指定的位置(目录或文件皆可)。如果不指定配置文件的位置,tsc就会在当前目录下搜索文件,如果不存在,就到上一级目录搜索,直到找到为止。

2023-10-27 08:10:50 255

原创 ts-node模块

如果不安装ts-node,可以通过npx在线调用ts-node,运行ts脚本。是一个非官方的npm模块,可以直接运行JS代码。

2023-10-27 08:10:30 150

原创 TypeScript中的类型映射

映射就是将一种类型按照映射规则,转成另一种类型,通常用于对象类型。这里类型B通过A采用属性名索引的写法,完成了类型B的定义这里复制了一个一样的类型,类型B原样复制了类型为了增加代码复用性,可以把常用的映射写成泛型。这里定义了一个泛型,可以将其他对象的所有属性值都改成 boolean 类型。不使用联合类型,直接使用某种具体类型进行属性名映射,也是可以的。上面示例中,p in 'foo'可以看成只有一个成员的联合类型,因此得到了只有这一个属性的对象类型。通过映射,可以把某个对象的所有属性改成可选属性。

2023-10-27 08:10:02 191

原创 TypeScript中的类型工具

是ts提供的一些内置的工具,用来更方便地处理各种类型,以及生成新的类型,可以直接使用。也就是对类型的操作。

2023-10-26 15:48:40 289

原创 TypeScript中常见的编译选项

指定编译出来的 JS 代码的版本,TypeScript 还会在编译时自动加入对应的库类型声明文件。:将 TypeScript 源码作为 SourceMap 嵌入编译出来的 JS 文件。:如果函数 B 的参数是函数 A 参数的子类型,那么函数 B 不能替代函数 A。:为编译产生的 JS 文件生成 SourceMap 文件(.map 文件)。:指定加载文件所在的根目录,该目录里面的目录结构会被复制到输出目录。):进入观察模式,只要文件有修改,就会自动重新编译。:只编译输出类型声明文件,不输出 JS 文件。

2023-10-26 15:47:28 182

原创 TypeScript中的interface

interface是对象的模板,可以看作是一种类型约定,中文译为接口,使用了某个模板的对象,就拥有了指定的类型结构。指定了一个对象模板,有三个属性,任何要实现这个接口的对象,都必须部署这三个属性,并且符合规定的类型。使用方括号运算符可以取出interface某个属性的类型interface 可以表示对象的各种语法,它的成员有5种形式。

2023-10-26 15:45:02 258

原创 TypeScritp中的函数类型

函数类型声明,需要在声明函数时,给出参数的类型和返回值的类型。这里定义的参数类型是string,返回值的类型是void如果不指定参数类型,ts会自动推断,如果推断不出来会推断为any类型。返回值通常可以不写,ts会自己推断,但是有时候出于代码文档目的,返回值类型写上比较好。

2023-10-26 15:44:09 56

原创 TypeScript中的Enum类型

Enum是ts新增的一种数据结构和类型,称为枚举。相当于一个容器,用来存放常量,因为开发中经常需要定义一组相关的常量。使用时就跟对象属性写法一样。Enum 结构本身也是一种类型。比如,上例的变量c等于1,它的类型可以是 Color,也可以是number。Enum 结构的Enum结构编译后是一个对象,所以不能有同名的对象、函数和类等。

2023-10-26 15:42:02 391

原创 TypeScript中的类

因为ts中,私有属性应该是在类的内部实现,接口作为模板,不涉及类的内部代码写法。

2023-10-26 15:39:29 43

原创 TypeScript中的模块

如果一个文件包含import或export语句就是一个模块,相应地如果文件不包含export语句,就是一个全局的脚本文件。模块本身就是一个作用域,不属于全局作用域。模块内部的变量、函数、类只在内部可见,对于模块外部是不可见的。暴露给外部的接口,必须使用exprot命令声明;如果一个文件要使用模块的接口,需要用import命令导入。如果一个文件不包含export语句,但是希望把它当做一个模块,可以在脚本头部添加一行export语句,不会起到任何作用,就是将文件当做模块处理,代码变成了内部代码。

2023-10-26 15:38:51 69

原创 TypeScript中的类型断言

就是对于没有类型声明的值,有时候ts类型推断时,推断的结果并不正确,所以ts提供了一种的方法,告诉编译器此处的值是什么类型的,而ts一旦发现存在类型断言,就不再对该值进行类型推断直接给出断言的类型。类型断言的实质:允许开发者在某个位置编译器的类型推断,让本来通不过类型检验的代码能够通过,避免编译器报错,这样虽然削弱了ts类型系统的严格性,但也给开发者带来了方便。总之,类型断言并不是真的改变一个值的类型,而是提示编译器,应该如何处理这个值。写法一:断言将右边类型改为于左边类型一致。

2023-10-26 15:37:19 256

原创 TypeScript中的泛型

它的出现主要是为了解决参数与返回值类型之间的关系,比如一个函数接受一个类型的参数,并返回该参数,如果类型特别多就会很难写,可能会用到any,因为any可以代表任意类型的值,可也就相当于关闭了ts校验,此时泛型出现了,通过先定义一个占位(类型参数),等真正调用函数时,传入不同的类型,就代表函数的参数类型以及返回值类型。泛型的特点就是带有类型参数。如何定义?在函数名后使用尖括号<T>,尖括号里存放类型参数,可以为多个参数,等到调用时传入具体的类型即可,就代表该函数参数的类型是什么。

2023-10-26 15:36:08 80

原创 TypeScript中的对象

使用大括号表示对象,在大括号内部声明每个属性和方法的类型。属性的类型可以用分号结尾,也可以用逗号结尾。最后一个属性后面,可以写分号或逗号,也可以不写。一旦声明了类型,对象赋值时,就不能缺少指定的属性,也不能有多余的属性。读写不存在的属性也会报错,也不能删除类型声明中存在的属性,修改属性值是可以的。ts不区分对象自身的属性和继承属性,一律视为对象的属性。

2023-10-26 15:33:44 367

原创 TypeScript中的编译

JS的运行环境(浏览器和nodeJS)不认识TS代码,所以TS想运行,必须先转化为JS代码,这个转化就叫做编译。TS官方提供了编译器,编译时会将类型声明和类型相关的代码全部删除,只留下能运行的JS代码,不会改变JS的运行结果。TS的类型检查是编译时的类型检查,而不是代码运行时的类型检查,一旦代码编译为JS,运行时就不再进行检查了。

2023-10-26 15:31:24 122

原创 TypeScript中的元组类型

元组是特有的数据类型,数组内的成员可以是各个类型的,但是每个成员要声明其类型。越界会报错在方括号里面写各个成员的类型。

2023-10-26 15:29:23 178

原创 TypeScript中的数组类型

在ts中数组有一个根本特征就是各个成员的类型必须相同,成员数量是动态的。因为数量是动态的,越界访问一个数组成员不会报错,比如xx[4]

2023-10-26 15:27:32 275

原创 TypeScript的类型系统

ts的基本类型,undefined、null、any、unknown、never、number、string、boolean、object、symbol、bigint

2023-10-26 15:24:06 89

原创 TypeScript简介

它可以看作JS的超集(superset),继承了JS的全部语法,所有的js脚本都可以当做ts脚本,并且还新增了一些自己的语法。它是一个基于JS语言的编程语言,目的不是创造一个新的语言,而是对增强JS的功能。:集合A中有集合B中所有的元素,并且A可能还有B中没有的元素,A就叫做B的超集。添加最主要的部分,就是独立的类型系统。从而更适合多人合作的企业级项目。

2023-10-26 15:20:28 59

原创 js中的call和apply方法

this总是指向调用时的对象,但是apply()和call()可以修改this指向。

2023-10-06 17:25:31 76

原创 js中的原型链

构造函数本身跟普通函数一样,也不存在定义构造函数的特殊语法。唯一区别在于调用的方式不同,任何函数只要通过new 操作符来调用,都可以叫做构造函数。默认情况下构造函数的首字母大写,不大写也没有问题,主要是为了与普通函数区分。

2023-10-06 16:03:32 437

原创 ES6中的async、await函数

async放在一个函数的前面,await则放在异步操作前面。async代表这个函数中有异步操作需要等待结果,在一个async函数中可以存在多个await,也就是多个异步操作,但是需要注意的是await是一个一个发生的,执行完一个异步操作才会执行下一个异步操作,不是并发执行的。async结果返回一个Promise对象,async结果状态变化可以由三种情况改变第一种:函数体内有return,return的结果可以通过then方法获取。

2023-10-04 22:05:51 874

前端WebAPI,节点样式属性兼容性

此文档为Xmind格式,主要讲了关于webAPI,涉及到了节点操作,样式及内容操作,属性操作,事件操作,以及兼容性等问题。

2019-02-25

2019年前端面试宝典

前端面试宝典,可供进行系统学习,里面包含了从HTML,css,js从基础高级,包含闭包,递归,跨域,Vue,jQuery等库与框架,是面试的一个不错的首选之一。

2019-02-15

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除