javascript - 如何将 MyClass 导入为可全局重用的通用类?
问题描述
有一种简单而标准的方式来导入一个类并在全球范围内重用它吗?
这个解决方案不好:需要一个中间脚本......而且它很丑陋,需要冗余声明,而且看起来不那么执行。这很奇怪:
<script type="module" src="./MyClass.js"></script>
<script type="module" id="_the_intermediary_script_">
'use strict';
import MyClass from './MyClass.js';
window.MyClassRef = MyClass; // "globalizing" class
</script>
<script> // NON-module global script
// no way to directelly import here??
document.addEventListener('DOMContentLoaded',function(){
// only works after all modules loaded:
let x = new window.MyClassRef(22); // ... after all is an ugly way!
}, false); //ONLOAD
</script>
有没有一种方法可以在没有中间脚本的情况下导入类?
注意:我不需要“动态加载”来导入,我需要像任何其他库一样加载类,使用 传统的静态库包含。我可以使用带有现代 Javascript/ECMAScript解释器的现代(最新版本)浏览器。
解决方案
在没有模块的情况下重用您的课程
要重用我们不需要,export class
只需将类的源代码发布到文件中,并在需要时加载它......对任何浏览器都有效吗?它适用于现代 Firefox:
myInclude.js
class MyClass {
constructor(i=10) { this.i=i; }
m(){return ++this.i;}
}
myPage.htm
<!DOCTYPE html>
<html>
<head><meta charset="utf-8"/><title>example</title>
<script src="myInclude.js"></script>
<script>
let x = new MyClass();
let y = new MyClass(90);
console.log( "debug:", x.m(), y.m() );
</script>
</head>
<body> etc. </body>
</html>
任何导出中的类表达式
export
在事物的表达式中定义“类库”没问题吗?似乎正确:
// body of the exported thing
// ...
const theClassRef = class MyClass {
constructor(i=10) { this.i=i; }
m(){return ++this.i;}
}
他们let x = new theClassRef(123)
用来创建一个MyClass
对象。
推荐阅读
- javascript - 出现错误“您可能需要适当的加载程序来处理此文件类型。” 使用 Webpack 编译 ES6 资产时
- mongodb - Springboot monodb 查询过滤数据计数
- wordpress - 未捕获的错误:在自定义插件中调用未定义的函数 wp_redirect()
- javascript - 访问数组属性的编译错误
- sql - Select * From Table Where Name in like(通配符)
- angular8 - (ngx-admin/Nebular) 如何将 Grid 系统与 nebular 集成?
- mongodb - Mongoose 从多个文档更新多个子文档
- java - 如何使用 WebView 为 onClickListener 设置线性布局
- intellij-idea - 如果已通过 JetBrains Toolbox 安装 IntelliJ IDEA,如何在 Windows 上下文菜单中提供“在 IntelliJ IDEA 中打开此项目”选项?
- gcloud - 无法下载谷歌凭据 json 文件