详解用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 相关文章推荐
JS函数实现动态添加CSS样式表文件
Dec 15 Javascript
JS实现简单的Canvas画图实例
Jul 04 Javascript
javascript中slice(),splice(),split(),substring(),substr()使用方法
Mar 13 Javascript
PHP+jQuery+Ajax+Mysql如何实现发表心情功能
Aug 06 Javascript
JavaScript获取服务器时间的方法详解
Dec 11 Javascript
JavaScript解析任意形式的json树型结构展示
Jul 23 Javascript
mpvue 如何使用腾讯视频插件的方法
Jul 16 Javascript
jQuery实现表格隔行换色
Sep 01 jQuery
JavaScript实现简单音乐播放器
Apr 17 Javascript
vue 强制组件重新渲染(重置)的两种方案
Oct 29 Javascript
vue 实现购物车总价计算
Nov 06 Javascript
JS常见内存泄漏及解决方案解析
May 30 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将时间差转换为字符串提示
2011/09/07 PHP
PHP Session 变量的使用方法详解与实例代码
2013/09/11 PHP
实例讲解PHP设计模式编程中的简单工厂模式
2016/02/29 PHP
php图片裁剪函数
2018/10/31 PHP
javaScript parseInt字符转化为数字函数使用小结
2009/11/05 Javascript
Javascript 面向对象之重载
2010/05/04 Javascript
jquery+ajax+C#实现无刷新操作数据库数据的简单实例
2014/02/08 Javascript
原生JavaScript生成GUID的实现示例
2014/09/05 Javascript
javascript动态添加删除tabs标签的方法
2015/07/06 Javascript
jQuery基于ajax()使用serialize()提交form数据的方法
2015/12/08 Javascript
使用struts2+Ajax+jquery验证用户名是否已被注册
2016/03/22 Javascript
IE和Firefox之间在JavaScript语法上的差异
2016/04/22 Javascript
plupload+artdialog实现多平台上传文件
2016/07/19 Javascript
jQuery插件zTree实现单独选中根节点中第一个节点示例
2017/03/08 Javascript
vue.js数据绑定的方法(单向、双向和一次性绑定)
2017/07/13 Javascript
vue实现密码显示隐藏切换功能
2018/02/23 Javascript
vue移动端弹框组件的实例
2018/09/25 Javascript
详解使用React.memo()来优化函数组件的性能
2019/03/19 Javascript
TypeScript中的方法重载详解
2019/04/12 Javascript
[49:31]TFT vs Mski Supermajor小组赛C组 BO3 第一场 6.3
2018/06/04 DOTA
Python基础知识_浅谈用户交互
2017/05/31 Python
Python实现简单http服务器
2018/04/12 Python
Pytorch释放显存占用方式
2020/01/13 Python
PyCharm取消波浪线、下划线和中划线的实现
2020/03/03 Python
python批量修改xml属性的实现方式
2020/03/05 Python
浅谈tensorflow使用张量时的一些注意点tf.concat,tf.reshape,tf.stack
2020/06/23 Python
如何用python 操作zookeeper
2020/12/28 Python
警察思想汇报
2014/01/04 职场文书
文秘档案管理岗位职责
2014/03/06 职场文书
老人祝寿主持词
2014/03/28 职场文书
货物运输服务质量承诺书
2014/05/29 职场文书
大学生联谊活动策划书(光棍节)
2014/10/10 职场文书
党员思想汇报材料
2014/12/19 职场文书
2015年路政工作总结
2015/05/22 职场文书
Java 泛型详解(超详细的java泛型方法解析)
2021/07/02 Java/Android
Python中异常处理用法
2021/11/27 Python