企划动力
首页> 网站建设>佛山网络公司-什么是Webpack?(二)

经典案例

佛山网络公司-什么是Webpack?(二)

高端网站建设和大型网站建设一样,都需要成熟的前端压缩技术来增加效率和速度

发布时间:2019-09-11

高端网站建设和大型网站建设一样,都需要成熟的前端压缩技术来增加效率和速度,webpack是比较成熟的一个技术,可以是前端的资源大大的开发使用,所以webpack对于大型网站优化来说,都还是比较重要的。

高端网站建设的Webpack解决任何文件类型

Webpack将在构造依赖图时解析它遇到的每个模块。如果条目包含依赖项,则将针对每个依赖项递归执行该过程,直到遍历完成为止。Webpack可以针对任何文件类型执行此过程,这与Babel或Sass编译器等专用工具不同。

Webpack使您可以控制如何处理遇到的不同资产。例如,您可以决定将资源内联到JavaScript包以避免请求。Webpack还允许您使用CSS模块等技术将样式与组件结合,并避免标准CSS样式问题。这种灵活性使webpack非常有价值。

虽然webpack主要用于捆绑JavaScript,但它可以捕获图像或字体等资源,并为它们发出单独的文件。条目只是捆绑过程的起点。webpack发出的内容完全取决于您配置它的方式。

高端网站建设 webpack

佛山网络公司 webpack的评估过程

假设找到所有加载器,webpack将从下到上和从右到左(styleLoader(cssLoader('./main.css')))的匹配加载器进行评估,同时依次通过每个加载器运行模块。因此,您将获得webpack将在结果包中注入的输出。该装载机定义章将详细介绍该主题。

如果所有加载器评估都在没有运行时错误的情况下完成,则webpack会在最后一个包中包含源。插件允许您在捆绑过程的不同阶段拦截运行时事件。

虽然装载机可以做很多事情,但它们不能为高级任务提供足够的动力。插件可以拦截webpack提供的运行时事件。一个很好的例子是由MiniCssExtractPlugin它执行的包提取,当与加载器一起使用时,从包中提取CSS文件并将其提取到单独的文件中。如果没有这一步,CSS将在生成的JavaScript中内联,因为webpack默认将所有代码视为JavaScript。提取思想在Separating CSS章节中讨论。


36300030a880053cb29429299c042d2b.png

webpack示例

精加工

评估完每个模块后,webpack会写入输出。输出包括一个bootstrap脚本,其中包含一个描述如何在浏览器中开始执行结果的清单。可以将清单提取到自己的文件中,如本书后面所述。输出根据您使用的构建目标而有所不同(定位Web不是唯一选项)。

这并不是捆绑过程的全部内容。例如,您可以定义特定的拆分点,其中webpack生成基于应用程序逻辑加载的单独的包。Code Splitting章节讨论了这个想法。

Webpack是配置驱动的

webpack的核心依赖于配置。以下是根据官方webpack教程改编的示例配置,其中包含以下要点:

webpack.config.js

const webpack = require("webpack");module.exports = {
 // Where to start bundling
 entry: {
   app: "./entry.js",
 },
 // Where to output
 output: {
   // Output to the same directory
   path: __dirname,
   // Capture name from the entry using a pattern
   filename: "[name].js",
 },
 // How to resolve encountered imports
 module: {
   rules: [
     {
       test: /\.css$/,
       use: ["style-loader", "css-loader"],
     },
     {
       test: /\.js$/,
       use: "babel-loader",
       exclude: /node_modules/,
     },
   ],
 },
 // What extra processing to perform
 plugins: [
   new webpack.DefinePlugin({ ... }),
 ],
 // Adjust module resolution algorithm
 resolve: {
   alias: { ... },
 },};

Webpack的配置模型有时会感觉有点不透明,因为配置文件可能看起来是单片的。除非你知道背后的想法,否则很难理解webpack在做什么。提供驯服配置的方法是本书存在的主要目的之一。


相关阅读:webpack教程

佛山网络公司-什么是Webpack?