JsUtil.js 882 B

12345678910111213141516171819202122232425262728
  1. /**
  2. * 动态加载js模块
  3. * @param {*} jsUrl js文件的路径
  4. * @return promise对象
  5. */
  6. let dynamicLoadJsModule = function(jsUrl){
  7. let promise = null;
  8. // 注意:在webpack中直接使用import(url).then()会错误的解析url。
  9. // 如果url是静态的值,举例'xxx.js', webpack打包的时候,会去src对应的目录下面找js文件。
  10. // 如果url是变量,举例const url = '', webpack打包的时候,原理不清晰...,测试结果时浏览器不会发出http请求加载后端的js文件。
  11. let command = `
  12. promise = new Promise((resolve, reject) => {
  13. import('${jsUrl}').then(remoteComponent => {
  14. resolve(remoteComponent);
  15. }).catch(error => {
  16. reject(error);
  17. });
  18. });
  19. `;
  20. eval(command);
  21. return promise;
  22. };
  23. export default {
  24. dynamicLoadJsModule,
  25. };