繁体   English   中英

如何使我的JavaScript库具有全局性?

[英]How can I make my JavaScript library global?

我想创建一个JavaScript库,并使它随处可见,就像Moment.js一样。 例如,当我导入Moment.js时,只要键入以下内容,就可以在任何地方使用它:

moment.someMomentFunction()

同样,我想通过以下方法从任何地方调用我的函数:

mylib.function1()

mylib.function2()

etc.. 

查看Moment.js源代码,我看不到对window对象的任何引用(如果希望对象是全局对象,则应使用该引用)

编辑:如果您特别想创建一个库, 导出/导入应该可以帮助您:

import * as myModule from '/modules/my-module.js';

使用export关键字在库中导出函数:

export function bing(Parameters here) {
alert("bong");
}

在另一个js文件调用javascript函数所回答

您只能从以前加载的文件和相同作用域的文件中调用函数。 如果从引用的帖子接受的答案不起作用,请尝试使用jQuery

$.getScript(url, function() { 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';

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM