详解用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条件判断使用小技巧总结
Sep 08 Javascript
DOM 脚本编程中的兄弟节点
Oct 31 Javascript
基于jquery实现一张图片点击鼠标放大再点缩小
Sep 29 Javascript
javascript获取URL参数与参数值的示例代码
Dec 20 Javascript
JS图片自动轮换效果实现思路附截图
Apr 30 Javascript
Adapter适配器模式在JavaScript设计模式编程中的运用分析
May 18 Javascript
点击页面任何位置隐藏div的实现方法
Sep 05 Javascript
详解ES6中的let命令
Apr 05 Javascript
js实现刷新页面后回到记录时滚动条的位置【两种方案可选】
Dec 12 Javascript
移动端触屏幻灯片图片切换插件idangerous swiper.js
Apr 10 Javascript
原生JS实现列表内容自动向上滚动效果
May 22 Javascript
深入讲解Vue中父子组件通信与事件触发
Mar 22 Vue.js
关于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输出英文时间日期的安全方法(RFC 1123格式)
2014/06/13 PHP
php中的ini配置原理详解
2014/10/14 PHP
php限制ip地址范围的方法
2015/03/31 PHP
Javascript 圆角div的实现代码
2009/10/15 Javascript
两种方法实现文本框输入内容提示消失
2013/03/17 Javascript
from表单多个按钮提交用onclick跳转不同action
2014/04/24 Javascript
js操作模态窗口及父子窗口间相互传值示例
2014/06/09 Javascript
JavaScript定义类和对象的方法
2014/11/26 Javascript
jQuery实现锚点scoll效果实例分析
2015/03/10 Javascript
JQuery控制Radio选中方法分析
2015/05/29 Javascript
jquery实现的Accordion折叠面板效果代码
2015/09/02 Javascript
老生常谈js中0到底是 true 还是 false
2017/03/08 Javascript
使用JS中的Replace()方法遇到的问题小结
2017/10/20 Javascript
nginx配置React静态页面的方法教程
2017/11/03 Javascript
React+Webpack快速上手指南(小结)
2018/08/15 Javascript
基于jquery ajax的多文件上传进度条过程解析
2019/09/11 jQuery
Python multiprocessing模块中的Pipe管道使用实例
2015/04/11 Python
Python数据类型学习笔记
2016/01/13 Python
Python中实现变量赋值传递时的引用和拷贝方法
2018/04/29 Python
Python实现的直接插入排序算法示例
2018/04/29 Python
把pandas转换int型为str型的方法
2019/01/29 Python
OpenCV 模板匹配
2019/07/10 Python
Python模拟登录之滑块验证码的破解(实例代码)
2019/11/18 Python
如何将tensorflow训练好的模型移植到Android (MNIST手写数字识别)
2020/04/22 Python
opencv-python的RGB与BGR互转方式
2020/06/02 Python
推荐值得学习的12款python-web开发框架
2020/08/10 Python
俄罗斯游戏商店:Buka
2020/03/01 全球购物
教师读书活动总结
2014/05/07 职场文书
大学生推广普通话演讲稿
2014/09/21 职场文书
工作表扬信范文
2015/01/17 职场文书
土地租赁协议书
2015/01/29 职场文书
2015教师年度工作总结范文
2015/04/07 职场文书
2016年世界人口日宣传活动总结
2016/04/05 职场文书
在redisCluster中模糊获取key方式
2021/07/09 Redis
JavaScript的function函数详细介绍
2021/11/20 Javascript
vue使用refs获取嵌套组件中的值过程
2022/03/31 Vue.js