使用webpack和babel从es6模块导出和更改javascript对象
使用webpack从es6模块导出和更改javascript对象 如果我在index.js中更改config的属性,它会更改,但使用Object.assign并非不可能。使用webpack和babel从es6模块导出和更改javascript对象,javascript,module,ecmascript-6,webpack,babeljs,Javascript,Module,Ecmascript 6,Webpack,Babeljs,使用webpack从es6模块导出和更改javascript对象 如果我在index.js中更改config的属性,它会更改,但使用Object.assign并非不可能。 我的代码可以更好地描述问题。 这个例子简化了 config.js let config = { plugins: { slick: { autoplaySpeed: 1000, autoplay: true, } } }; expo
我的代码可以更好地描述问题。
这个例子简化了 config.js
let config = {
plugins: {
slick: {
autoplaySpeed: 1000,
autoplay: true,
}
}
};
export default config;
index.js
import config from './config.js'
config.plugins.slick.autoplaySpeed = 500;
import './clientCode';
import config from './config.js'
config.plugins.slick.autoplaySpeed = 500;
import init from './clientCode';
init();
clientCode.js
import config from './config';
//autoplaySpeed: 500, as it need to be
console.dir(config.plugins.slick);
//autoplaySpeed: 1000, needs to be 500, ->why<- value not changed?
console.dir(Object.assign({}, config.plugins.slick));
import config from './config';
config.plugins.slick.autoplaySpeed = 500;//new value assigning
//autoplaySpeed: 500, as it need to be
console.dir(config.plugins.slick)
//autoplaySpeed: 500, as it need to be
console.dir(Object.assign({}, config.plugins.slick));
import config from './config';
export default function init(){
//autoplaySpeed: 500, as it need to be
console.dir(config.plugins.slick);
//autoplaySpeed: 500, 500, as it need to be
console.dir(Object.assign({}, config.plugins.slick));
}
我已尝试重新启动我的webpack watcher(认为问题出在webpack的缓存中),
但这并没有解决问题
如何更改一个文件中的配置值,以及如何使用Object.assign在另一个文件中更改的值?
为什么会出现这个问题
更新:现在我明白了问题在于这些文件的执行顺序。
clientCode.js中的console.dir比index.js中的其他console.dir先执行
现在用这种方式挖掘。用这种模块导入的方式解决了问题 index.js
import config from './config.js'
config.plugins.slick.autoplaySpeed = 500;
import './clientCode';
import config from './config.js'
config.plugins.slick.autoplaySpeed = 500;
import init from './clientCode';
init();
clientCode.js
import config from './config';
//autoplaySpeed: 500, as it need to be
console.dir(config.plugins.slick);
//autoplaySpeed: 1000, needs to be 500, ->why<- value not changed?
console.dir(Object.assign({}, config.plugins.slick));
import config from './config';
config.plugins.slick.autoplaySpeed = 500;//new value assigning
//autoplaySpeed: 500, as it need to be
console.dir(config.plugins.slick)
//autoplaySpeed: 500, as it need to be
console.dir(Object.assign({}, config.plugins.slick));
import config from './config';
export default function init(){
//autoplaySpeed: 500, as it need to be
console.dir(config.plugins.slick);
//autoplaySpeed: 500, 500, as it need to be
console.dir(Object.assign({}, config.plugins.slick));
}