详解用webpack把我们的业务模块分开打包的方法


Posted in Javascript onJuly 20, 2017

webpack我自己还在摸索学习中,今天给大家分享个用webpack把我们的业务模块分开打包的方法,顺便留个笔记

详解用webpack把我们的业务模块分开打包的方法 

如何用webpack打包这3个js?

只需修改webpack的配置文件webpack.config.js:

// entry是入口文件,可以多个,代表要编译那些js
 entry:['./src/main.js','./src/login.js','./src/reg.js'],

这样就可以全部打包,最终生成./build/js/build.js

1,那么如果我们想最后生成不同的文件,该如何做到呢?

今天我们就要用到webpack的模块拆分插件

entry:
 {
  'main':'./src/main.js',
  'user':['./src/login.js','./src/reg.js']
 },

拆分模块:login.js和reg.js我们都定义给user节点,那么下面我们就来把这个user节点单独打包,核心代码:

// 拆分插件
  new webpack.optimize.CommonsChunkPlugin({
   name:'user', // 上面入口定义的节点组
   filename:'build-user.js' //最后生成的文件名
  }),

webpack.config.js全部代码:

var HtmlWebpackPlugin = require('html-webpack-plugin');
var webpack = require('webpack');

module.exports = {
 // entry是入口文件,可以多个,代表要编译那些js
 //entry:['./src/main.js','./src/login.js','./src/reg.js'],

 entry:
 {
  'main':'./src/main.js',
  'user':['./src/login.js','./src/reg.js']
 },

 output:{
  path: __dirname+'/build/js', // 输出到那个目录下(__dirname当前项目目录)
  filename:'build.js' //最终打包生产的文件名
 },
 plugins:[
  new HtmlWebpackPlugin({
   filename: __dirname+'/build/html/login-build.html',
   template:__dirname+'/src/tpl/login.html',
   inject:'head',
   hash:true
  }),

  // 拆分插件
  new webpack.optimize.CommonsChunkPlugin({
   name:'user', // 上面入口定义的节点组
   filename:'build-user.js' //最后生成的文件名
  }),
 ]
};

详解用webpack把我们的业务模块分开打包的方法

然后再来看看html模板文件的变化:

详解用webpack把我们的业务模块分开打包的方法

那么如何打包jQuery呢?

事实上,jQuery这样的库我们生产环境肯定要使用CDN,而不会和我们的业务模块打包打一起。
比如国内的CDN地址: http://cdn.bootcss.com/jquery/1.12.4/jquery.js

externals:{ 
‘jquery':'jQuery' 
},

1.源模板文件login.html引入jq

<!DOCTYPE html>
<html>
<head>
 <title></title>
 <meta charset="utf-8">
 <scritp src="http://cdn.bootcss.com/jquery/1.12.4/jquery.js"></scritp>
</head>
<body>
 <h2>用户登录</h2>
 <p>用户名:</p>
 <p><input type="text" name="username" id="username" /></p>
 <p>密码:</p>
 <p><input type="password" name="pwd" id="pwd" /></p>
 <p><button id="loginBtn">登录</button></p>
</body>
</html>

2.修改webpack配置文件:

var HtmlWebpackPlugin = require('html-webpack-plugin');
var webpack = require('webpack');

module.exports = {
 // entry是入口文件,可以多个,代表要编译那些js
 //entry:['./src/main.js','./src/login.js','./src/reg.js'],

 entry:
 {
  'main':'./src/main.js',
  'user':['./src/login.js','./src/reg.js']
 },

 externals:{
  'jquery':'jQuery'
 },

 output:{
  path: __dirname+'/build/js', // 输出到那个目录下(__dirname当前项目目录)
  filename:'build.js' //最终打包生产的文件名
 },
 plugins:[
  new HtmlWebpackPlugin({
   filename: __dirname+'/build/html/login-build.html',
   template:__dirname+'/src/tpl/login.html',
   inject:'head',
   hash:true
  }),

  // 拆分插件
  new webpack.optimize.CommonsChunkPlugin({
   name:'user', // 上面入口定义的节点组
   filename:'build-user.js' //最后生成的文件名
  }),
 ]
};

3.执行webpack命令后,打包的js中并不会包含jquery源码,因为我们要使用外部cdn,同样打包后的html模板中也引入了jquery

详解用webpack把我们的业务模块分开打包的方法

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

Javascript 相关文章推荐
javascript实现的动态文字变换
Jul 28 Javascript
EasySlider 基于jQuery功能强大简单易用的滑动门插件
Jun 11 Javascript
js字符串的各种格式的转换 ToString,Format
Aug 08 Javascript
jQuery on方法传递参数示例
Dec 09 Javascript
JavaScript中length属性的使用方法
Jun 05 Javascript
举例讲解JavaScript substring()的使用方法
Nov 09 Javascript
学习JavaScript设计模式(封装)
Nov 26 Javascript
JavaScript中的原型prototype完全解析
May 10 Javascript
js插件Jcrop自定义截取图片功能
Oct 14 Javascript
原生js代码实现图片放大境效果
Oct 30 Javascript
微信小程序外卖选购页实现切换分类与数量加减功能案例
Jan 15 Javascript
js实现文字头像的生成代码
Mar 07 Javascript
关于webpack代码拆分的解析
Jul 20 #Javascript
webpack学习笔记之代码分割和按需加载的实例详解
Jul 20 #Javascript
node+vue实现用户注册和头像上传的实例代码
Jul 20 #Javascript
深入探究AngularJs之$scope对象(作用域)
Jul 20 #Javascript
通过命令行创建vue项目的方法
Jul 20 #Javascript
基于BootStrap实现简洁注册界面
Jul 20 #Javascript
AngularJS实现的JSONP跨域访问数据传输功能详解
Jul 20 #Javascript
You might like
ThinkPHP的Widget扩展实例
2014/06/19 PHP
两种设置php载入页面时编码的方法
2014/07/29 PHP
php使用Imagick生成图片的方法
2015/07/31 PHP
PHP批量删除jQuery操作
2017/07/23 PHP
windows环境下使用Composer安装ThinkPHP5
2018/05/18 PHP
php 实现简单的登录功能示例【基于thinkPHP框架】
2019/12/02 PHP
wap浏览自动跳转到wap页面的js代码
2014/05/17 Javascript
javaScript中with函数用法实例分析
2015/06/08 Javascript
Ajax清除浏览器js、css、图片缓存的方法
2015/08/06 Javascript
vuex实现简易计数器
2016/10/27 Javascript
vue实现可增删查改的成绩单
2016/10/27 Javascript
JavaScript实现经典排序算法之冒泡排序
2016/12/28 Javascript
vue项目中v-model父子组件通信的实现详解
2017/12/10 Javascript
nodeJs爬虫的技术点总结
2018/05/13 NodeJs
详解a标签添加onclick事件的几种方式
2019/03/29 Javascript
深入了解JavaScript 的 WebAssembly
2019/06/15 Javascript
jquery分页优化操作实例分析
2019/08/23 jQuery
[54:25]Ti4 循环赛第三日LGD vs MOUZ
2014/07/12 DOTA
Python实现Const详解
2015/01/27 Python
python使用sorted函数对列表进行排序的方法
2015/04/04 Python
Python实现LRU算法的2种方法
2015/06/24 Python
Python中的time模块与datetime模块用法总结
2016/06/30 Python
Python实现爬取百度贴吧帖子所有楼层图片的爬虫示例
2018/04/26 Python
使用Template格式化Python字符串的方法
2019/01/22 Python
python tkinter组件使用详解
2019/09/16 Python
使用Python paramiko模块利用多线程实现ssh并发执行操作
2019/12/05 Python
opencv python图像梯度实例详解
2020/02/04 Python
python相对企业语言优势在哪
2020/06/12 Python
Django filter动态过滤与排序实现过程解析
2020/11/26 Python
HTML5中Canvas与SVG的画图原理比较
2013/01/16 HTML / CSS
一些Solaris面试题
2015/12/22 面试题
餐厅楼面主管岗位职责范本
2014/02/16 职场文书
2014年党委工作总结
2014/11/22 职场文书
2015年幼儿园学期工作总结
2015/05/22 职场文书
详解Python中的进程和线程
2021/06/23 Python
Python利用机器学习算法实现垃圾邮件的识别
2021/06/28 Python