详解用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 相关文章推荐
IE和Mozilla的兼容性汇总event
Aug 12 Javascript
Ext对基本类型的扩展 ext,extjs,format
Dec 25 Javascript
JS取request值以及自动执行使用示例
Feb 24 Javascript
jquery表单对象属性过滤选择器实例分析
May 18 Javascript
Jquery使用css方法改变样式实例
May 18 Javascript
jQuery Validate 数组 全部验证问题
Jan 12 Javascript
vue toggle做一个点击切换class(实例讲解)
Mar 13 Javascript
Bootstrap导航菜单点击后无法自动添加active的处理方法
Aug 10 Javascript
require.js 加载过程与使用方法介绍
Oct 30 Javascript
用Vue.js在浏览器中实现裁剪图像功能
Jun 18 Javascript
vue配置nprogress实现页面顶部进度条
Sep 21 Javascript
详解vue中v-bind:style效果的自定义指令
Jan 21 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中设置一个严格30分钟过期Session面试题的4种答案
2014/07/30 PHP
Laravel 5框架学习之Eloquent (laravel 的ORM)
2015/04/08 PHP
yii2框架中使用下拉菜单的自动搜索yii-widget-select2实例分析
2016/01/09 PHP
php、java、android、ios通用的3des方法(推荐)
2016/09/09 PHP
PHP设计模式之数据访问对象模式(DAO)原理与用法实例分析
2019/12/12 PHP
TP5框架实现一次选择多张图片并预览的方法示例
2020/04/04 PHP
JavaScript触发器详解
2007/03/10 Javascript
如何将JS的变量值传递给ASP变量
2012/12/10 Javascript
为什么要在引入的css或者js文件后面加参数的详细讲解
2013/05/03 Javascript
jquery属性选择器not has怎么写 行悬停高亮显示
2013/11/13 Javascript
js对文章内容进行分页示例代码
2014/03/05 Javascript
javascript实现全角与半角字符的转换
2015/01/07 Javascript
jQuery制作仿Mac Lion OS滚动条效果
2015/02/10 Javascript
纯JavaScript实现的兼容各浏览器的添加和移除事件封装
2015/03/28 Javascript
javascript构造函数以及原型对象的理解
2017/01/13 Javascript
原生JS实现的多个彩色小球跟随鼠标移动动画效果示例
2018/02/01 Javascript
vue如何通过id从列表页跳转到对应的详情页
2018/05/01 Javascript
js实现动态添加上传文件页面
2018/10/22 Javascript
vue 点击其他区域关闭自定义div操作
2020/07/17 Javascript
vue 实现一个简单的全局调用弹窗案例
2020/09/10 Javascript
H5 js点击按钮复制文本到粘贴板
2020/11/19 Javascript
python计算最大优先级队列实例
2013/12/18 Python
Python定时执行之Timer用法示例
2015/05/27 Python
Django实现简单分页功能的方法详解
2017/12/05 Python
详解python中init方法和随机数方法
2019/03/13 Python
Django后台管理系统的图文使用教学
2020/01/20 Python
python字符串替换re.sub()实例解析
2020/02/09 Python
keras 多任务多loss实例
2020/06/22 Python
使用Python爬虫爬取小红书完完整整的全过程
2021/01/19 Python
基于CSS3制作立体效果导航菜单
2016/01/12 HTML / CSS
详解CSS3的opacity属性设置透明效果的用法
2016/05/09 HTML / CSS
Canvas多边形绘制的实现方法
2019/08/05 HTML / CSS
外企办公室竞聘演讲稿
2013/12/29 职场文书
各营销点岗位职责范本
2014/03/05 职场文书
副总经理任命书
2014/06/05 职场文书
2014年精神文明建设工作总结
2014/11/19 职场文书