javascript - webpack中如何解决动态请求?

标签 javascript webpack

在我的项目中存在动态需求,一些代码:

var getFrames = require( '../../utils/images' );

module.exports = {
    frameStart: 4, // from 0
    frameStep: 0.033, // seconds
    frameRate: 27.7, // fps
    playRate: 0.1, // percantage
    frameCurrent: 0, // current frame
    frames: getFrames( 'which-ball-lands-first', 52 ),
    width: 320,
    height: 240
},

其中 getFrames 函数定义如下:

... 

var getFrames = function( folder, n ) {
  var total = getTotalPower( n );
  var frames = [], i;

  for ( i = 0; i <= n; i++ ) {
    frames.push( require( '../applications/' + folder + '/video/frame-' + getFrameNumber( i, total ) + '.jpg' ) );
  }

  return frames;
};

module.exports = getFrames;

但是在 webpack:build 任务中,对于某些模块将所有 jpg 图像包含到 build.js 文件中,有些模块仅包含部分图像...而有些模块所有图像都作为 Assets !

所有图像均为 jpg 文件。 如何解决这个问题并将所有图像包含到 build.js 中?

最佳答案

这可以通过 webpack Context 来完成.

首先,您必须定义上下文 require 语句:

var req = require.context("../applications/folder/video/", false, /^\.\/.*\.jpg$/);

这将包括 bundle 中的所有图像(我将第二个参数设置为 false,因为您的图像直接位于此文件夹中)。

然后将请求更改为req:

frames.push(req( '../applications/folder/video/frame-' + getFrameNumber( i, total ) + '.jpg'));

为了简单起见,我已将文件夹变量更改为固定名称,但如果需要,您可以迭代多个文件夹。

关于javascript - webpack中如何解决动态请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33434225/

相关文章:

javascript - 将数组中的第一个值与其他值进行比较

javascript - 如何处理 v-if 中的点击项目

webpack - image src 使用 vuejs 获取 404 错误

javascript - 如何捆绑 npm 包以便在脚本中从中导入对象?

javascript - 变异数组 Vuex

javascript - 使用不带 FormData 的 AJAX 上传文件 (IE9)

javascript - 使用 Javascript 的 window.performance.timing 计算页面加载时间

javascript - 从文件夹中的文件生成 <img> 并将 css 样式应用于 img 或容器(基于文件名) – (Javascript/JQuery/PHP?)

ionic-framework - Ionic 中的动态环境变量 - 找不到模块

javascript - Webpack - 捆绑多个/不同版本的 .css 文件