zoukankan      html  css  js  c++  java
  • require.context

    前言

    带表达式的require语句

    如果你的 require参数含有表达式(expressions),会创建一个上下文(context),因为在编译时(compile time)并不清楚具体是哪一个模块被导入

    require("./template/" + name + ".ejs");
    

    webpack 解析 require() 的调用,提取出来如下这些信息:

    Directory: ./template
    Regular expression: /^.*.ejs$/
    

    则会返回template目录下的所有后缀为.ejs模块的引用,包含子目录。

    require.context

    可以使用 require.context() 方法来创建自己的(模块)上下文,这个方法有 3 个参数:

    • 要搜索的文件夹目录
    • 是否还应该搜索它的子目录,
    • 以及一个匹配文件的正则表达式。
    require.context(directory, useSubdirectories = false, regExp = /^.//)
     
    
      require.context("./test", false, /.test.js$/);
      //(创建了)一个包含了 test 文件夹(不包含子目录)下面的、所有文件名以 `.test.js` 结尾的、能被 require 请求到的文件的上下文。
     
    
      require.context("../", true, /.stories.js$/);
      //(创建了)一个包含了父级文件夹(包含子目录)下面,所有文件名以 `.stories.js` 结尾的文件的上下文。
    

    require.context模块导出(返回)一个(require)函数,这个函数可以接收一个参数:request 函数–这里的 request 应该是指在 require() 语句中的表达式
    导出的方法有 3 个属性: resolve, keys, id。

    • resolve 是一个函数,它返回请求被解析后得到的模块 id。
    • keys 也是一个函数,它返回一个数组,由所有可能被上下文模块处理的请求组成。
    • id 是上下文模块里面所包含的模块 id. 它可能在你使用 module.hot.accept 的时候被用到
  • 相关阅读:
    CSS实现点击改变元素背景色
    php三种方法从控制结构或脚本中跳出
    如何关闭运行在某端口的的进程,例如 :8080端口
    Webpack简易入门教程
    git add -A 和 git add . 的区别
    怎样把已经做好的网页传到网上去?
    jquery源码之事件系统-- jQuery.event
    jquery源码之缓存系统--$.data
    jquery源码之延迟对象--Deferred
    jquery源码之低调的回调函数队列--Callbacks
  • 原文地址:https://www.cnblogs.com/dehenliu/p/14339779.html
Copyright © 2011-2022 走看看