详解用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 相关文章推荐
JMenuTab简单使用说明
Mar 13 Javascript
javascript的trim,ltrim,rtrim自定义函数
Sep 21 Javascript
jquery 弹出层注册页面等(asp.net后台)
Jun 17 Javascript
capacityFixed 基于jquery的类似于新浪微博新消息提示的定位框
May 24 Javascript
jquery插件开发方法(初学者)
Feb 03 Javascript
js多级树形弹出一个小窗口层(非常好用)实例代码
Mar 19 Javascript
基于JavaScript实现购物网站商品放大镜效果
Sep 06 Javascript
微信小程序购物商城系统开发系列-工具篇的介绍
Nov 21 Javascript
Vue插件写、用详解(附demo)
Mar 20 Javascript
ES6中新增的Object.assign()方法详解
Sep 22 Javascript
Vue2.0使用嵌套路由实现页面内容切换/公用一级菜单控制页面内容切换(推荐)
May 08 Javascript
webpack打包优化的几个方法总结
Feb 10 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控制用户的浏览器--ob*函数的使用说明
2007/03/16 PHP
采用PHP函数memory_get_usage获取PHP内存清耗量的方法
2011/12/06 PHP
php中一个有意思的日期逻辑处理
2012/03/25 PHP
php操作xml入门之xml标签的属性分析
2015/01/23 PHP
php运行时动态创建函数的方法
2015/03/16 PHP
CI框架中$this-&gt;load-&gt;library()用法分析
2016/05/18 PHP
PHP实现 APP端微信支付功能
2018/06/22 PHP
基于逻辑运算的简单权限系统(实现) JS 版
2007/03/24 Javascript
给moz-firefox下添加IE方法和属性
2007/04/10 Javascript
jquery $(document).ready() 与window.onload的区别
2009/12/28 Javascript
js 绑定带参数的事件以及手动触发事件
2010/04/27 Javascript
jquery和javascript的区别(常用方法比较)
2013/07/04 Javascript
jQuery Ajax 异步加载显示等待效果代码分享
2016/08/01 Javascript
JS判断是否在微信浏览器打开的简单实例(推荐)
2016/08/24 Javascript
Node.js中如何合并两个复杂对象详解
2016/12/31 Javascript
jQuery实现获取form表单内容及绑定数据到form表单操作分析
2018/07/03 jQuery
vue项目中使用lib-flexible解决移动端适配的问题解决
2018/08/23 Javascript
这15个Vue指令,让你的项目开发爽到爆
2019/10/11 Javascript
js实现翻牌小游戏
2020/07/31 Javascript
跟老齐学Python之总结参数的传递
2014/10/10 Python
Swift 3.0在集合类数据结构上的一些新变化总结
2016/07/11 Python
Python实现读取邮箱中的邮件功能示例【含文本及附件】
2017/08/05 Python
Python内置函数—vars的具体使用方法
2017/12/04 Python
Python实现一个Git日志统计分析的小工具
2017/12/14 Python
Python实现改变与矩形橡胶的线条的颜色代码示例
2018/01/05 Python
连接pandas以及数组转pandas的方法
2019/06/28 Python
python 叠加等边三角形的绘制的实现
2019/08/14 Python
Python读取YAML文件过程详解
2019/12/30 Python
如何表示python中的相对路径
2020/07/08 Python
戴尔加拿大官网:Dell加拿大
2016/09/17 全球购物
Carter’s官方旗舰店:美国受欢迎的婴童服装品牌
2018/01/21 全球购物
SmartBuyGlasses英国:购买太阳镜和眼镜
2018/01/29 全球购物
仓库保管员岗位职责
2013/12/20 职场文书
晚会主持人开场白台词
2015/05/28 职场文书
文艺委员竞选稿
2015/11/19 职场文书
如何自己动手写SQL执行引擎
2021/06/02 MySQL