require.context的用法介绍(附示例)


本文摘自PHP中文网,作者不言,侵删。

本篇文章给大家带来的内容是关于require.context的用法介绍(附示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

起因:为什么会突然用到webpack这个管理特性呢?

项目某个页面需要引入N张demo图片。即资源的批量引入:如果要引入10+个以上的图片资源,就需要写10+个如下的引入代码:import XXX from 'relative/path/assets/imgs/xxx';,那如果再多一点的静态资源需要引入呢?这时候require.context就派上了用场。

文档

官方文档的介绍先放在这里,可小觑一下,了解使用姿势。

栗子来一个

话不多说,针对上面的场景,我们上一下代码吧。

场景需要我们引入某个指定文件夹下的所有webp格式的图片,在单击demo1的时候展示demo1下的x张案例图,在单击demoX的时候展示demoX下的x张案例图。

1

2

3

4

5

6

7

8

// 通过require.context的方式引入指定的路径下匹配到的模块引用

const demoImgsContext = require.context('@src/assets/imgs/demo', false, /\.webp$/);

...

// 使用姿势

trigger(type) {

    this.demoImgs = Arry.from({length: config.type}, (key, value) => value + 1)

        .map(index => demoImgsContext(`./${type}_demo${index}.webp`));

}

举一反三的场景还有需要的么?
比如vuex引入多个module的store。也可以使用这个方法。

1

2

3

4

5

6

7

8

9

10

// 添加module文件是,文件命请按照module_XXX的方式命名

// 自动引入module文件夹下的js文件

const mutationContext = require.context('./module', false, /.*\.js/);

const modules = mutationContext.keys().reduce((prev, cur) => {

    // 排除module_root文件

    const matches = cur.match(/module_(?!.*root)(\w+)\.js/);

    const key = matches && matches[1];

    key && (prev[key] = mutationContext(cur).default);

    return prev;

}, {});

接下来,让我们看一下,require.context是如何做到动态引入资源的呢?

看下打包后的dist目录下,我们的静态图片案例chunk这个部分的代码是啥样的。

阅读剩余部分

相关阅读 >>

nodejs与javascript的区别

javascript中调用函数的方法有哪些

javascript on方法怎么用

javascript如何使用replace方法

javascript中object.is()方法如何使用?(代码示例)

如何自定义video播放器样式?

javascript怎么停止函数执行

javascript的基本结构是什么

html5多线程javascript解决方案web worker-专用worker和共享worker的详细代码介绍

javascript如何判断是否数字

更多相关阅读请进入《webpack》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...