Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
231 views
in Technique[技术] by (71.8m points)

require/import路径中的叹号是什么?

之前在一些开源项目的源码里,以及一些文章里,见到如下这样的require/import路径,其中包含形如!.的片段,不知道是什么意思:

// https://juejin.im/post/6844903504352378894#heading-10
require("any-template-language-loader!./xyz.atl");
var html = anyTemplateLanguage.render("xyz");
// vscode源码 -- src/vs/base/browser/ui/actionbar/actionbar.ts
import 'vs/css!./actionbar';

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

自己找到答案了。这是webpack的语法,用于激活loader的。

webpack - loaders下有一句话:

Loaders are activated by using loadername! prefixes in require() statements, or are automatically applied via regex from your webpack configuration

意思就是,可以通过loadername!的方式调用loader,也可以通过配置文件内的正则规则自动启用。

因此,对于问题中的两个例子,

require("any-template-language-loader!./xyz.atl");

表示使用any-template-language-loader来加载./xyz.atl这个文件。

vscode同理,

import 'vs/css!./actionbar';

表示使用vs/css来加载./actionbar.css这个文件。

vs/css这个loader是在src/vs/css.build.js这个文件中注册的:

// vscode - src/vs/css.build.js:360
define('vs/css', new CSSPlugin(cssLoader));

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...