如何使我的JavaScript库全球化?
我想创建一个JavaScript库,让它在任何地方都可以使用,就像如何使我的JavaScript库全球化?,javascript,html,Javascript,Html,我想创建一个JavaScript库,让它在任何地方都可以使用,就像Moment.js所做的那样。 例如,当我导入Moment.js时,只要键入以下内容,我就可以在任何地方使用它: moment.someMomentFunction() 类似地,我想通过执行以下操作从任何地方调用我的函数: mylib.function1() mylib.function2() etc.. 查看Moment.js源代码,我看不到对窗口对象的任何引用(如果您希望对象是全局对象,应该使用该对象)编辑:如果您特
Moment.js
所做的那样。
例如,当我导入Moment.js
时,只要键入以下内容,我就可以在任何地方使用它:
moment.someMomentFunction()
类似地,我想通过执行以下操作从任何地方调用我的函数:
mylib.function1()
mylib.function2()
etc..
查看
Moment.js
源代码,我看不到对窗口
对象的任何引用(如果您希望对象是全局对象,应该使用该对象)编辑:如果您特别想创建库,应该帮助您:
import * as myModule from '/modules/my-module.js';
使用Export关键字导出库中的函数:
export function bing(Parameters here) {
alert("bong");
}
如中所述 您只能从以前加载且在同一作用域中的文件调用函数。如果被引用帖子的答案无效,请尝试jQuery
$.getScript(url,函数(){
bläh();
});代码>普通我使用类似这样的东西来定义一个使用ES5的单独模块
LibName= window.LibName || {};
LibName = function () {
var yourVar1;
var yourVar2;
publicFunc1 = function() {
};
privateFunc2 = function() {
};
return {
"publicFuncName" : publicFunc1
}
}();
在ES6的帮助下,您可以创建带类和不带窗口变量的文件
class MyLib {
constructor() {
this.foo = 1;
this.bar = 2;
}
myPublicMethod1() {
return this.foo;
}
myPublicMethod2(foo) {
return foo + this.bar;
}
}
const instance = new MyLib();
export { instance as MyLib };
在代码中,您将像这样使用它
import { MyLib } from './MyLib';
window.mylib=mylib代码>-将其添加到窗口
“我看不到对窗口对象的任何引用…”因为他们这样做-->moment=this。moment
,将创建一个全局moment
实例@hanshenrik好,但我刚才说没有使用窗口对象。我认为Ramiz Wachtler实现了简单的var mylib=…
(在全局范围内)或mylib=…
(在草率模式下)赋值确实创建了全局变量,而不需要窗口
引用。@RamizWachtler太棒了,让我试试。。。