美文网首页
webpack commonJS模块和全局变量转换

webpack commonJS模块和全局变量转换

作者: LingJJ1100的笔记 | 来源:发表于2017-12-09 17:56 被阅读0次

以jquery为例子:jq并不是commonJS模块
jq库的内部并没有export之类的输出语句,使用的是全局变量jQuery/$

jq用法一:直接通过全局变量使用
const $ = windwo.jQuery // 这是一种环境依赖

将全局变量转为commonJS模块

jq用法二:通过webpack的externals配置项,将全局变量包装成 commomJS模块
通过const $ = requier(jquery); // 这是一种模块依赖

externals: {
    jquery: 'jQuery' //key: 模块名 value:全局变量
}

编译代码:后的模块代码

/* 1 */
/***/ (function(module, exports) {

module.exports = jQuery;
}

由于jq使用数量多,可以设置为自动引入模块

new webpack.providePlugin({
    jquery: 'jquery'
})

当模块中使用jquery变量为未赋值的时候将自动引入该模块。
缺点:eslint 会报 未声明变量

逆向:将commonJS模块设置成全局变量

expose-loader(暴露) 将模块中的输出变量添加到全局变量中。
为了解决有一些库并不支持commonJS的引入,必须使用全局变量
例如:bootstrap 必须依赖全局环境中的jQuery变量

用法:
调用一次: require("expose-loader?!jquery");
即可将jquery挂载到全局变量中

配置文件用法:

test: require.resolve('jquery'),
use: [{
    loader: 'expose-loader',
    options: '$'
}]

require.resolve 是node模块,返回该模块的绝对路径

相关文章

  • webpack commonJS模块和全局变量转换

    以jquery为例子:jq并不是commonJS模块jq库的内部并没有export之类的输出语句,使用的是全局变量...

  • Webpack 个人理解的脑图

    Webpack 特色 模块规范 Webpack 同时支持 AMD 、 CommonJS 和 ES6 module ...

  • webpack

    1.webpack简介 1.1 webpack是什么? CommonJS和AMD是用于JavaScript模块管理...

  • js require和import

    Browsersify、Webpack 一开始的目的就是打包 CommonJS 模块。 CommonJS 作为 N...

  • CommonJS 与ES6 Module的区别

    1.模块定义和导出 (见webpack模块导入导出文章)2.CommonJS :模块依赖关系的建立发生在代码运行阶...

  • webpack 四个核心概念

    webpack 是当下最热门的前端资源模块化和打包工具。它可以将许多松散的模块(如 CommonJs 模块、 AM...

  • webpack学习

    webpack是什么 是一个模块打包器 模块化历史 CommonJS//moduleA.jsexports.a =...

  • webpack实用性基础教程

    webpack 模块打包了解npm&&commonJS&&ES6&&React webpack本身是一个独立的东西...

  • js webpack的loader和plugin

    常见的webpack代码 webpack的打包原理 识别入口文件 通过逐层识别模块依赖(Commonjs、amd或...

  • webpack中loader和plugin的区别

    一、webpack的常见配置 二、webpack的打包原理 识别入口文件 通过逐层识别模块依赖(Commonjs、...

网友评论

      本文标题:webpack commonJS模块和全局变量转换

      本文链接:https://www.haomeiwen.com/subject/eslpixtx.html