Javascript 如何在“窗口”中公开网页包依赖项?

Javascript 如何在“窗口”中公开网页包依赖项?,javascript,webpack,kirby,Javascript,Webpack,Kirby,这个问题来自于我正在进行的一项研究。这里是一个简短的总结 Kirby配线架使用Vue和Vuex,并将它们与Webpack捆绑在一起(通过Vue CLI)。它有两块,供应商和应用程序。人们也可以为这个面板编写插件。JS执行顺序如下: vendors.js区块 插件的JavaScript包(例如,myplugin.js) app.js块 问题是-myplugin.js如何引用与app.js相同的Vuex?正如我在本期文章中所述,如果我在myplugin.js中使用自己的Vue和Vuex,Vue就会出

这个问题来自于我正在进行的一项研究。这里是一个简短的总结

Kirby配线架使用Vue和Vuex,并将它们与Webpack捆绑在一起(通过Vue CLI)。它有两块,供应商和应用程序。人们也可以为这个面板编写插件。JS执行顺序如下:

  • vendors.js区块
  • 插件的JavaScript包(例如,myplugin.js)
  • app.js块
  • 问题是-myplugin.js如何引用与app.js相同的Vuex?正如我在本期文章中所述,如果我在myplugin.js中使用自己的Vue和Vuex,Vue就会出现问题。由于Kirby在自己的Vue实例中加载我的Vue组件,因此该组件的存储应该使用绑定到同一Vue实例的Vuex存储,否则Vue的反应性会中断

    我们无法在app.js中添加以下内容:

    import Vue from 'vue'
    import Vuex from 'vuex'
    
    window.KirbyVue = Vue
    window.KirbyVuex = Vuex
    
    因为app.js块是在myplugin.js之后执行的。因此,当myplugin.js中的导入被解析时,对
    KirbyVuex
    的引用将不存在。所以你不能做:

    new KirbyVuex.Store({
      ...
    })
    
    因为
    KirbyVuex
    将是
    未定义的

    显然,这些依赖项应该在vendors.js块中公开。有没有可能发生这种情况?插件可能需要使用Vue和Vuex之外的其他面板依赖项。如果它们已经存在,那么将它们包括进来是多余的。此外,插件和面板可能需要共享相同的依赖关系状态,在这种情况下,需要使用相同的依赖关系(我在这里使用Vuex就是这样)

    面板是否有办法向
    窗口
    对象公开其依赖项?它已经创建了包含插件有用数据的
    window.panel
    。它是否可以在其中添加
    window.panel.vendors
    ?或者可能只是
    window.vendors
    ?从那里,您可以在插件中使用
    new vendors.Vuex.Store(…)

    网页包中是否有允许依赖项暴露于外部代码的功能