欢迎进入广州凡科互联网科技有限公司网站
全国服务热线
4000-399-000
怎么推广微信小程序_webpack4+react多页面架构的完
时间: 2021-01-08 11:49 浏览次数:
webpack4+react多张面构架的完成 webpack在宣传单页面装包上运用普遍,以create-react-app为先的脚手架诸多。本文关键详细介绍了webpack4+react多张面构架的完成,具备一定的参照使用价值
webpack4+react多页面架构的实现       webpack在单页面打包上应用广泛,以create-react-app为首的脚手架众多。这篇文章主要介绍了webpack4+react多页面架构的实现,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

webpack在单页面打包上应用广泛,以create-react-app为首的脚手架众多,单页面打包通常是将业务js,css打包到同一个html文件中,整个项目只有一个html文件入口,但也有许多业务需要多个页面不同的入口,比如不同的h5活动,或者需要支持seo的官方网站,都需要多个不同的html,webpack-react-multi-page架构让你可以实现多页面架构,在项目开发中保证每个页面都可以热更新并且打包后有清晰的文件层次结构。


项目架构

技术使用

react16 webpack4 html-webpack-plugin 生成html文件 mini-css-extract-plugin css分离打包 uglifyjs-webpack-plugin js压缩 optimize-css-assets-webpack-plugin css压缩

目录结构

|-- webpack-react-multi-page //项目
 |-- dist //编译生产目录
 |-- index
 |-- index.css
 |-- index.js
 |-- about
 |-- about.css
 |-- about.js
 |-- images
 |-- 
 |-- 
 |-- node_modules //node包
 |-- src //开发目录
 |-- index //index页面打包入口
 |-- images/
 |-- app.js// index业务js
 |-- index.scss
 |-- index.js //index页面js入口
 |-- about //about页面打包入口
 |-- images/
 |-- app.js// about业务js
 |-- index.scss
 |-- index.js //about页面js入口
 |--  // html模板 
 |-- style.scss //公共scss
 |-- webpackConfig //在webpack中使用
 |-- getEntry.js //获取入口
 |-- getFilepath.js //遍历文件夹
 |-- htmlconfig.js //每个页面html注入数据
 |-- package.json
 |-- .gitignore
 |-- webpack.config.js //webpack配置文件
 |-- js //生产启动程序

wiki

webpack单页面打包配置

webpack.config.js

module.exports = (env, argv) = ({
 entry: ".src/index.js",
 output: {
 path: path.join(__dirname, "dist"),
 filename: "bundle.js"
 module: {
 rules: [
 plugins: [
 new HtmlWebpackPlugin({
 title: "首页",
 ",
 favicon:"", 
 template: "./", 

这样就可以在dist文件夹下打包出一个下面这样的文件

 !DOCTYPE html 
 html lang="en" 
 head 
 title 首页 /title 
 body 
 div id="root" /div 
 script type="text/javascript" src="bundle.js" /script 
 /body 
 /html 

webpack多页面打包配置

webpack 的entry支持两种种格式

打包单个文件

module.exports = {
 entry: '.src/file.js',
 output: {
 path: path.resolve(__dirname, 'dist'),
 filename: 'bundle.js' 

在dist下打包出一个bundle.js

打包出多个文件

module.exports = {
 entry: {
 index:"./src/index.js",
 about:"./src/about.js"
 output: {
 path: path.resolve(__dirname, 'dist'),
 filename: '[name].js' 

上面在dist下打包出两个与entry属性名对应的index.js,about.js这两个文件

将每个js挂载到相应的html文件上

这里我们需要用到html-webpack-plugin这个webpack插件,每添加一个页面就需要在plugins添加一个new HtmlWebpackPlugin({....})

const HtmlWebpackPlugin = require("html-webpack-plugin");
module.exports = (env, argv) = ({
 entry: {
 index:"./src/index.js",
 about:"./src/about.js"
 output: {
 path: path.resolve(__dirname, 'dist'),
 filename: '[name].js' 
 ....//其他配置
 plugins: [
 new HtmlWebpackPlugin(
 
 template: "./",}) //模板
 chunks:["index"]
 new HtmlWebpackPlugin(
 
 template: "./",}) //模板
 chunks:["about"]
<模板生成对应的filename名的html文件,并一并打包到output中对应的文件夹下,注意,所有打包的文件都是对应到output中path这个目录下,也包括html。这里的chunks需要注意,它是确定该html需要引入哪个js,如果没写的话,默认会引出所有打包的js,当然这不是我们想要的。
上面的配置最终可以在dist下打包出下面的文件结构

|-- dist
 |-- index.js
 |-- about.js
 |--  //内挂载index.js
 |--  //内挂载about.js

通过上面这样的配置,再加上devServer,我们已经可以实现多页面的配置开发了,但这样很不智能,因为你每增加一个页面,就要在wepback里面配置一次,会非常繁琐,所以我们来优化下,让我们只专注于开发页面,配置交给webpack.

wehbpack多页面配置优化

我们看下src下面的文件结构

|-- src
 |-- index
 |-- app.js
 |-- index.scss
 |-- index.js
 |-- about
 |-- app.js
 |-- index.scss
 |-- index.js

src下面每个文件夹对应一个html页面的js业务,如果我们直接把文件夹对应入口js找到并把他们合并生成对应的entry,那是不是就不用手动写entry了呢,再把对应的html-webpack-plugin通过src下目录遍历出来,就可以生成对应的页面。

这样一个完整的多页面架构配置就完成了,完整代码参考项目

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持凡科。




Copyright © 广州凡科互联网科技有限公司 版权所有 粤ICP备10235580号
全国服务电话:4000-399-000   传真:021-45545458
公司地址:广州市海珠区工业大道北67号凤凰创意园