Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/452.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用网页包加载内部模块属性_Javascript_Webpack_Dojo_Webpack Loader - Fatal编程技术网

Javascript 使用网页包加载内部模块属性

Javascript 使用网页包加载内部模块属性,javascript,webpack,dojo,webpack-loader,Javascript,Webpack,Dojo,Webpack Loader,我正在将旧的Dojo Toolkit应用程序移植到新技术(Vue.js和WebPack) 我的设想是。。。 这些新模块应该与旧的Dojo加载程序或新的WebPack加载程序一起工作。我能够删除大多数dojo依赖项,但我仍然需要为新组件使用插件dojo/text(它将html文件作为字符串加载)和dojo/i18n(它将基于区域设置加载模块) 这些组件正在WebPack应用程序上进行原型化,但在生产过程中,它仍将使用Dojo Loader util。所有Dojo依赖项都已删除 使用dojo/tex

我正在将旧的Dojo Toolkit应用程序移植到新技术(Vue.js和WebPack)

我的设想是。。。 这些新模块应该与旧的Dojo加载程序或新的WebPack加载程序一起工作。我能够删除大多数dojo依赖项,但我仍然需要为新组件使用插件dojo/text(它将html文件作为字符串加载)和dojo/i18n(它将基于区域设置加载模块)

这些组件正在WebPack应用程序上进行原型化,但在生产过程中,它仍将使用Dojo Loader util。所有Dojo依赖项都已删除

使用dojo/text时,我可以配置WebPack以加载HTML,使用dojo/i18n时,我可以配置默认语言,使用:

plugins: [
  new webpack.NormalModuleReplacementPlugin(/^dojo\/text!/, function(data) {
    data.request = data.request.replace(/^dojo\/text!/, '!html-loader!');
  }),
  new webpack.NormalModuleReplacementPlugin(/^dojo\/i18n!/, function(data) {
    data.request = data.request.replace(/^dojo\/i18n!/, '');
  })
]
这个问题。。。 默认语言的典型i18n Dojo模块是:

define({
  root: {
    placeholder: 'Name'
  },
  es: true,
  pt: true
});
Dojo loader仅获取根属性作为模块结果:

define({
  placeholder: 'Name'
});
问题是。。。 我可以使用现有的加载程序或插件加载模块、解析或评估模块并返回根属性作为结果吗

制作此模块:

define({
  root: {
    placeholder: 'Name'
  },
  es: true,
  pt: true
});
变成

define({
  placeholder: 'Name'
});

对于此用例,可以编写自定义加载程序,加载程序的源代码为:

module.exports = function(source) {
  return 'module.exports = ' + JSON.stringify(eval('function define(x) { return x; }; ' + source).root);
};
您必须包括使用
NormalModuleReplacementPlugin
do添加加载程序:

new webpack.NormalModuleReplacementPlugin(/^dojo\/i18n!/, function(data) {
  data.request = data.request.replace(/^dojo\/i18n!/, '!dojo-i18n!');
})