webpack入门 API in modules
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了webpack入门 API in modules相关的知识,希望对你有一定的参考价值。
A quick summary of all methods and variables available in code compiled with webpack. 用webpack编译的一些变量和方法的快速总结
Basic
require
CommonJs
require(dependency: String)
Returns the exports from a dependency. The call is sync. No request to the server is fired. The compiler ensures that the dependency is available.
Style: CommonJs 从依赖的exports返回,调用是同步的,没有请求到服务器,编译器确保依赖可用。
Example:
var $ = require("jquery"); var myModule = require("my-module");
define
(with factory)
define([name: String], [dependencies: String[]], factoryMethod: function(...))
The name argument is ignored. If the dependencies
array is provided, the factoryMethod will be called with the exports of each dependency (in the same order). If dependencies
is not provided the factoryMethod is called with require
, exports
and module
(for compatibility!). If the factoryMethod returns a value, this value is exported by the module. The call is sync. No request to the server is fired. The compiler ensures that each dependency is available.
Style: AMD name参数会被省略,如果提供了依赖数组,factiryMethod会被每一个输出的依赖调用(依次调用),如果没有提供依赖,factoryMethod就会被require,exports和modules调用(为了兼容),如果factoryMethod返回一个值,这个值就会被模块导出。调用是同步的,没有请求到服务器,编译器确保依赖可用。
Example:
define(["jquery", "my-module"], function($, myModule) { // Do something with $ and myModule. // Export a function return function doSomething() { // Do something }; });
Note: Can NOT be used in an async function. 注意,不能再异步函数中使用
module.exports
This value is returned, when that module is required. It’s default value is a new object. 当加载该模块的时候,这个值会被返回。默认值为一个新对象
Style: CommonJs
Example:
module.exports = function doSomething() { // Do something };
Note: Can NOT be used in an async function. 不能用于异步函数
exports
The exported object. It’s the default value of module.exports
. If module.exports
gets overwritten, exports
will no longer be exported.
Style: CommonJs 导出的对象。是module.exports的默认值。如果module.exports被覆盖,exports不再被导出。
exports.someValue = 42; exports.anObject = { x: 123 }; exports.aFunction = function doSomething() { // Do something };
Note: Using it in an async function may not have the expected effect.
define
(with value)
define(value: !Function)
Just exports the provided value
. The value
cannot be a function. 只导出提供的值(value),这个值不能为函数
Style: AMD (for compatibility!)
Example:
define({ answer: 42 });
Note: Can NOT be used in an async function.
export
(label)
export: value
Export the defined value. The label can occur before a function declaration or a variable declaration. The function name or variable name is the identifier under which the value is exported. 导出定义的值,这个label可以在函数或者变量声明之前发生。函数和变量名是导出值的标识符
Style: Labeled modules dependencies.LabeledModulesPlugin
Example:
export: var answer = 42; export: function method(value) { // Do something };
Note: Using it in an async function may not have the expected effect. 在移步函数里用它可能达不到预期的效果。
require
label
require: "dependency"
Make all exports from the dependency available in the current scope. The require
label can occur before a string. The dependency must export values with the export
label. CommonJs or AMD modules cannot be consumed. 使所有导出的依赖在当前作用域可用。require可以传入字符串生成。依赖必须被export lavel导出,不能被commonjs或者amd模块消费。
Style: Labeled modules dependencies.LabeledModulesPlugin 标记模块
Example:
// in dependency export: var answer = 42; export: function method(value) { // Do something };
require: "dependency";
method(answer);
require.resolve
require.resolve(dependency: String)
Returns the module id of a dependency. The call is sync. No request to the server is fired. The compiler ensures that the dependency is available.
The module id is a number in webpack (in contrast to node.js where it is a string, the filename). 返回依赖模块的id,同步调用。没有请求到服务器,编译器确保依赖可用模块id在webpack中是一个数字(相反在nodejs中它是一个字符串,是文件名)
Style: CommonJs
Example:
var id = require.resolve("dependency"); typeof id === "number"; id === 0 // if dependency is the entry point id > 0 // elsewise
module.id
The module id of the current module. 当前模块的id
Style: CommonJs
Example:
// in file.js module.id === require.resolve("./file.js")
Advanced
require.cache
Multiple requires to the same module result in only one module execution and only one export. Therefore a cache in the runtime exists. Removing values from this cache cause new module execution and a new export. This is only needed in rare cases (for compatibility!). 同一个模块被请求多次的结果就是只有一个米克被执行,只有一个导出。因此在运行时在缓存里。从缓存中删除一个值就会造成新的模块执行和一个新的导出。这是只在罕见的情况下需要这么做(为了兼容!)。
Style: CommonJs
var d1 = require("dependency"); require("dependency") === d1 delete require.cache[require.resolve("dependency")]; require("dependency") !== d1 // in file.js require.cache[module.id] === module require("./file.js") === module.exports delete require.cache[module.id]; require.cache[module.id] === undefined require("./file.js") !== module.exports // in theory; in praxis this causes a stack overflow require.cache[module.id] !== module
require.context
require.context(directory:String, includeSubdirs:Boolean /* optional, default true */, filter:RegExp /* optional */)
Example:
var context = require.context(‘components‘, true, /\.html$/); var componentA = context.resolve(‘componentA‘);
Style: webpack
require.ensure
require.ensure(dependencies: String[], callback: function([require]), [chunkName: String])
Download additional dependencies on demand. The dependencies
array lists modules that should be available. When they are,callback
is called. If the callback is a function expression, dependencies in that source part are extracted and also loaded on demand. A single request is fired to the server, except if all modules are already available.
This creates a chunk. The chunk can be named. If a chunk with this name already exists, the dependencies are merged into that chunk and that chunk is used.
Style: CommonJs 按需加载额外模块。依赖模块数组列表是可用的,如果可用,callback就会被调用。如果callback是一个函数表达式。源部分的依赖就会被提取和按需加载。只发送一个请求到服务端,除非所有请求都可用。它创建chunk,这个chunk可被命名。如果chunk名已经存在,这个依赖就会被合并到该chunk并且这个chunk被用过。
Example:
// in file.js var a = require("a"); require.ensure(["b"], function(require) { var c = require("c"); }); require.ensure(["d"], function() { var e = require("e"); }, "my chunk"); require.ensure([], function() { var f = require("f"); }, "my chunk"); /* This results in: * entry chunk - file.js - a * anonymous chunk - b - c * "my chunk" - d - e - f */
require
AMD
require(dependencies: String[], [callback: function(...)])
Behaves similar to require.ensure
, but the callback is called with the exports of each dependency in the dependencies
array. There is no option to provide a chunk name.
Style: AMD 和require.ensure差不多,但是回调函数被每个dependencies数组里的依赖调用,没有提供chunk名的选项。
Example:
// in file.js var a = require("a"); require(["b"], function(b) { var c = require("c"); }); /* This results in: * entry chunk - file.js - a * anonymous chunk - b - c */
require.include
require.include(dependency: String)
Ensures that the dependency is available, but don’t execute it. This can be use for optimizing the position of a module in the chunks.
Style: webpack 确保依赖可用,但是不会执行它,这个可用于优化模块在chunks中的位置。
Example:
// in file.js require.include("a"); require.ensure(["a", "b"], function(require) { // Do something }); require.ensure(["a", "c"], function(require) { // Do something }); /* This results in: * entry chunk - file.js - a * anonymous chunk - b * anonymous chunk - c Without require.include "a" would be in both anonymous chunks. The runtime behavior isn‘t changed. */
module.loaded
This is false
if the module is currently executing, and false
if the sync execution has finished.
Style: node.js (for compatibility!) 如果现在在模块正在执行,这项为false,如果同步执行完,也为false。
module.hot
Style: webpack
global
See node.js global
Style: node.js
process
See node.js process
Style: node.js
__dirname
Depending on the config option node.__dirname
: 取决于node.__dirname选项
false
: Not definedmock
: equal “/“true
: node.js __dirname
If used inside a expression that is parsed by the Parser, the config option is threaded as true
. 如果用在分析器解析的表达式中,配置选项则为真。
Style: node.js (for compatibility!)
__filename
Depending on the config option node.__filename
: 取决于node.__filename选项
false
: Not definedmock
: equal “/index.js”true
: node.js __filename
If used inside a expression that is parsed by the Parser, the config option is threaded as true
. 同上
Style: node.js (for compatibility!)
__resourceQuery
The resource query of the current module. 当前模块的资源查询。
Style: webpack
Example:
// Inside "file.js?test": __resourceQuery === "?test"
__webpack_public_path__
Equals the config options output.publicPath
. 和output.publicPath一样
Style: webpack
__webpack_require__
The raw require function. This expression isn’t parsed by the Parser for dependencies.
Style: webpack 原始加载函数,这个表达式没有被解析器解析为依赖关系。
__webpack_chunk_load__
The internal chunk loading function. Takes two arguments:内部块加载函数。 设置两个参数:
chunkId
The id for the chunk to load. 加载chunk的idcallback(require)
A callback function called once the chunk is loaded. 一旦chunk被加载,callback函数就会被调用
Style: webpack
__webpack_modules__
Access to the internal object of all modules.访问所有模块的内部对象。
Style: webpack
require.resolveWeak
Like require.resolve
, but doesn’t include the module into the bundle. It’s a weak dependency.
Style: webpack 像 require.resolve但不包括包里的模块,是个弱依赖
Example:
if(__webpack_modules__[require.resolveWeak("module")]) { // do something when module is available } if(require.cache[require.resolveWeak("module")]) { // do something when module was loaded before }
__webpack_hash__
Access to the hash of the compilation. 对编译的哈希的访问。
Only available with the HotModuleReplacementPlugin
or the ExtendedAPIPlugin
Style: webpack
__non_webpack_require__
Generates a require
function that is not parsed by webpack. Can be used to do cool stuff with a global require function if available.
生成一个require函数,不会被webpack解析。如果可用,可以使用一个全局函数来做很酷的事情。
Style: webpack
DEBUG
Equals the config option debug 和debug配置选项相等
Style: webpack
以上是关于webpack入门 API in modules的主要内容,如果未能解决你的问题,请参考以下文章
Webpack + React + TypeScript:未找到模块 ... in ... node_modules/react/
TipsVue项目报错:This dependency was not found:* regenerator-runtime/runtime.js in ./node_modules/cache(代
vue中 Error in mounted hook: "TypeError: __WEBPACK_IMPORTED_MODULE_0__assets_swiper_js__.default