博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
webpack配置(第四步:html篇(进阶篇))
阅读量:6967 次
发布时间:2019-06-27

本文共 3736 字,大约阅读时间需要 12 分钟。

hot3.png

关于webpack的项目文件:

如果需要看(基础篇)请移步:

webpack.config.js文件

const path = require('path');let htmlwebpackplugin = require('html-webpack-plugin');//引入html-webpack-plugin插件 let export_html= {    entry:  {    	main:__dirname+"/app/js/main.js",//入口文件    	main1:__dirname+"/app/js/main1.js",//入口文件    },    output: {        path: __dirname+"/_build/",        filename: "js/[name].js",//产出文件,name根据entry的入口文件键名定    },    module: {        loaders: [			{			    test: /(\.jsx|\.js)$/,			    loader: 'babel-loader',			    query: {			      presets: ['es2015']			    }			},        ]    }    , 	plugins: [ 		//new一个模板出来,这一个不使用chunks  		new htmlwebpackplugin({	        template: './app/home.html',//入口文件	        filename:  'home1.html',//产出文件		}), 		//new一个模板出来  		new htmlwebpackplugin({	        template: './app/home.html',//入口文件	        filename:  'home2.html',//产出文件	        chunks  : ['main'],//可以设置chunks按需引入JS文件,不设置就会引入所有产出的js	        chunksSortMode: 'manual',//将chunks按引入的顺序排序,不用这个的话,引入到html的JS可能是错乱排序的		}) 	]    };module.exports=export_html;

看plugins这里

//new一个模板出来,这一个不使用chunks                new htmlwebpackplugin({	        template: './app/home.html',	        filename:  'home1.html',// 会生成home1.html		}), 		//new一个模板出来  		new htmlwebpackplugin({	        template: './app/home.html',	        filename:  'home2.html',//会生成home2.html	        chunks  : ['main'],//注意:chunks里面的值是对应entry入口的键名来的	        chunksSortMode: 'manual',		})

app目录下的home.html文件

_build目录下的home1.html文件

_build目录下的home2.html文件

可以看到,home1.html引入了两个js文件,而且main1.js排在main.js前面,

而home2.html,只引入了指定的main.js;

在home2.html的chunks加上:main1

//new一个模板出来  		new htmlwebpackplugin({	        template: './app/home.html',//入口文件	        filename:  'home2.html',//产出文件	        chunks  : ['main',"main1"],//可以设置chunks按需引入JS文件,不设置就会引入所有产出的js	        chunksSortMode: 'manual',//将chunks按引入的顺序排序,不用这个的话,引入到html的JS可能是错乱排序的		})

因为chunks里,main在main1之前,所以引入的文件也是按照这个顺序来的;

顺序的问题主要归功于:这一条属性

chunksSortMode: 'manual',//将chunks按引入的顺序排序,不用这个的话,引入到html的JS可能是错乱排序的

更进一步:

每次都这样new很麻烦,故而写个函数简化过程

let get_html = function(name,chunk){//封装    return {        template: './app/ejs for html/'+ name + '.ejs',        filename:  name+ '.html',        chunks  : ['main',chunk||name],//可以设置chunks按需引入JS文件,不设置就会引入所有产出的js        chunksSortMode: 'manual',//将chunks按引入的顺序排序        inject  : true,        hash    : true,		xhtml	: true    }};

然后在plugin里面new一个测试一下;

此时,webpack.config.js:

const path = require('path');let htmlwebpackplugin = require('html-webpack-plugin');//引入html-webpack-plugin插件 let get_html = function(name,chunk){//封装    return {        template: './app/'+ name + '.html',        filename:  name+ '.html',        chunks  : ['main',chunk||null],//这里引入公共文件main.js,另外一个文件按需引入,当然也可以把这个的值设为数组,传入function的第二个值用数组就行        chunksSortMode: 'manual',//将chunks按引入的顺序排序        inject  : true,//所有JavaScript资源插入到body元素的底部        hash    : true,//避免缓存		xhtml	: true //规范html书写    }};let export_html= {    entry:  {    	main:__dirname+"/app/js/main.js",//入口文件    	main1:__dirname+"/app/js/main1.js",//入口文件    },    output: {        path: __dirname+"/_build/",        filename: "js/[name].js",//产出文件,name根据entry的入口文件键名定    },    module: {        loaders: [			{			    test: /(\.jsx|\.js)$/,			    loader: 'babel-loader',			    query: {			      presets: ['es2015']			    }			},        ]    }    , 	plugins: [ 		//new一个模板出来测试一下  		new htmlwebpackplugin(get_html("home","main1")) 	]    };module.exports=export_html;

结果:

成功!

下面是我关于webpack配置的所有链接

webpack配置(第一步:配置前提):

webpack配置(第二步:入门篇):

webpack配置(第三步:ES6篇):

webpack配置(第四步:html篇(基础篇)):

webpack配置(第四步:html篇(进阶篇)):

webpack配置(第四步:html篇(模板篇)):

webpack配置(第五步:less/css篇(基础篇)):

webpack配置(第五步:less/css篇(进阶篇)):

webpack配置(第五步:less/css篇(url图片篇)):

转载于:https://my.oschina.net/u/3797834/blog/1649196

你可能感兴趣的文章
KnockoutJS + My97DatePicker b
查看>>
简单编写makefile文件,实现GCC4.9编译项目,增加boost库測试等等。。
查看>>
Android-Volley网络通信框架(二次封装数据请求和图片请求(包含处理请求队列和图片缓存))...
查看>>
OpenGL透明与混色效果
查看>>
有间距的表格布局 table布局
查看>>
Java 设计模式—装饰者模式
查看>>
实战c++中的vector系列--vector的遍历(stl算法、vector迭代器(不要在循环中推断不等于end())、operator[])...
查看>>
【一步步学OpenGL 20】 -《点光源》
查看>>
Spring -- <mvc:annotation-driven />
查看>>
java.net.ServerSocket 解析
查看>>
33-hadoop-cdh搭建coudemanager安装
查看>>
【iCore1S 双核心板_ARM】例程十四:FATFS实验——读写文件
查看>>
CPU 虚拟化
查看>>
circRNA 在人和小鼠脑组织中的表达
查看>>
新人替代旧人
查看>>
2步安装1个hive docker运行环境[centos7]
查看>>
Android Keystore 对称-非对称加密
查看>>
工作总结 获取html 标签 自定义属性值 根据html 自定义属性 获取 到标签...
查看>>
window.external的使用
查看>>
wait/waitpid函数与僵尸进程、fork 2 times
查看>>