根据ES6速记初始化,以下两种方法是相同的:
var person = {
name: "Person",
greet: function() {
return "Hello " + this.name;
}
};
Run Code Online (Sandbox Code Playgroud)
var person = {
name: "Person",
greet() {
return "Hello " + this.name;
}
};
Run Code Online (Sandbox Code Playgroud)
ES6的方式与之前的方式有什么不同吗?如果不是那么在它们里面使用"超级"也应该被视为相等,这不符合,请看下面的两个变量:
let person = {
greet(){
super.greet();
}
};
Object.setPrototypeOf(person, {
greet: function(){ console.log("Prototype method"); }
});
person.greet();
Run Code Online (Sandbox Code Playgroud)
let person = {
greet: function(){
super.greet(); // Throw error: Uncaught SyntaxError: 'super' keyword unexpected here
}
};
Object.setPrototypeOf(person, {
greet: function(){ console.log("Prototype method"); }
}); …Run Code Online (Sandbox Code Playgroud) 我正在尝试构建微前端生态系统。有许多团队开发不同的组件,使应用程序在单页中作为单页应用程序一起工作。所有组件都应该独立构建和部署,并且应该在单个 HTML 页面中引用,以便通过在运行时解析来开始协同工作。例如,在生产中,我们应该在 html 页面中有以下脚本文件:
<script src="http://deploy-server/external/vendor1.js" />
<script src="http://deploy-server/external/vendor2.js" />
<script src="http://deploy-server/external/vendor3.js" />
<script src="http://deploy-server/internal/comp1.js" />
<script src="http://deploy-server/internal/comp2.js" />
<script src="http://deploy-server/internal/comp3.js" />
Run Code Online (Sandbox Code Playgroud)
现在,下面将是包的详细信息:
vendor1 -> Reactjs, react-dom, react-router (most used lib for making react eco-system, Used by all internal component scripts)
vendor2.js -> react-datepicker, lodash, (libraires used by comp2.js)
vendor3.js -> Used by comp3.js
Run Code Online (Sandbox Code Playgroud)
comp1.js,comp2.js,comp3.js -> 使用 vendor1.js 并且将来可能正在使用或可能开始使用 vendor2 和 vendor3 js 模块。
如何分别捆绑外部供应商文件和内部库,同时希望使用它们在不同团队之间共享以进行开发。假设我已经捆绑了 vendor1.js,它应该如何用于开发和构建 comp3、comp4、....?
我尝试使用“共享”构建 vendor1.js,但是当使用 comp2.js 引用它时,出现运行时错误。
编辑:添加代码我尝试共享供应商文件不同的团队,我在 app1 中创建了供应商文件,具有以下 webpack.config.js
entry: {
home: { …Run Code Online (Sandbox Code Playgroud)