webpack学习笔记(四)
1 webpack的垫片
举个例子,在main文件中引入jquery和doash两个库:
- import $ from 'jquery';
- import _ from 'lodash';
- import { ui } from './jquery.ui.js';
- ui();
对应的jquery.ui.js比如说是一个第三方库,很有可能是在 node_module中:
- export function ui(){
- $('body').css('background', _.join(['green'],''));
- }
由于webpack打包是基于模块的,每个模块之间也是相互独立的,所以在main中引入的jquery 在 jquery.ui.js中无法使用的,故需要在webpack的配置文件中做一下操作:
- import webpack from 'webpack'
- {
- plugins:[
- new webpack.ProvidePlugin({
- $:'jquery',
- _:'lodash'
- })
- ]
- }
2 this指代window
因为默认的this是指向当前模块的,所以为了让this指向window,需要安装: npm install imports-loader --save-dev
webpack最初对js只有一个loader的时候:
- {
- module:{
- rules:[
- {
- test:/\.js$/,
- exclude:/node_modules/,
- loader:'babel-loader'
- }
- ]
- }
- }
而有多个loader的时候,使用下面方式:
- {
- module:{
- rules:[
- {
- test:/\.js$/,
- exclude:/node_modules/,
- use:[{
- loader:'babel-loader'
- },{
- loader:'imports-loader?this=>window'
- }
- ]
- }
- ]
- }
- }
这样对于js文件,先使用imports-loader把this指向了window 再使用babel-loader 编译js文件,莫要忘记babelrc配置文件。
3 环境变量
已知webpack的配置文件目录如下:
- -build
- -webpack.common.js
- -webpack.dev.js
- -webpack.prod.js
分别在dev和prod中使用了webpack-merge对配置文件进行的合并,在这里我们使用命令行中传入环境变量的形式,则dev和prod中只导出自己的配置项,不再引入merge:
此时comm.js中引入merge,如下所示:
- const merge = require('webpack-merge');
- const devConfig = require('./webpack.dev.js');
- const prodConfig = require('./webpack.prod.js');
- const commonConfig = {
- entry:{},
- output:{},
- plugin:{},
- module:{}
- ...
- }
- module.exports = (env) => {
- if(env && env.production){
- return merge( commonConfig ,prodConfig);
- }else{
- return merge( commonConfig ,devConfig);
- }
- }
对应的命令行配置中,config.json
- {
- "scripts":{
- "dev":"webpack-dev-server --config ./build/webpack.common.js",
- "build":"webpack --env.profuction --config ./build/webpack.common.js",//均运行common文件,并且定义了环境变量
- }
- }
webpack学习笔记(四)的更多相关文章
- C#可扩展编程之MEF学习笔记(四):见证奇迹的时刻
前面三篇讲了MEF的基础和基本到导入导出方法,下面就是见证MEF真正魅力所在的时刻.如果没有看过前面的文章,请到我的博客首页查看. 前面我们都是在一个项目中写了一个类来测试的,但实际开发中,我们往往要 ...
- IOS学习笔记(四)之UITextField和UITextView控件学习
IOS学习笔记(四)之UITextField和UITextView控件学习(博客地址:http://blog.csdn.net/developer_jiangqq) Author:hmjiangqq ...
- java之jvm学习笔记四(安全管理器)
java之jvm学习笔记四(安全管理器) 前面已经简述了java的安全模型的两个组成部分(类装载器,class文件校验器),接下来学习的是java安全模型的另外一个重要组成部分安全管理器. 安全管理器 ...
- Learning ROS for Robotics Programming Second Edition学习笔记(四) indigo devices
中文译著已经出版,详情请参考:http://blog.csdn.net/ZhangRelay/article/category/6506865 Learning ROS for Robotics Pr ...
- Typescript 学习笔记四:回忆ES5 中的类
中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...
- ES6学习笔记<四> default、rest、Multi-line Strings
default 参数默认值 在实际开发 有时需要给一些参数默认值. 在ES6之前一般都这么处理参数默认值 function add(val_1,val_2){ val_1 = val_1 || 10; ...
- muduo网络库学习笔记(四) 通过eventfd实现的事件通知机制
目录 muduo网络库学习笔记(四) 通过eventfd实现的事件通知机制 eventfd的使用 eventfd系统函数 使用示例 EventLoop对eventfd的封装 工作时序 runInLoo ...
- python3.4学习笔记(四) 3.x和2.x的区别,持续更新
python3.4学习笔记(四) 3.x和2.x的区别 在2.x中:print html,3.x中必须改成:print(html) import urllib2ImportError: No modu ...
- Go语言学习笔记四: 运算符
Go语言学习笔记四: 运算符 这章知识好无聊呀,本来想跨过去,但没准有初学者要学,还是写写吧. 运算符种类 与你预期的一样,Go的特点就是啥都有,爱用哪个用哪个,所以市面上的运算符基本都有. 算术运算 ...
- 零拷贝详解 Java NIO学习笔记四(零拷贝详解)
转 https://blog.csdn.net/u013096088/article/details/79122671 Java NIO学习笔记四(零拷贝详解) 2018年01月21日 20:20:5 ...
随机推荐
- linux安装mysql(shell一键安装)
1. 相关文件(install_mysql.sh.my.cnf.mysqld相关内容在文中最后面) 2. 将上面的文件上传到linux服务器某一目录下 3.给install_mysql.sh赋执行权限 ...
- Scientific Toolworks Understand 软件教程
系统:Ubuntu16.04 x64 安装 安装包 下载地址: part1:http://download.csdn.net/detail/p942005405/9711128 part2:http: ...
- error: `cout' was not declared in this scope
原因:C++ 1998 要求cout and endl被调用使用'std::cout'和'std::endl'格式,或using namespace std; 修改后:#include<iost ...
- Leetcode 600 不含连续1的非负整数
给定一个正整数 n,找出小于或等于 n 的非负整数中,其二进制表示不包含 连续的1 的个数. 例如: 输入: 5 输出: 5 解释: 下面是带有相应二进制表示的非负整数<= 5: 0 : 0 1 ...
- Moya https配置方法
准备 iOS做https适配时对服务器是有一定要求的,服务端必须要是一个符合ATS(App Transport Security)要求的HTTPS.简单说要满足以下几个要求: 1.Transpor ...
- Matlab小波工具箱的使用2
Matlab小波工具箱的使用2 (2011-11-11 09:32:57) 转载▼ http://blog.sina.com.cn/s/blog_6163bdeb0102dw7a.html#cmt_5 ...
- Shell 使用 expr 进行数学运算
1.语法格式: 第一种:expr $num1 operator $num2 第二种:$(($num1 operator $num2)) 2.expr 操作符: 注意:这里比较为true,返回 1.只支 ...
- windows下安装memcached,报错:Failed to ignore SIGHUP RESULT too large
小平板不想装虚拟机, 但是却跑不起memcached 网上虽有解决方案,但都只有一条命令, 没有出处. 翻了半天, 找到这个连接 https://commaster.net/content/insta ...
- 巧用std::shared_ptr全局对象释放单例内存
巧用std::shared_ptr 单例的使用相对比较广泛,但是需要在程序退出前调用它的析构函数对数据进行释放,常规做法是在main函数末尾进行释放工作, 但是这样相对比较繁琐,因此便有了利用全局变量 ...
- 浅谈ES6新增数据类型:Symbol
面试中喜闻乐见的问题就是问我们的ES6新增了哪些个新特性 这篇文章一起学习一下新增的数据类型:Symbol JS的原始数据类型:6种Boolean,String,Undefined,NULL,Numb ...