如何使我的JavaScript库全球化?

如何使我的JavaScript库全球化?,javascript,html,Javascript,Html,我想创建一个JavaScript库,让它在任何地方都可以使用,就像Moment.js所做的那样。 例如,当我导入Moment.js时,只要键入以下内容,我就可以在任何地方使用它: moment.someMomentFunction() 类似地,我想通过执行以下操作从任何地方调用我的函数: mylib.function1() mylib.function2() etc.. 查看Moment.js源代码,我看不到对窗口对象的任何引用(如果您希望对象是全局对象,应该使用该对象)编辑:如果您特

我想创建一个JavaScript库,让它在任何地方都可以使用,就像
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太棒了,让我试试。。。