vue3学习
Vue3与Vue2在应用中的区别
响应式数据在Vue3中变得更加灵活和友善。Vue2中 data 里没有定义的属性在后续无法正常的进行响应操作,必须通过 Vue.set 这个 API 向响应式对象中添加一个 property,并确保这个新 property 同样是响应式的,且触发视图更新。它必须用于向响应式对象上添加新 property,因为 Vue 无法探测普通的新增 property (比如 this.myObject.newProperty = ‘hi’); 然而在 Vue3 中我们可以通过引入 ref 来操作响应值。ref 是一个实例方法,接受一个内部值并返回一个响应式且可变的 ref 对象。ref 对象具有指向内部值的单个 property.value。const count = ref(0)
console.log(count.value) // 0
count.value++
console.log(count.value) // 1
Vue3 采用了 ES6的一项新特性:Proxy 来实现Vue3中数据响应式的设计。通过下面的伪代码我们可以对比一下:Object.de ...
git相关操作
git commit 代码提交规范type(scope) : subject
type(必须) : commit 的类别,只允许使用下面几个标识:
feat : 新功能
fix : 修复bug
docs : 文档改变
style : 代码格式改变
refactor : 某个已有功能重构
perf : 性能优化
test : 增加测试
build : 改变了build工具 如 grunt换成了 npm
revert : 撤销上一次的 commit
chore : 构建过程或辅助工具的变动
scope(可选) : 用于说明 commit 影响的范围,比如数据层、控制层、视图层等等,视项目不同而不同。
subject(必须) : commit 的简短描述,不超过50个字符。
使用commitizen 规范提交
npm install -g commitizen
commitizen init cz-conventional-changelog –save –save-exact
用 git cz 命令取代 git commit
使用git commit 提交
npm i @commit ...
ts学习
基础类型
布尔值let isDone:boolean = false
数字let decLiteral: number = 6;
let hexLiteral: number = 0xf00d;
let binaryLiteral: number = 0b1010;
let octalLiteral: number = 0o744;
字符串let name: string = "bob";
name = "smith";
数组let list: number[] = [1, 2, 3];
// 泛型
let list: Array<number> = [1, 2, 3];
元组 Tuplelet x: [string, number];
x = ['hello', 10]; // OK
x = [10, 'hello']; // Error
枚举enum Color {Red, Green, Blue}
let c: Color = Color.Green;
Any (随便什么类型都可以)let notSure: any = 4;
notSure =
Vo ...
react学习
挂在方式ReactDOM.render(
element,
document.getElementById('app')
);
通过ReactDOM.render() 挂载, 第一个参数是组件,第二个参数是挂载的根节点,需要通过原生js获取,通常只会挂载一次
组件使用函数试组件 function Welcome(props) {
return <h1>Hello, {props.name}</h1>;
}
函数式组件没有this,可以接收一个props
如果函数组件想使用state,得使用hook {useState}
import React, { useState, useEffect } from 'react';
function Example() {
const [count, setCount] = useState(0); // count定义的变量,setCount改变变量的方法,useState(0)设置变量初始值为0
// 相当于 componentDidM ...
前端自检清单
JavaScript基础变量和类型
JavaScript规定了几种语言类型数据类型篇有讲到Post not found: js-数据类型 JavaScript目前有八种内置类型:Number,String,Boolean,Null,Undefined,Object,Symbol,BigInt
其中 Symbol是es6新加入的
BigInt 是一种内置对象,它提供了一种方法来表示大于 2^53 - 1 的整数。这原本是 Javascript中可以用 Number 表示的最大数字。BigInt 可以表示任意大的整数。可以用在一个整数字面量后面加 n 的方式定义一个 BigInt ,如:10n,或者调用函数BigInt()。
const theBiggestInt = 9007199254740991n;
const alsoHuge = BigInt(9007199254740991);// ↪ 9007199254740991n
const hugeString = BigInt("9007199254740991");// ↪ 9007199254740991n
const hu ...
底层存储方式
语言中所有的底层存储方式是是什么?
数组(Array)数组是一种聚合数据类型,它是将具有相同类型的若干变量有序地组织在一起的集合。数组可以说是最基本的数据结构,在各种编程语言中都有对应。一个数组可以分解为多个数组元素,按照数据元素的类型,数组可以分为整型数组、字符型数组、浮点型数组、指针数组和结构数组等。数组还可以有一维、二维以及多维等表现形式。
栈( Stack)栈是一种特殊的线性表,它只能在一个表的一个固定端进行数据结点的插入和删除操作。栈按照后进先出的原则来存储数据,也就是说,先插入的数据将被压入栈底,最后插入的数据在栈顶,读出数据时,从栈顶开始逐个读出。栈在汇编语言程序中,经常用于重要数据的现场保护。栈中没有数据时,称为空栈。
队列(Queue)队列和栈类似,也是一种特殊的线性表。和栈不同的是,队列只允许在表的一端进行插入操作,而在另一端进行删除操作。一般来说,进行插入操作的一端称为队尾,进行删除操作的一端称为队头。队列中没有元素时,称为空队列
链表( Linked List)链表是一种数据元素按照链式存储结构进行存储的数据结构,这种存储结构具有在物理上存在非连续的特点 ...
webpack入口起点
单个入口(简写)语法用法:entry: string | [string]webpack.config.js
module.exports = {
entry: './path/to/my/entry/file.js',
};
module.exports = {
entry: {
main: './path/to/my/entry/file.js',
},
};
我们也可以将一个文件路径数组传递给 entry 属性,这将创建一个所谓的 “multi-main entry”。在你想要一次注入多个依赖文件,并且将它们的依赖关系绘制在一个 “chunk” 中时,这种方式就很有用。
module.exports = {
entry: ['./src/file_1.js', './src/file_2.js'],
output: {
filename: 'bundle.js',
},
};
对象语法用法:entry: { string | [str ...
webpack学习概念篇
entry 入口入口起点(entry point) 指示 webpack 应该使用哪个模块,来作为构建其内部 依赖图(dependency graph) 的开始。进入入口起点后,webpack 会找出有哪些模块和库是入口起点(直接和间接)依赖的。默认值是 ./src/index.js,但你可以通过在 webpack configuration 中配置 entry 属性,来指定一个(或多个)不同的入口起点。例如:webpack.config.js
module.exports = {
entry: './path/to/my/entry/file.js',
};
output 输出output 属性告诉 webpack 在哪里输出它所创建的 bundle,以及如何命名这些文件。主要输出文件的默认值是 ./dist/main.js,其他生成文件默认放置在 ./dist 文件夹中。你可以通过在配置中指定一个 output 字段,来配置这些处理过程:webpack.config.js
const path = require('path');
module.expo ...
js字符串
字符串和数组比较相似,都是类数组,都有length属性以及indexOf()和concat()方法。但是数组是可变的,字符串是不可变的。字符串不可变是指字符串的成员函数不会改变其原始值,而是创建并返回一个新的字符串。而数组的成员函数都是在其原始基础上进行操作。
许多数组函数处理字符串很方便。虽然字符串没有这些函数,但是可以通过‘借用’数组的方法来处理字符串:
let a ='12345'
a.map // undefined
a.join // undefined
let b = Array.prototype.join.call(a,'-')
console.log(b) // '1-2-3-4-5'
let c = Array.prototype.map.call(a, item => {
return item + '牙牙乐'
}).join('')
console.log(c)
js数组
数组可以容纳任何类型的的值,可以是字符串、数字、对象、甚至是其他数组。数组申明后就可以往里面添加值,不需要预设大小。
数组方法
push()向数组的末尾添加新内容参数:要添加的项。传递多个用逗号隔开,任何数据类型都可以返回值:新增后数组的长度是否改变原数组:改变
let ary1 = [12,34,26];
ary1.push(100); //返回一个新的长度
length=4console.log(ary1)//结果为 [12,34,26,100]
pop()删除数组的最后一项参数:无返回值:被删除的项是否改变原数组:改变
let ary2 = [108,112,39,10];
ary2.pop();//删除的最后一项为10
console.log(ary2);//[108, 112, 39]
shift()删除数组的第一项参数:无返回值:被删除的项是否改变原数组:改变
let ary3 = [0,108,112,39];
ary3.shift();//删除的第一项为0
console.log(ary3);//[108, 112, 39]
unshift()向数组首位添加新内容参数 ...