Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/471.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.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_Babeljs - Fatal编程技术网

Javascript 网页包替换模块运行时

Javascript 网页包替换模块运行时,javascript,webpack,babeljs,Javascript,Webpack,Babeljs,我有一个相当复杂的场景 我们正在用React构建一个桌面应用程序,它用Electron包装,Webpack负责Babel的透明和分块 应用程序从cms接收配置数据 配置的一部分可能是javascript类,它需要覆盖驻留在应用程序中的javascript类。CMS中指定的JS代码将是普通Javascript代码(ES6/7/8与我们用于应用程序的代码相同) 我在这里看到两个问题: 如何仅传输这一个类和 如何在应用程序的运行时替换它 这可能吗 关于如果使用“应用程序从cms接收配置数据。”您的意思

我有一个相当复杂的场景

我们正在用React构建一个桌面应用程序,它用Electron包装,Webpack负责Babel的透明和分块

应用程序从cms接收配置数据

配置的一部分可能是javascript类,它需要覆盖驻留在应用程序中的javascript类。CMS中指定的JS代码将是普通Javascript代码(ES6/7/8与我们用于应用程序的代码相同)

我在这里看到两个问题:

  • 如何仅传输这一个类和

  • 如何在应用程序的运行时替换它

  • 这可能吗

    关于

    如果使用“
    应用程序从cms接收配置数据。
    ”您的意思是运行时数据,那么,由于
    网页包
    在编译时起作用,它无法帮助您传输/替换代码()

    如果您的
    数据可以在编译时从CMS
    中获取,那么请注意您可以

    module.exports=函数webpackConfig(env){
    常量配置={
    上下文:_dirname,
    插件:[]
    //等等。。。
    };
    返回CMS
    .fetchConfig()
    。然后(cmsConfigs=>{
    常量变量={
    replaceClass:JSON.stringify(cmsConfigs.classired.toString())
    };
    configs.plugins.push(新的webpack.DefinePlugin(vars));
    返回配置;
    })
    ;
    }
    
    Hi。不幸的是,这是第一种情况。我运气不好吗?你可以修改你的CMS来保存
    运行时代码的
    传输版本
    ,并将其作为普通脚本提取到你的应用程序中(如果你可以信任的话)。这也可以是一种替代方法。然而,我不确定加载Transpile类的版本是否会覆盖应用程序中的版本,因为webpack使用标识符加载Transpile代码。因此,如果原始类在内部引用的id为800(例如),则CMS one不能保证收到相同的id。是的,但如果您知道可以覆盖哪个类,那么只需编写一个充当代理的程序。我的问题不是实现模式。如果我们撇开传输问题不谈(假设我这样做并得到传输的代码),问题是我不能在应用程序中计算JS字符串,它会覆盖应用程序中已经存在的类,因为webpack的模块系统包装了所有导出的模块/类