4-4 语法问题

4-4 语法问题

http://img1.sycdn.imooc.com//climg/5e909e9f09d07c8d09060263.jpg

const value = moduleFiles(path)

moduleFiles不是数组吗?想通过key获取value不是应该moduleFiles[path]吗?

怎么是括号,它又不是函数

正在回答

登陆购买课程后可参与讨论,去登陆

1回答

moduleFiles不是数组吗?

——不是,moduleFiles.keys()才是数组,moduleFiles是一个require函数,可以接收一个参数(key)。

想通过key获取value不是应该moduleFiles[path]吗?

怎么是括号,它又不是函数

——当成函数来理解,参考:

https://github.com/webpack/docs/wiki/context#context-module

https://webpack.docschina.org/guides/dependency-management/

官方示例:

var cache = {};

function importAll (r) {
     r.keys().forEach(key => cache[key] = r(key));

}

importAll(require.context('../components/', true, /\.js$/));// 在构建时(build-time),所有被 require 的模块都会被填充到 cache 对象中。




  • zippen 提问者 #1
    还是不懂,文档里面说require.context('../', true, /\.stories\.js$/);会返回一个一个 context。 又说一个 context module 会导出一个(require)函数,此函数可以接收一个参数:request。 那个require指的是importAll?importAll怎么突然就冒出来了? 为啥最后也没用到呢?官方也没说require.context返回的函数是什么结构啊? 那为啥不是moduleFiles.importAll(path)呢?
    2020-04-11 10:20:56
  • zippen 提问者 #2
    我想你回答错误了,我刚刚又看了英文的文档,根本就不关importAll的事,所以介绍这个函数有个啥用啊? var req = require.context("./templates", true, /^\.\/.*\.jade$/); var tableTemplate = req("./table.jade"); // tableTemplate === require("./templates/table.jade"); 感觉这个才是正解,真是被你搞晕了。。反正我是搞懂了
    2020-04-11 10:28:47
  • Brian 回复 提问者 zippen #3
    举例而已,说明是等价于require,注意看r(key)这个用法
    2020-04-11 10:37:05
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师