我正在使用Webpack来转换我的ES6类。假设捆绑包中有一个 Service
类,可以由其他捆绑脚本导入。
class Service {
 constructor(){
 //
 }

 someMethod(data){
 //
 }
}

导出默认服务;



 现在我有一个很小的内联脚本在HTML主体(下面的伪代码)中,需要使用模板引擎(如Twig)或服务器端插入的数据调用该 Service
类中的方法。刀。当然,创建一个新的 Service
对象将不起作用...
< body>
 ...
 <脚本>
 var data = {{$ json_server_data}}; 

 var service = new Service;

 Service.someMethod(数据);
 < / script>
< / body>



 我真的希望服务器数据可以内联使用它阻止了额外的异步调用。使用 Service
类污染窗口命名空间感觉就像丢弃了类加载器的好处......
你会如何解决这个问题?当然也欢迎采取不同方法的建议。

答案 0 :(得分:2)
您的服务类在捆绑的javascript范围之外无法使用。所以你可能想要它global,你可以通过将它附加到窗口对象来实现。
// Service.js
class Service {
constructor() {
//
}
someMethod(data) {
//
}
}
window.Service = Service;
export default Service;
// usage
let myService = new Service();