8、打包多页应用

多页应用打包

  1. 首先,多页应用应该有多个js文件,那么新建如下:
   src------index.js
        |
        ----other.js
           
    //index.js
    console.log('home');
    //other.js
    console.log('other');
  1. 初始化这个项目
    npm init
    npm i webpack webpack-cli -D
  1. 新建并配置webpack.config.js
    1. 多入口文件,那么entry就不能写成字符串形式,应该是一个对象
    2. 出口,因为是多入口,所以出口也是多个,要配置成动态名字
    let path = require('path');
    module.exports = {
        entry:{
            home:'./index.js',
            other:'./other.js'
        },
        output:{
            filename:'[name]:[hash:8].js',
            path:path.resolve(__dirname,'./dist')
        }
        
    }
  1. 创建html文件

        node_modules
         |
        package.json
         |
        src------index.js
         |     |
         |      ----other.js
         |
        webpack.config.js
         |
        index.html
    
    

    虽然是多个入口js,但是html创建只需要一个就可以了,然后更具多个入口js,打包生成多个html

    既然是用到了html,那么就应该讲生成的js插入到html中,这时候应该用到html-webpack-plugin插件,并且配置webpack.config.js

    //webpack.config.js
    let path = require('path');
    let HtmlWebpackPlugin = require('html-webpack-plugin');
    module.exports = {
        entry:{
            home:'./index.js',
            other:'./other.js'
        },
        output:{
            filename:'[name]:[hash:8].js',
            path:path.resolve(__dirname,'./dist')
        },
        plugins:[
            new HtmlWebpackPlugin({
                template:'./index.html',
                filename:'index.html'
            })
        ]
        
    }
    

    显然,这样是 不正确 的,因为我们的目的是将多个js分别打包成多个html,而上面的配置,将home.js和other.js都插入到了index.html中

    由于是多个入口,根据插件要求,2个入口就要new两次HtmlWebpackPlugin,然后分别配置,我们来做如下改造:

    //webpack.config.js
     let path = require('path');
     let HtmlWebpackPlugin = require('html-webpack-plugin');
     module.exports = {
         entry:{
             home:'./index.js',
             other:'./other.js'
         },
         output:{
             filename:'[name]:[hash:8].js',
             path:path.resolve(__dirname,'./dist')
         },
         plugins:[
             new HtmlWebpackPlugin({
                 template:'./index.html',
                 filename:'home.html',
                 chunks:['home']//chunks代表代码块,也就是说,home.html中引入的对应js是entry为home的js,如果要引入other.js,那么这里就写['other'];如果两个都要,那么就写成['home','other']
             }),
             new HtmlWebpackPlugin({
                 template:'./index.html',
                 filename:'other.html',
                 chunks:['other']
             })
         ]
         
     }
    

    重点: chunks代表代码块,也就是说,home.html中引入的对应js是entry为home的js,如果要引入other.js,那么这里就写[‘other’];如果两个都要,那么就写成[‘home’,‘other’]

  2. 打包编译

    npx webpack

这样就生成了dist文件夹,其目录:

    dist
      |
      -------home.645f610f.js
      |
      -------home.html
      |
      -------other.645f610f.js
      |
      -------other.html

其中home.html内容就是:

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
</head>
<body>
	
<script type="text/javascript" src="home.645f610f.js"></script></body>
</html>

其中other.html内容就是:

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
</head>
<body>
	
<script type="text/javascript" src="other.645f610f.js"></script></body>
</html>

可见,对应的js都打包到对应的html中了,这样就实现了多页应用的打包

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值