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学习笔记(四)的更多相关文章

  1. C#可扩展编程之MEF学习笔记(四):见证奇迹的时刻

    前面三篇讲了MEF的基础和基本到导入导出方法,下面就是见证MEF真正魅力所在的时刻.如果没有看过前面的文章,请到我的博客首页查看. 前面我们都是在一个项目中写了一个类来测试的,但实际开发中,我们往往要 ...

  2. IOS学习笔记(四)之UITextField和UITextView控件学习

    IOS学习笔记(四)之UITextField和UITextView控件学习(博客地址:http://blog.csdn.net/developer_jiangqq) Author:hmjiangqq ...

  3. java之jvm学习笔记四(安全管理器)

    java之jvm学习笔记四(安全管理器) 前面已经简述了java的安全模型的两个组成部分(类装载器,class文件校验器),接下来学习的是java安全模型的另外一个重要组成部分安全管理器. 安全管理器 ...

  4. Learning ROS for Robotics Programming Second Edition学习笔记(四) indigo devices

    中文译著已经出版,详情请参考:http://blog.csdn.net/ZhangRelay/article/category/6506865 Learning ROS for Robotics Pr ...

  5. Typescript 学习笔记四:回忆ES5 中的类

    中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...

  6. ES6学习笔记<四> default、rest、Multi-line Strings

    default 参数默认值 在实际开发 有时需要给一些参数默认值. 在ES6之前一般都这么处理参数默认值 function add(val_1,val_2){ val_1 = val_1 || 10; ...

  7. muduo网络库学习笔记(四) 通过eventfd实现的事件通知机制

    目录 muduo网络库学习笔记(四) 通过eventfd实现的事件通知机制 eventfd的使用 eventfd系统函数 使用示例 EventLoop对eventfd的封装 工作时序 runInLoo ...

  8. python3.4学习笔记(四) 3.x和2.x的区别,持续更新

    python3.4学习笔记(四) 3.x和2.x的区别 在2.x中:print html,3.x中必须改成:print(html) import urllib2ImportError: No modu ...

  9. Go语言学习笔记四: 运算符

    Go语言学习笔记四: 运算符 这章知识好无聊呀,本来想跨过去,但没准有初学者要学,还是写写吧. 运算符种类 与你预期的一样,Go的特点就是啥都有,爱用哪个用哪个,所以市面上的运算符基本都有. 算术运算 ...

  10. 零拷贝详解 Java NIO学习笔记四(零拷贝详解)

    转 https://blog.csdn.net/u013096088/article/details/79122671 Java NIO学习笔记四(零拷贝详解) 2018年01月21日 20:20:5 ...

随机推荐

  1. ZABBIX安装过程中relocation error报错解决办法

    错误提示: /usr/sbin/zabbix_server: relocation error: /usr/sbin/zabbix_server: symbol mysql_next_result, ...

  2. 第2次作业 -- 熟悉 JUnit 测试

    2.1 Mooctest 使用心得 Mooctest很方便,可以即时测评自己写的测试代码,获得覆盖率和报告,不需要自己安装配置环境 而且安装配置插件的环境也很简单,可以专注于测试本身 2.2 Juni ...

  3. springboot快速开发(简单web)

    这是一个springboot基础配置文件介绍的demo.只涉及到 控制层与前端的简单交互,用于验证代码的畅通. spring-boot  pom.xml解释 <?xml version=&quo ...

  4. jenkins问题整理

    --------------------------------这是一个模板------------------------------------- 问题1:jenkins服务器上传jar包到指定服 ...

  5. java LRUCache

    package org.rx.cache; import org.rx.common.*; import org.rx.beans.DateTime; import java.util.Collect ...

  6. 使用shell安装lnmp

    1.简介 使用shell脚本安装lnmp,纯粹是偷懒,平时安装一些东西都写成脚本了,方便以后在其他机器安装的时候不用再去查找文档. PHP版本5.6.6 MYSQL版本5.6.26 NGINX版本1. ...

  7. 利用Django实现webUI展示

    1.说明 最近老大想要做一个webUI界面,为了展示我们数据中心工作内容,需要把各自的工作内容用webUI展示出来.目前我负责的做公司名称归一化的问题. 2.Django实现web 具体实现是完全按照 ...

  8. EF简单的CURD操作

    /// <summary> /// EF添加数据 /// </summary> /// <param name="sender"></pa ...

  9. git和github的第一次接触

    我的github的helloworld链接: https://github.com/xuziqian111/hello-world/blob/master/helloworld.java 我的gith ...

  10. redis cluster的conf配置文件配置

    redis cluster的conf配置文件配置 master配置文件如下: bind 127.0.0.1 port tcp-backlog timeout tcp-keepalive logleve ...