使用 ES6 模块创建 JS
CreateJS using ES6 modules
我正在使用 createJS - preloadJS 和 ES6 以及 Babel 和 webpack。
const files = [{ src: 'characterSprite.png', id: 'characterSprite' }];
const Loader = new createjs.LoadQueue(false);
Loader.loadManifest(files, true, 'img/');
export default Loader;
我想实现的是在preload.js中加载所有图片,在其他文件中(例如hero.js ) 做类似的事情:
import Loader from './loader';
Loader.getResult('characterSprite');
问题是,当我在加载器上调用 .getResult()
时,加载器尚未完成预加载,所以它 returns undefined
.
我可以使用以下方法检查加载程序何时完成:
Loader.addEventListener('complete', () => console.log('loader has finished');
我的问题是只有加载程序完成后才能导出模块吗?
有更好的方法吗?
我不熟悉 CreateJS,但这应该是普通的旧 ES6 (eh),因此您可以通过包装 Loader 并在 导入它之后启动它来解决这个问题:
class MyLoader {
constructor(files) {
this.files = files;
}
load() {
// Using a promise is optional, but I would recommend it
return new Promise((resolve) => {
const Loader = new createjs.LoadQueue(false);
Loader.loadManifest(files, true, 'img/');
Loader.addEventListener('complete', () => { resolve(Loader) });
});
}
}
export default MyLoader;
通过这种方式,您可以像这样 运行 实例化它:
import MyLoader from './MyLoader';
const files = [{ src: 'characterSprite.png', id: 'characterSprite' }];
let myLoaderInstance = new MyLoader(files);
myLoaderInstance.load().then( (completedLoader) => {
console.log('Loader has finished!', completedLoader.getResult('characterSprite') );
} );
这有意义吗? :)
编辑:您可能还想查看 Webpack 的 file-loader
,它允许您像使用 JS 模块一样 require
图像,以便它们与您的其余代码捆绑在一起。它与 运行 时间图像加载没有任何关系,但它仍然非常方便!
我正在使用 createJS - preloadJS 和 ES6 以及 Babel 和 webpack。
const files = [{ src: 'characterSprite.png', id: 'characterSprite' }];
const Loader = new createjs.LoadQueue(false);
Loader.loadManifest(files, true, 'img/');
export default Loader;
我想实现的是在preload.js中加载所有图片,在其他文件中(例如hero.js ) 做类似的事情:
import Loader from './loader';
Loader.getResult('characterSprite');
问题是,当我在加载器上调用 .getResult()
时,加载器尚未完成预加载,所以它 returns undefined
.
我可以使用以下方法检查加载程序何时完成:
Loader.addEventListener('complete', () => console.log('loader has finished');
我的问题是只有加载程序完成后才能导出模块吗?
有更好的方法吗?
我不熟悉 CreateJS,但这应该是普通的旧 ES6 (eh),因此您可以通过包装 Loader 并在 导入它之后启动它来解决这个问题:
class MyLoader {
constructor(files) {
this.files = files;
}
load() {
// Using a promise is optional, but I would recommend it
return new Promise((resolve) => {
const Loader = new createjs.LoadQueue(false);
Loader.loadManifest(files, true, 'img/');
Loader.addEventListener('complete', () => { resolve(Loader) });
});
}
}
export default MyLoader;
通过这种方式,您可以像这样 运行 实例化它:
import MyLoader from './MyLoader';
const files = [{ src: 'characterSprite.png', id: 'characterSprite' }];
let myLoaderInstance = new MyLoader(files);
myLoaderInstance.load().then( (completedLoader) => {
console.log('Loader has finished!', completedLoader.getResult('characterSprite') );
} );
这有意义吗? :)
编辑:您可能还想查看 Webpack 的 file-loader
,它允许您像使用 JS 模块一样 require
图像,以便它们与您的其余代码捆绑在一起。它与 运行 时间图像加载没有任何关系,但它仍然非常方便!