详解用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当onmousedown、onmouseup、onclick同时应用于同一个标签节点Element
Jan 05 Javascript
jquery 打开窗口返回值实现代码
Mar 04 Javascript
jQuery的Ajax的自动完成功能控件简要说明
Feb 22 Javascript
基于pthread_create,readlink,getpid等函数的学习与总结
Jul 17 Javascript
脚本合并提升javascript性能示例
Feb 24 Javascript
jQuery判断元素是否存在的可靠方法
May 06 Javascript
javascript三种代码注释方法
Jun 02 Javascript
Bootstrap树形菜单插件TreeView.js使用方法详解
Nov 01 Javascript
jquery 标签 隔若干行加空白或者加虚线的方法
Dec 07 Javascript
基于AngularJS实现表单验证功能
Jul 28 Javascript
基于js 各种排序方法和sort方法的区别(详解)
Jan 03 Javascript
Vue实现调节窗口大小时触发事件动态调节更新组件尺寸的方法
Sep 15 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/06/08 PHP
支持中文的php加密解密类代码
2011/11/27 PHP
PHP提示Deprecated: mysql_connect(): The mysql extension is deprecated的解决方法
2014/08/28 PHP
js+php实现静态页面实时调用用户登陆状态的方法
2015/01/04 PHP
jquery 实现表单验证功能代码(简洁)
2012/07/03 Javascript
浅析ajax请求json数据并用js解析(示例分析)
2013/07/13 Javascript
JavaScript实现存储HTML字符串示例
2014/04/21 Javascript
jQuery实现复选框全选/取消全选/反选及获得选择的值
2014/06/12 Javascript
javascript实现删除前弹出确认框
2015/06/04 Javascript
学习使用bootstrap3栅格系统
2016/04/12 Javascript
jquery 动态合并单元格的实现方法
2016/08/26 Javascript
搭建Bootstrap离线文档的方法
2016/12/02 Javascript
说说AngularJS中的$parse和$eval的用法
2017/09/14 Javascript
Vue组件之Tooltip的示例代码
2017/10/18 Javascript
gulp安装以及打包合并的方法教程
2017/11/19 Javascript
原生JS实现ajax与ajax的跨域请求实例
2017/12/01 Javascript
JavaScript实现预览本地上传图片功能完整示例
2019/03/08 Javascript
[05:14]辉夜杯主赛事第二日 RECAP精彩回顾
2015/12/27 DOTA
[01:05:30]VP vs TNC 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
[01:16:12]完美世界DOTA2联赛PWL S2 FTD vs Inki 第一场 11.21
2020/11/23 DOTA
利用一个简单的例子窥探CPython内核的运行机制
2015/03/30 Python
Python 元类实例解析
2018/04/04 Python
对python中的six.moves模块的下载函数urlretrieve详解
2018/12/19 Python
Python 3.3实现计算两个日期间隔秒数/天数的方法示例
2019/01/07 Python
Django实现网页分页功能
2019/10/31 Python
Python爬虫:Request Payload和Form Data的简单区别说明
2020/04/30 Python
python:删除离群值操作(每一行为一类数据)
2020/06/08 Python
解决pytorch 数据类型报错的问题
2021/03/03 Python
HTML5的结构和语义(5):交互
2008/10/17 HTML / CSS
全球最大的在线旅游公司:Expedia
2017/11/16 全球购物
美国亚洲时尚和美容产品的一站式网上商店:Stylevana
2019/09/05 全球购物
公司合作意向书范文
2014/07/30 职场文书
律师授权委托书范本
2014/10/07 职场文书
2015年餐厅服务员工作总结
2015/04/23 职场文书
投资申请报告
2015/05/19 职场文书
早上好问候语大全
2015/11/10 职场文书