详解用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 相关文章推荐
Prototype Selector对象学习
Jul 23 Javascript
基于jquery的页面划词搜索JS
Sep 14 Javascript
Javascript类定义语法,私有成员、受保护成员、静态成员等介绍
Dec 08 Javascript
javascript 实现 秒杀,团购 倒计时展示的记录 分享
Jul 12 Javascript
js 中的switch表达式使用示例
Jun 03 Javascript
ES6中参数的默认值语法介绍
May 03 Javascript
Node.js中Bootstrap-table的两种分页的实现方法
Sep 18 Javascript
JS获取数组中出现次数最多及第二多元素的方法
Oct 27 Javascript
js数据类型检测总结
Aug 05 Javascript
微信小程序实现选择地址省市区三级联动
Jun 21 Javascript
jQuery实现穿梭框效果
Jan 19 jQuery
JS前端可扩展的低代码UI框架Sunmao使用详解
Jul 23 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
PHP 函数学习简单小结
2010/07/08 PHP
PHP is_subclass_of函数的一个BUG和解决方法
2014/06/01 PHP
解决PHP Opcache 缓存刷新、代码重载出现无法更新代码的问题
2020/08/24 PHP
js获取指定日期前后的日期代码
2013/08/20 Javascript
JavaScript中使用Object.create()创建对象介绍
2014/12/30 Javascript
nodejs创建web服务器之hello world程序
2015/08/20 NodeJs
使用jquery+CSS3实现仿windows10开始菜单的下拉导航菜单特效
2015/09/24 Javascript
js判断手机号运营商的方法
2015/10/23 Javascript
浅析BootStrap模态框的使用(经典)
2016/04/29 Javascript
微信小程序 实现拖拽事件监听实例详解
2016/11/16 Javascript
三种方式实现瀑布流布局
2017/02/10 Javascript
JS实现的ajax和同源策略(实例讲解)
2017/12/01 Javascript
vue的无缝滚动组件vue-seamless-scroll实例
2017/12/18 Javascript
在vscode里使用.vue代码模板的方法
2018/04/28 Javascript
js中Function引用类型常见有用的方法和属性详解
2019/12/11 Javascript
微信小程序实现多选框全选与反全选及购物车中删除选中的商品功能
2019/12/17 Javascript
python使用xlrd和xlwt读写Excel文件的实例代码
2018/09/05 Python
Pycharm 实现下一个文件引用另外一个文件的方法
2019/01/17 Python
numpy linalg模块的具体使用方法
2019/05/26 Python
简单了解python关系(比较)运算符
2019/07/08 Python
JAVA及PYTHON质数计算代码对比解析
2020/06/10 Python
将不规则的Python多维数组拉平到一维的方法实现
2021/01/11 Python
HTML5 CSS3新的WEB标准和浏览器支持
2009/07/16 HTML / CSS
丝芙兰美国官网:SEPHORA美国
2016/08/03 全球购物
新加坡第一大健康与美容零售商:屈臣氏新加坡(Watsons Singapore)
2020/12/11 全球购物
新员工培训个人的自我评价
2013/10/09 职场文书
晚宴邀请函范文
2014/01/15 职场文书
毕业自我评价
2014/02/05 职场文书
高中毕业生的个人自我评价
2014/02/21 职场文书
新春文艺演出主持词
2014/03/27 职场文书
群众路线自我剖析及整改措施
2014/11/04 职场文书
工作保证书
2015/01/17 职场文书
行政申诉状范文
2015/05/20 职场文书
学雷锋广播稿大全
2015/08/19 职场文书
浅谈Python从全局与局部变量到装饰器的相关知识
2021/06/21 Python
js 实现验证码输入框示例详解
2022/09/23 Javascript