详解用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参考实例2.0 用jQuery选择元素
Apr 07 Javascript
jquery中常用的函数和属性详细解析
Mar 07 Javascript
node.js中的buffer.toString方法使用说明
Dec 14 Javascript
JavaScript中的闭包(Closure)详细介绍
Dec 30 Javascript
基于JavaScript制作霓虹灯文字 代码 特效
Sep 01 Javascript
ES6新数据结构Set与WeakSet用法分析
Mar 31 Javascript
Vue-cli proxyTable 解决开发环境的跨域问题详解
May 18 Javascript
详解vue渲染函数render的使用
Dec 12 Javascript
JavaScript数组基于交换的排序示例【冒泡排序】
Jul 21 Javascript
详解Vue调用手机相机和相册以及上传
May 05 Javascript
vue中created和mounted的区别浅析
Aug 13 Javascript
JS XMLHttpRequest原理与使用方法深入详解
Apr 30 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
ninety plus是什么?ninety plus咖啡好吗?
2021/03/04 新手入门
PHP include_path设置技巧分享
2011/07/03 PHP
PHP中鲜为人知的10个函数
2014/02/28 PHP
解决form中action属性后面?传递参数 获取不到的问题
2017/07/21 PHP
php设计模式之观察者模式定义与用法经典示例
2019/09/19 PHP
判断javascript的数据类型(示例代码)
2013/12/11 Javascript
SeaJS 与 RequireJS 的差异对比
2014/12/08 Javascript
JavaScript中诡异的delete操作符
2015/03/12 Javascript
详解网站中图片日常使用以及优化手法
2017/01/09 Javascript
js实现漫天星星效果
2017/01/19 Javascript
JS判断一个数是否是水仙花数
2017/06/11 Javascript
vue.js移动数组位置,同时更新视图的方法
2018/03/08 Javascript
解决vue-cli + webpack 新建项目出错的问题
2018/03/20 Javascript
原生JS实现$.param() 函数的方法
2018/08/10 Javascript
如何使用vuex实现兄弟组件通信
2018/11/02 Javascript
JS实现图片切换特效
2019/12/23 Javascript
js+css3实现炫酷时钟
2020/08/18 Javascript
解决antd日期选择组件,添加value就无法点击下一年和下一月问题
2020/10/29 Javascript
[02:16]DOTA2超级联赛专访Burning 逆袭需要抓住机会
2013/06/24 DOTA
python实现2014火车票查询代码分享
2014/01/10 Python
python提取内容关键词的方法
2015/03/16 Python
Django项目中用JS实现加载子页面并传值的方法
2018/05/28 Python
python绘制多个子图的实例
2019/07/07 Python
基于python3.7利用Motor来异步读写Mongodb提高效率(推荐)
2020/04/29 Python
小 200 行 Python 代码制作一个换脸程序
2020/05/12 Python
加利福尼亚州威尼斯的女性奢侈品设计师服装和概念店:Mona Moore
2018/09/13 全球购物
Skechers越南官方网站:来自美国的运动休闲品牌
2021/02/22 全球购物
大学生职业生涯规划范文
2014/01/22 职场文书
法人委托书范本格式
2014/09/15 职场文书
家庭贫困证明
2014/09/23 职场文书
报到证办理个人委托书
2014/10/06 职场文书
教师学习党的群众路线教育实践活动心得体会
2014/10/31 职场文书
2015年教师见习期工作总结
2015/05/20 职场文书
卡特教练观后感
2015/06/08 职场文书
laravel添加角色和模糊搜索功能的实现代码
2021/06/22 PHP
MySQL索引 高效获取数据的数据结构
2022/05/02 MySQL