webpack的模块化插件
来源:互联网 发布:ubuntu安装非自由软件 编辑:程序博客网 时间:2024/05/16 19:13
Webpack有几个和模块化相关的loader,imports-loader
,exports-loader
,expose-loader
,比较容易混淆。今天,我们来理一理。
imports-loaders
文档介绍的是:用于向一个模块的作用域内注入变量(Can be used to inject variables into the scope of a module.),官方的文档总是言简意赅但是不太好懂。我们来举个例子。
例子完整的代码可以点这里jqGreen.js
文件里仅一行代码
//没有模块化$('#box').css('color','green');
index.js
文件也只有一行代码
require('./jqGreen');
我们的配置文件中,是把index.js
作为入口文件的。
{ entry:{ index:'./src/js/index.js' }}
注意,我们并没有引入jquery
。所以运行的结果是$ is not defined
。
但是如果我们稍微修改一下jqGreen
的引入方式,就能很轻松的解决这个问题。index.js
文件
require('imports?$=jquery!./jqGreen');
当然,这个能运行之前,我们要npm install imports-loader
一下。上面代码,把变量$
注入进模块jqGreen.js
。同时,我们指定了变量$=jquery
。等于是在jqGreen.js
文件的最顶上,加上了var $=require('jquery')
。这样,程序就不会报$ is not defined
的错误了。
exports-loader
exports有导出
的意思,这让我们猜测它有从模块中导出变量的功能。实际情况大致如此。我们来看个小例子。
例子的完整代码在 这里Hello.js
文件中仅有一个方法,直接绑定在全局变量window
上面。
window.Hello = function(){ console.log('say hello.');}
然后我们在index.js
文件里去引用这个Hello.js
:var hello = require('./Hello.js');
。这样引用的结果是变量hello
是undefined
。因为我们在Hello.js
文件里没有写module.exports=window.Hello
,所以index.js
里我们require
的结果就是undefined
。这个时候,exports-loader
就派上用场了。我们只用把index.js
的代码稍微改动一下:var hello = require('exports?window.Hello!./Hello.js');
,这个时候,代码就能正确的运行了。变量hello
就是我们定义的window.hello
啦。var hello = require('exports?window.Hello!./Hello.js');
这行代码,等于在Hello.js
里加上一句module.exports=window.Hello
,所以我们才能正确的导入。
expose-loader
把一个模块导出并付给一个全局变量。文档里给了一个例子:
require("expose?libraryName!./file.js");// Exposes the exports for file.js to the global context on property "libraryName".// In web browsers, window.libraryName is then available.
例子中的注释是说把file.js中exports出来的变量付给全局变量"libraryName"
。假如file.js
中有代码module.exports=1
,那么require("expose?libraryName!./file.js")
后window.libraryName
的值就为1(我们这里只讨论浏览器环境)。
- webpack的模块化插件
- 基于webpack的模块化构建
- 基于webpack的模块化构建
- 前端模块化之模块化工具gulp和webpack的安装。
- jQuery 插件的模块化
- webpack的CommonsChunkPlugin插件
- 编写模块化的jquery插件
- 前端模块化工具-webpack
- WebPack模块化开发
- Webpack-模块化系统简述
- webpack 模块化机制
- webpack的html插件使用
- 前端模块化方案的比较(webpack/require.js/seajs/browserify
- 从前端模块化的概念来理解Webpack
- 【webpack学习笔记(一)】流行的前端模块化工具webpack初探
- webpack---webpack中经典实用的插件copy-webpack-plugin拷贝资源插件
- webpack插件
- 详解前端模块化工具-webpack
- noi 14:求10000以内n的阶乘
- Anaconda装OpenCV
- PPPOE概述
- 用户锁,扣费模型,足够能支持一般并发
- c#正则匹配指定地址指定div内容
- webpack的模块化插件
- 17/7/31学习笔记03
- 基于React Native + redux 开发的客户端(适配IOS和Android),可查看保存妹纸,收藏分享文章等
- maven找不到依赖
- oracle 触发器简单应用
- 通用树的双亲表示法(代码演示))
- [CLI]tcpdump过滤小结
- linux -- 进程的查看、进程id的获取、进程的杀死 进程查看
- Nginx--官网中文翻译(中英文对比)--1-新手指南Beginner’s Guide