详解用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 mouseover、mouseout停止事件冒泡的解决方案
Apr 07 Javascript
javascript 当前日期加(天、周、月、年)
Aug 09 Javascript
Js参数值中含有单引号或双引号问题的解决方法
Nov 06 Javascript
jQuery 复合选择器应用的几个例子
Sep 11 Javascript
javascript中对变量类型的判断方法
Aug 09 Javascript
使用angularjs创建简单表格
Jan 21 Javascript
JavaScript生成验证码并实现验证功能
Sep 24 Javascript
JS图片延迟加载插件LazyImgv1.0用法分析【附demo源码下载】
Sep 04 Javascript
JS排序算法之希尔排序与快速排序实现方法
Dec 12 Javascript
vue.js中引入vuex储存接口数据及调用的详细流程
Dec 14 Javascript
react-native 圆弧拖动进度条实现的示例代码
Apr 12 Javascript
vue中控制mock在开发环境使用,在生产环境禁用方式
Apr 06 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解析html的实现代码
2011/08/08 PHP
PHP实现货币换算的方法
2014/11/29 PHP
php判断文件上传类型及过滤不安全数据的方法
2014/12/17 PHP
php+ajax实现的点击浏览量加1
2015/04/16 PHP
yii权限控制的方法(三种方法)
2015/12/28 PHP
PHP count_chars()函数讲解
2019/02/14 PHP
通过JAVASCRIPT读取ASP设定的COOKIE
2007/02/15 Javascript
jQuery拖拽 &amp; 弹出层 介绍与示例
2013/12/27 Javascript
Node.js(安装,启动,测试)
2014/06/09 Javascript
JS实现定时自动关闭DIV层提示框的方法
2015/05/11 Javascript
Javascript中的Prototype到底是什么
2016/02/16 Javascript
JS模态窗口返回值兼容问题的完美解决方法
2016/05/28 Javascript
jQuery EasyUI中的日期控件DateBox修改方法
2016/11/09 Javascript
BootStrap树状图显示功能
2016/11/24 Javascript
JavaScript实现经典排序算法之冒泡排序
2016/12/28 Javascript
easyui combogrid实现本地模糊搜索过滤多列
2017/05/13 Javascript
获取当前按钮或者html的ID名称实例(推荐)
2017/06/23 Javascript
JavaScript中正则表达式判断匹配规则及常用方法
2017/08/03 Javascript
JS实现的排列组合算法示例
2019/07/16 Javascript
如何阻止小程序遮罩层下方图层滚动
2019/09/05 Javascript
nodejs一个简单的文件服务器的创建方法
2019/09/13 NodeJs
Nodejs实现WebSocket代码实例
2020/05/19 NodeJs
简单介绍Python的Django框架加载模版的方式
2015/07/20 Python
Python冒泡排序注意要点实例详解
2016/09/09 Python
使用Python生成XML的方法实例
2017/03/21 Python
Python使用selenium实现网页用户名 密码 验证码自动登录功能
2018/05/16 Python
OpenCV HSV颜色识别及HSV基本颜色分量范围
2019/03/22 Python
python super函数使用方法详解
2020/02/14 Python
python编写俄罗斯方块
2020/03/13 Python
使用py-spy解决scrapy卡死的问题方法
2020/09/29 Python
院药学专业个人求职信
2013/09/21 职场文书
临时租车协议范本
2014/09/23 职场文书
教育见习报告范文
2014/11/03 职场文书
写给老婆的保证书
2015/02/27 职场文书
2015婚礼主持词开场白
2015/05/28 职场文书
Spring Cloud OAuth2实现自定义token返回格式
2022/06/25 Java/Android