使用webpack构建多页应用的案例

  介绍

这篇文章将为大家详细讲解有关使用webpack构建多页应用的案例,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

背景:随着反应,vue,角三大前端框架在前端领域地位的稳固,温泉应用正在被应用到越来越多的项目之中。然而在某些特殊的应用场景之中,则需要使用到传统的多页应用。在使用webpack进行项目工程化构建时,也需要对应到调整。

与温泉应用区别

在温泉应用中,使用webpack构建完成项目之后,会生成一个html文件,若干个js文件,以及若干个css文件。在html文件中,会引用所有的js和css文件。\
而在多页应用中,使用webpack构建完成项目之后,会生成多个html文件,多个js文件,以及多个css文件。在每个html文件中,只会引用该页面所对应的js和css文件。

webpack配置

入口设置

多页应用的打包会对应多个入口js文件,以及多模个html版文件。假设我们的开发状态下的多页目录是这样:

|——所述   | - - - index . html   |——index.js   |——index.less   所以page2 |——   | - - - index . html   |——index.js   |——指数。少

包括page1 <代码> 和<代码>所以page2> js代码和<代码> 文少件。那么在使用<代码> webpack 构建项目时,就有<代码> page1→索引。所以page2 js代码和<代码>→索引。js代码两个入口文件,以及<代码> page1→索引。所以page2 html代码和<代码>→索引。> 要自动匹配到所有的页面入口及模版文件,有两种方法。\
\
方法一:使用<代码>节点的<代码> fs 文件系统。来读取父级文件夹下的所有子文件夹。通过文件夹名称,来自动匹配到所有的页面。然而,这种方式需要保持父级文件夹下文件的干净,否则就需要使用具体的判断逻辑来过滤出所有的入口目录。\
\
方法二:通过配置文件来配置入口。比如:

条目:[& # 39;所述# 39;& # 39;所以page2 # 39;];

这样便能准确的指定出所有的入口目录。然而却在每次增加页面时,都需要去更改配置文件。\
两种方法个有特点,可根据具体情况选择。

具体配置
<编辑>条目

条目的配置需要根据我们获取到的入口数据来循环添加。

const entryData=https://www.yisu.com/zixun/{};   条目。forEach(函数(项){   entryData[项目]=路径。加入(__dirname“. ./src/页面/${项}/index.js ');   }) <编辑>

输出输出的配置和SPA应用一致,不需要特殊配置。

输出:{   文件名:& # 39;公共/[名字]_ (chunkhash: 8) . js,,   路径:路径。加入(__dirname“. ./dist/?,   publicPath: & # 39;/& # 39;   }, <编辑> HtmlWebpackPlugin

在使用<代码> webpack 构建时需。要使用到<代码> html-webpack-plugin> html 模版文件。同样的,使用获取到的入口文件数据来循环添加。

const HtmlWebpackPlugin=要求(& # 39;html-webpack-plugin& # 39;);   const HtmlWebpackPluginData=https://www.yisu.com/zixun/[];   条目。forEach(函数(项){   HtmlWebpackPluginData.push (   新HtmlWebpackPlugin ({   文件名:“${项}. html”,   模板:路径。加入(__dirname“. ./src/页面/${项}/index . html”),   块(项):   })   );   })

配置中<代码> 块必须配置,如果不配置,会导致每个模版文件中均引入所有的<代码> js代码和<代码> css代码文件。指定为 <代码>条目中的配置<代码>名称>

配置组合

接下来,便是将前面的<代码>条目,<代码>输出,<代码> htmlWebpackPlugin> 模块。出口={   条目:{…entryData},   输出:{   文件名:& # 39;公共/[名字]_ (chunkhash: 8) . js,,   路径:路径。加入(__dirname“. ./dist/?,   publicPath: & # 39;/& # 39;   },   插件:[   HtmlWebpackPluginData…   ]   …   }

使用webpack构建多页应用的案例