详解用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 相关文章推荐
jQuery LigerUI 插件介绍及使用之ligerDrag和ligerResizable示例代码打包
Apr 06 Javascript
jQuery 阴影插件代码分享
Jan 09 Javascript
select标签模拟/美化方法采用JS外挂式插件
Apr 01 Javascript
JS localStorage实现本地缓存的方法
Jun 22 Javascript
jQuery插件scroll实现无缝滚动效果
Apr 27 Javascript
JS拖拽插件实现步骤
Aug 03 Javascript
jquery弹出遮掩层效果【附实例代码】
Apr 28 Javascript
微信小程序 action-sheet底部菜单详解
Oct 27 Javascript
Vue学习笔记进阶篇之多元素及多组件过渡
Jul 19 Javascript
vue实现搜索过滤效果
May 28 Javascript
JavaScript Array对象使用方法解析
Sep 24 Javascript
Vue 组件复用多次自定义参数操作
Jul 27 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/08/23 PHP
php定时计划任务的实现方法详解
2013/06/06 PHP
PHP大文件分块上传功能实例详解
2019/07/22 PHP
laravel框架上传图片实现实时预览功能
2019/10/14 PHP
js常用函数 不错
2006/09/08 Javascript
IE和Firefox在JavaScript应用中的兼容性探讨
2008/04/01 Javascript
js精度溢出解决方案
2012/12/02 Javascript
用jquery实现点击栏目背景色改变
2012/12/10 Javascript
通过javascript获取iframe里的值示例代码
2013/06/24 Javascript
node.js入门教程
2014/06/01 Javascript
javascript 闭包详解
2015/02/15 Javascript
BootStrap 图标icon符号图标glyphicons不正常显示的快速解决办法
2016/12/08 Javascript
Vue分页组件实例代码
2017/04/17 Javascript
微信小程序-滚动消息通知的实例代码
2017/08/03 Javascript
详解Vue-cli webpack移动端自动化构建rem问题
2018/04/07 Javascript
详解vue组件基础
2018/05/04 Javascript
Vue.js 2.x之组件的定义和注册图文详解
2018/06/19 Javascript
开发一个Parcel-vue脚手架工具(详细步骤)
2018/09/22 Javascript
JavaScript遍历查找数组中最大值与最小值的方法示例
2019/05/24 Javascript
编写Python脚本来实现最简单的FTP下载的教程
2015/05/04 Python
读写json中文ASCII乱码问题的解决方法
2016/11/05 Python
python flask中静态文件的管理方法
2018/03/20 Python
python如何制作缩略图
2019/04/30 Python
Django基础知识 web框架的本质详解
2019/07/18 Python
python3 通过 pybind11 使用Eigen加速代码的步骤详解
2020/12/07 Python
解决方案设计综合面试题
2015/08/31 面试题
竞选班干部的演讲稿
2014/04/24 职场文书
小学语文教学经验交流材料
2014/06/02 职场文书
2014年设计师工作总结
2014/11/25 职场文书
2014年基建工作总结
2014/12/12 职场文书
调任通知
2015/04/21 职场文书
肖申克救赎观后感
2015/06/02 职场文书
植树节新闻稿
2015/07/17 职场文书
二十年同学聚会感言
2015/07/30 职场文书
职场新人刚入职工作总结该怎么写?
2019/05/15 职场文书
演讲稿之开卷有益
2019/08/07 职场文书