我正在编写一个书签,它使用另一个第三方库来执行其部分功能。如何在不在全局范围内公开库的情况下使用书签中的第三方库?
源代码目前正在提交 - https://github.com/shanti2530/bookmarklets 有问题的库是moment.js,如果用户使用书签,目前正在全局范围内公开。
答案 0 :(得分:0)
由于您只是将moment.js代码包含在自己的bookmarklet中,因此您可以将moment.js代码放在外部函数中。这将使您可以使用它。
要不创建全局变量,您必须编辑moment.js源,因为它显式创建全局符号,而不管它是如何包含的。我没有广泛研究它的源代码,但看起来函数makeGlobal()
是定义其接口的地方。您可以修改它以将时刻函数添加为您在函数f()
中声明的对象的方法,这样就不会影响全局范围。
看起来你会修改这一行:
// makes moment function globally available
this['moment'] = moment;
更改moment()
功能的访问方式。