常用的 git 命令
工作区、暂存区、本地仓库、远程仓库
- git clone:克隆远程仓库到本地。
- git init:在当前目录初始化一个新的 Git 仓库。
- git pull :拉取远程仓库的更新并直接合并到当前分支。
- git add:将文件添加到暂存区,准备提交。
- git commit -m "commit_message" :提交暂存区的改动到本地仓库,附带提交信息。
- git status:查看工作区、暂存区的状态,显示文件的修改情况。
- git push :将本地分支的更新推送到远程仓库。
- git stash:把所有未提交的修改(包括暂存的和非暂存的)存储到一个新的堆栈中。
- git stash pop: 将堆栈中的最近一个提交弹出,更新到本地工作区。
- git fetch:将远程仓库的更新拉到本地,由用户决定是否合并。
- git merge :将指定分支合并到当前分支。
- git reset --hard:回滚到指定版本。
- git log:显示提交日志,包括提交哈希、作者、日期等信息。
- git branch:列出所有分支,当前分支前会有一个星号。
- git checkout :切换到指定分支。
- git checkout -b :创建并切换到新分支。
- git diff:显示工作区与暂存区之间的差异。
webpack 配置有哪些
- entry:入口文件
- output:输出文件配置
- resolve:用来配置模块的解析方式
- module:用来配置模块如何被解析 loader 在 module 中使用
- plugins:插件
- devServer:开发服务器配置
- devtool:调试工具
- optimization:优化相关配置
有哪些常见的 Loader 和 Plugin?
Loader:
url-loader
:将文件转为 base64 格式,提供 limit 参数,大于 limit 的会使用file-loader
file-loader
:将文件独自打包。less-loader
:加载LESS
,转化为 CSS 代码。css-loader
:将 css 文件变成 commonjs 模块加载 js 中,里面内容是样式字符串。style-loader
:创建 style 标签,将 js 中的样式资源加入其中,会有闪屏现象。postcss-loader
:css 兼容性处理。eslint-loader
: 通过ESLint
检查JavaScript
代码tslint-loader
: 通过TSLint
检查TypeScript
代码babel-loader
: 把ES6
转换成ES5
Plugin:
html-webpack-plugin
:复制 html 模板文件,并自动引入打包输出的所有资源(JS/CSS),压缩 htmlmini-css-extract-plugin
:取代 style-laoder,提取 js 中的 css 成单独文件,通过 link 引入,而不是style标签,避免了闪屏现象。optimize-css-assets-webpack-plugin
:压缩 csswebpack-parallel-uglify-plugin
: 多进程执行代码压缩,提升构建速度
那你再说一说 Loader 和 Plugin 的区别?
功能不同:
- Loader本质是一个函数,它是一个转换器。
webpack
只能解析原生js
文件,对于其他类型文件就需要用loader
进行转换。 - Plugin它是一个插件,用于增强
webpack
功能。webpack
在运行的生命周期中会广播出许多事件,Plugin
可以监听这些事件,在合适的时机通过webpack
提供的 API改变输出结果
。
用法不同:
- Loader的配置是在
module.rules
下进行。类型为数组,每⼀项都是⼀个Object
,⾥⾯描述了对于什么类型的⽂件(test
),使⽤什么加载(loader
)和使⽤的参数(options
) - Plugin的配置在
plugins
下。类型为数组,每一项是一个Plugin
的实例,参数都通过构造函数传入。
什么是 Code Splitting ?
通常Webopack
会将所有代码打包到一个单独的bundle
中,然后在页面加载时一次性加载整个bundle
。这样的做法可能导致初始加载时间过长。
Code Splitting
解决了这个问题,它将应用程序的代码划分为多个代码块,每个代码块代表不同的功能或路由。这些代码块可以在需要时被动态加载,使得页面只加载当前所需的功能,而不必等待整个应用程序的所有代码加载完毕。
在Webpack
中通过 optimization.splitChunks
配置项来开启代码分割。
// 通过js代码,让某个文件被单独打包成一个chunk
// import动态导入语法:能将某个文件单独打包
import(/* webpackChunkName: 'test' */'./test')
.then(({ mul })=> {
console.log(mul(2, 4));
})
.catch(() => {
console.log('文件加载失败了');
})
如何减少打包后的代码体积
- 代码分割(Code Splitting) :将应用程序的代码划分为多个代码块,按需加载。这可以减小初始加载的体积,使页面更快加载。
- Tree Shaking:配置
Webpack
的Tree Shaking
机制,去除未使用的代码。 - 压缩代码:使用插件分别压缩 html、css、js 代码。减小文件体积。
- 使用生产模式:在
Webpack
中使用生产模式,通过设置mode: 'production'
来启用优化。这会自动应用一系列性能优化策略,包括代码压缩和Tree Shaking
。 - 使用压缩工具:使用现代的压缩工具,来对静态资源进行压缩,从而减小传输体积。
- 利用CDN加速:将项目中引用的静态资源路径修改为 CDN 上的路径,减少图片、字体等静态资源的大小。