前端工程化

简介: Webpack是模块打包工具,支持ES6、代码分割与模块化,区别于Grunt/Gulp等构建工具。webpack4新增mode参数,优化打包策略,支持Tree-shaking、splitChunks提取公共代码,提升构建效率与性能。通过loader处理非JS资源,plugin扩展功能,实现高效前端工程化。
  1. webpack3和webpack4的区别?
  2. mode/–mode参数: 新增了mode/--mode参数来表示是开发还是生产(development/production); production 侧重于打包后的文件大小,development侧重于构建速度
  3. 移除loaders,必须使用rules(在3版本的时候loaders和rules 是共存的但是到4的时候只允许使用rules)
  4. 移除了CommonsChunkPlugin (提取公共代码),用optimization.splitChunks和optimization.runtimeChunk来代替
  5. 支持es6的方式导入JSON文件,并且可以过滤无用的代码
  6. 什么是webpack,和grunt和gulp有什么不同?
  7. Webpack是一个模块打包器,他可以递归的打包项目中的所有模块,最终生成几个打包后的文件。
  8. 他和其他的工具最大的不同在于他支持code-splitting、模块化(AMD,ESM,CommonJs)、全局分析。
  9. 什么是bundle,什么是chunk,什么是module?
  10. bundle是由webpack打包出来的文件
  11. chunk是指webpack在进行模块的依赖分析的时候,代码分割出来的代码块
  12. module是开发中的单个模块。
  13. 什么是Loader?什么是Plugin?
  14. loader是使wenbpack拥有加载和解析非js文件的能力
  15. plugin 可以扩展webpack的功能,使得webpack更加灵活。可以在构建的过程中通过webpack的api改变输出的结果
  16. Webpack的构建流程?
  17. 初始化参数,从配置文件和shell语句中读到的参数合并,得到最后的参数
  18. 开始编译:用合并得到的参数初始化complier对象,加载是所有配置的插件,执行run方法开始编译
  19. 确定入口,通过entry找到入口文件
  20. 编译模块,从入口文件出发,调用所有配置的loader对模块进行解析翻译,在找到该模块依赖的模块进行处理
  21. 完成模块编译,得到每个模块被翻译之后的最终的内容和依赖关系
  22. 输出资源,根据入口和模块之间的依赖关系,组装成一个个包含多个模块的chunk,在把每个chunk转换成一个单独的文件加载到输出列表
  23. 输出完成,确定输出的路径和文件名,把内容写到文件系统中
  24. 如何利用webpack来优化前端性能
  25. 提取公共代码。webpack4移除了CommonsChunkPlugin (提取公共代码),用optimization.splitChunks和optimization.runtimeChunk来代替
  26. 压缩代码。(development和production)
  27. 使用loader的时候,使用exclude排除node_modules中的文件
  28. 配置extractTextWebpackPlugin插件
  29. 使用TreeShaking插件:Tree-shaking 概念最早由Rollup.js 提出,后来在webpack2中被引入进来,但是这个这一特性能够被支持得益于ES6 modules的静态特性。ES6的模块声明相比于传统CommonJS的同步require有着本质区别。这种modules设计保证了依赖关系是提前确定的,使得静态分析成为了可能,与运行时无关。(除那些引用的但却没有使用的代码)
    // 一、.babelrc 中添加
    "presets": [
    [
    "es2015", {
    "modules": false,
    }
    ],
    "stage-2"
    ],
    // 或者在babel loader中的options里面添加同样的代码, modules:false 表示的是不对ES6进行处理

// 二、使用uglifyjs-webpack-plugin
plugins: [
new UglifyJsPlugin(),
...
]
Copy
Note
想要代码配置tree-shaking,必须采用es6的模块语法,因为es6的模块采用的是静态分析,也就是从字面量对代码进行分析。之前的require是动态分析,必须代码执行到才知道引用的什么模块。

  1. 如何可以自动生成webpack配置?
    答案: webpack-cli /vue-cli /etc ...脚手架工具
  2. webpack-dev-server和http服务器如nginx有什么区别?
  3. webpack-dev-server使用内存来存储webpack开发环境下的打包文件
  4. 并且可以使用模块热更新
  5. 他比传统的http服务对开发更加简单高效。
  6. 什么是模块热更新?
    答案:模块热更新是webpack的一个功能,他可以使得代码修改过后不用刷新浏览器就可以更新,是高级版的自动刷新浏览器。
  7. 什么是长缓存?在webpack中如何做到长缓存优化?
    答案:
  8. 浏览器在用户访问页面的时候,为了加快加载速度,会对用户访问的静态资源进行存储,但是每一次代码升级或是更新,都需要浏览器去下载新的代码,最方便和简单的更新方式就是引入新的文件名称。
  9. 在webpack中可以在output纵输出的文件指定chunkhash,并且分离经常更新的代码和框架代码。
  10. 通过NameModulesPlugin或是HashedModuleIdsPlugin使再次打包文件名不变。
  11. 什么是Tree-shaking?CSS可以Tree-shaking吗?
    答案:
  12. Tree-shaking是指在打包中去除那些引入了,但是在代码中没有被用到的那些死代码。
  13. 在webpack中Tree-shaking是通过uglifySPlugin来Tree-shaking JS
  14. Css需要使用Purify-CSS。
相关文章
|
安全 编译器 C#
C#学习相关系列之多线程---lock线程锁的用法
C#学习相关系列之多线程---lock线程锁的用法
613 1
|
10月前
|
机器学习/深度学习 人工智能 算法
7M参数,干翻巨无霸LLM!这款超小递归模型(TRM),在ARC-AGI上证明了“少即是多”
Lab4AI.cn提供免费的AI翻译和AI导读工具辅助论文阅读;支持投稿复现,动手复现感兴趣的论文;论文复现完成后,您可基于您的思路和想法,开启论文创新。
443 3
7M参数,干翻巨无霸LLM!这款超小递归模型(TRM),在ARC-AGI上证明了“少即是多”
|
XML 测试技术 API
利用C#开发ONVIF客户端和集成RTSP播放功能
利用C#开发ONVIF客户端和集成RTSP播放功能
5113 123
|
C# Android开发 虚拟化
C# 一分钟浅谈:MAUI 跨平台移动应用开发
.NET MAUI 是 Microsoft 推出的跨平台框架,支持 Windows、macOS、iOS 和 Android。本文从基础概念入手,探讨 MAUI 的常见问题、易错点及解决方案,并通过代码示例详细说明。涵盖平台特定代码、XAML 语法、数据绑定、性能优化和调试技巧等内容,帮助开发者更好地掌握 .NET MAUI。
1687 55
|
开发框架 .NET API
.NET 体系概览图集 - 2024 最全总结
.NET Core 是一个免费、跨平台、开源的开发平台,用于一站式构建不同类型的应用程序。 .NET Core 是以 .NET Framework 为基础,但是经过重新设计、实现的的新一代框架,实现了原 .NET Framework 中的几乎所有功能,核心特点就是开源、跨平台。
1780 0
.NET 体系概览图集 - 2024 最全总结
|
XML JSON 前端开发
C#使用HttpClient四种请求数据格式:json、表单数据、文件上传、xml格式
C#使用HttpClient四种请求数据格式:json、表单数据、文件上传、xml格式
3591 0
|
存储 算法 内存技术
信息技术教资科3选择题相关知识点(1)
信息技术教资科3选择题相关知识点
1483 0
|
C# Android开发 C++
c#(nanoframework)安装单片机环境;如何使用c#写类似于c的单片机驱动
c#(nanoframework)安装单片机环境;如何使用c#写类似于c的单片机驱动
778 0
c#(nanoframework)安装单片机环境;如何使用c#写类似于c的单片机驱动
|
安全 API 数据安全/隐私保护
outlook邮箱imap密码怎么写?
Outlook邮箱的IMAP密码是安全的关键,应遵循复杂性(至少8字符,含大小写字母、数字和符号)和避免个人信息的原则。要更改密码,登录账户,进入设置->账户设置->安全性或密码,按提示操作。定期更换,不透露给他人,账户异常时立即更改并联系客服。了解这些,能更好地保护你的邮箱安全。
|
存储 传感器 算法
相机标定系列---opencv相关标定算子
相机标定系列---opencv相关标定算子
784 0

热门文章

最新文章