预处理器和后处理器
- 预处理器:预处理器是一种在代码编译或转换之前处理代码的工具,主要用于扩展原生语言的功能,使开发者可以使用更高级的语法和特性。常见的预处理器包括 CSS 预处理器(如 Sass、Less、Stylus)和 HTML 预处理器(如 Pug)。
- 功能:
- 增强语法:支持变量、嵌套、继承等
- 代码复用:允许定义可重用的代码片段:混合mixin和函数等
- 模块化:支持将代码分割成多个文件,并通过导入机制进行组合
- 自动化处理:预处理器可以自动处理一些重复性工作,如自动添加浏览器前缀、转换单位等,减轻开发者的工作量。
- 后处理器:一种在代码编译或转换之后处理代码的工具,主要用于优化和增强生成的代码
- 功能:
- 自动添加浏览器前缀:根据目标浏览器的兼容性要求,自动添加必要的浏览器前缀,确保样式在不同浏览器中的一致性。
- 代码优化和压缩:后处理器可以对生成的代码进行优化和压缩,减少文件体积,提高页面加载速度
- 代码转换:后处理器可以将一些新的 CSS 特性转换为兼容旧版浏览器的代码,确保代码的兼容性和可用性
- 代码检查和修复:后处理器可以对生成的代码进行检查和修复,确保代码符合规范和最佳实践,减少潜在的错误和问题
typescript中interface和type的区别
- 描述对象
- interface:对象和函数
- type:可以描述任何类型:对象、基本类型、联合类型等
- 是否可以合并
- interface:多个同名interface自动合并
- type:不可合并,只能通过&合并不同的类型
- 扩展
- interface:使用implements进行扩展
- type:不支持
typescripe中的Pick
type Pick<T, K extends keyof T> = {
[P in K]: T[P];
};
interface Todo {
title: string;
description: string;
completed: boolean;
createdAt: number;
}
type TodoPreview = Pick<Todo, 'title' & 'description'>;
const todo: TodoPreview = {
title: 'Learn TypeScript',
description: 'Understand utility types like Pick'
};
webpack optimization
module.exports = {
optimization: {
splitChunks: {
chunks: 'all',
minSize: 20000,
minChunks: 1,
maxAsyncRequests: 5,
maxInitialRequests: 3,
automaticNameDelimiter: '~',
name: true,
cacheGroups: {
vendors: {
test: /[\/]node_modules[\/]/,
priority: -10,
filename: 'vendors.js'
},
default: {
minChunks: 2,
priority: -20,
reuseExistingChunk: true
}
}
}
} };
package.json
- scripts:脚本内容
- dependencies:运行项目所需的依赖
- devDependencies:开发项目所需的依赖
- resolutions:yarn特有,强制指定项目的依赖树中某个包的特定版本
- main:项目入口文件