该开源项目是一个 Webpack 快速启动模板。是预先配置的解决方案,旨在加速开发流程。它为 JavaScript 应用及 Web 资源提供模块化打包,使之适应浏览器环境。借助这样的模板,开发者能够立即投身项目核心功能的构建,无需从零配置构建工具链。
开源地址:https://gitee.com/xkpro/ke-starter
视频演示:https://www.bilibili.com/video/BV1U48ue3Egx/
快速开始
使用启动模板之前,请确保已安装
git、Node.js和Yarn包管理工具 。
- 拉取项目到本地
git clone https://gitee.com/xkpro/ke-starter.git
- 安装依赖
yarn
- 运行项目 (开发环境)
yarn start
完成上述步骤后,项目就已经启动并运行在本地开发环境中,可以开始愉快地编码和调试了。
打包
打包分发项目 (生产环境)
yarn build
项目依赖
webpack:是一个流行的前端资源模块打包器,它主要用于JavaScript应用程序,但也可以转换、打包其他类型的文件如 CSS、图片等。webpack-cli:是一个命令行接口,它是与Webpack一起使用的工具,允许开发者通过命令行来运行Webpack的构建、服务启动等任务,简化了配置和执行过程。webpack-dev-server:是一个小型的开发服务器,它不仅提供了实时重新加载的功能,还能够简化静态资源的托管,让开发者可以快速预览项目。@babel/core: 是一个JavaScript转译器的核心模块,它是Babel的一部分。Babel是一个广泛使用的工具,它允许你使用最新的ECMAScript特性编写代码,并将其转换为当前浏览器或环境支持的JavaScript版本,从而实现向后兼容。提示
@babel/core主要负责解析(parsing)、转换(transformation)和生成(code generation)JavaScript代码。它不直接包含任何具体的转换规则(称为 “插件” ),而是提供了一个运行时环境来加载这些插件并对代码应用它们。@babel/preset-env: 这是一个预设(preset),包含了将 ES6+代码转换为广泛支持的 ES5 代码所需的一系列插件。babel-loader: 是一个用于Webpack的加载器(loader),它允许你在Webpack构建过程中使用Babel来转换JavaScript文件。Webpack是一个流行的模块打包器,它能够处理各种模块和资源,把它们打包成一个或多个优化过的bundles,以便于在浏览器或其他环境中运行。提示
babel-loader的工作原理是,当Webpack遇到导入的JavaScript文件时,它会使用babel-loader加载该文件,然后@babel/core会根据你的Babel配置(包括预设和插件)来转译这些文件。这样,你就可以在项目中自由地使用最新的JavaScript特性,而不用担心浏览器兼容性问题,因为babel-loader会确保输出的代码能够在目标环境中运行。copy-webpack-plugin:是一个Webpack插件,它的主要功能是在构建过程中复制文件或整个目录到构建目录(通常是dist目录)中。这对于处理静态资源,如图片、字体文件、HTML模板或其他不需要经过Webpack模块转换的文件非常有用。css-loader: 是一个webpack加载器,它主要用于在webpack构建过程中处理CSS文件。这个加载器使得webpack能够理解import或require语句中导入的CSS文件,并将其作为模块来处理。这意味着你可以像导入JavaScript模块一样导入CSS文件,并且可以利用webpack的模块化能力,如代码拆分、热模块替换等。css-minimizer-webpack-plugin: 是一个webpack插件,用于在webpack构建流程的优化阶段(optimization phase)压缩CSS文件。这个插件通过利用诸如cssnano之类的CSS压缩工具来减少CSS文件的大小,从而提升网页加载速度和整体性能。html-webpack-plugin:是一个常用的Webpack插件,它简化了在webpack构建过程中对HTML文件的处理。这个插件主要做了以下几件事情:提示
- 自动注入资产:当你在
JavaScript文件中通过import或require引入CSS、图像或其他静态资源时,html-webpack-plugin会自动将这些资源的引用添加到生成的HTML文件中。这意味着你无需手动管理这些资源的链接。 - 模板生成:你可以指定一个
HTML模板文件,html-webpack-plugin会基于该模板生成最终的HTML文件,并在其中插入编译后的JS、CSS等bundle文件的引用。这对于多页面应用尤其有用,因为你只需要维护模板即可,而不用关心每次构建后如何更新资源引用。 - 简化配置:对于
SPA(单页应用)来说,它可以帮助你快速设置一个基本的HTML页面来加载你的应用程序,包括自动设置正确的<base>标签,确保资源加载路径正确。
- 自动注入资产:当你在
mini-css-extract-plugin: 主要作用是在Webpack构建过程中将CSS从JavaScript模块中抽取出来,生成独立的CSS文件。这样做有以下几个好处:提示
- 避免样式阻塞渲染:当
CSS与JavaScript打包在一起时,浏览器会遇到JavaScript执行阻塞问题,导致页面空白直到所有JavaScript执行完毕。通过将CSS分离到单独的文件,可以实现无阻塞渲染,提高页面加载速度和用户体验。 - 更好的缓存策略:独立的
CSS文件可以更好地利用浏览器的缓存机制。当只有CSS内容改变时,用户不需要重新下载JavaScript代码,反之亦然。 - 便于管理:对于大型项目,将
CSS与JavaScript分开管理可以使代码结构更清晰,便于开发和维护。
- 避免样式阻塞渲染:当
postcss:是一个强大的CSS处理器,它使用JavaScript插件来转换CSS代码。这意味着你可以自动完成一系列任务,如语法sugar的编写(例如使用未来的CSS特性)、浏览器兼容性处理(自动添加浏览器前缀)、代码优化和linting等。PostCSS不是一个预处理器(像Sass或Less),而是一个在预处理器之后或直接对CSS进行操作的工具,提供了高度的灵活性和模块化。主要特点
- 插件生态系统:
PostCSS的核心强大之处在于其丰富的插件生态。有数百个插件可供选择,覆盖了从最基础的自动前缀添加到复杂的布局和设计功能。 - 未来
CSS特性:许多PostCSS插件允许你使用尚未被浏览器广泛支持的CSS新特性,比如CSS Grid布局、Custom Properties(变量)、Color Functions等,然后自动将其转换为当前大多数浏览器可识别的CSS代码。 - 兼容性处理:自动添加浏览器厂商前缀(例如
-webkit-、-moz-等),确保样式的跨浏览器兼容性。 - 代码优化:移除无用的代码、合并重复的规则、压缩
CSS等,帮助减小文件大小,提高加载速度。 - 代码质量:通过诸如
Stylelint这样的插件进行代码风格检查和规范,保持代码的一致性和可读性。
- 插件生态系统:
postcss-loader:是一个Webpack加载器,它允许你在Webpack构建流程中使用PostCSS。通过这个加载器,你可以应用PostCSS的各种插件来处理CSS文件,比如自动添加浏览器前缀、使用未来CSS特性、进行代码优化等。postcss-preset-env:是一个PostCSS的预设(preset),它让你能够使用最新的CSS特性,同时确保生成的CSS代码兼容当前和旧版浏览器。这个预设自动包含了你需要的所有转译插件,以支持你所指定的目标浏览器环境。style-loader:是一个webpack加载器(loader),它用于在JavaScript模块中动态地注入CSS代码到DOM中。这意味着当你在JavaScript文件中导入一个CSS文件时,style-loader会把CSS作为<style>标签插入到HTML文档的<head>部分,从而使得样式生效。这种方式特别适合开发环境,因为它不需要额外的构建步骤来提取CSS到单独的文件中,使得样式变更可以即时反映在页面上,便于快速迭代和调试。sass:是一种CSS预处理器,它能够将Sass/SCSS代码编译成普通的CSS代码sass-loader:是Webpack中的一个加载器(loader),它的作用是让Webpack能够理解和处理.sass或.scss文件。当Webpack遇到这些类型的文件时,sass-loader会调用Sass库来把Sass/SCSS代码转换为CSS代码。terser-webpack-plugin:利用Terser库来压缩(也称为最小化)JavaScript代码的插件