AnguarJS模块包装javascript库



我想在我的angular项目中使用一个库,该库提供用javascript/jQuery编写的滑块。因此,我会在我的项目中编写一个指令,带有使用库功能的特定接口。我会在我的索引html中加载库源文件。这将使该图书馆在全球范围内可用。

我也会在我的其他angular项目中使用这个库,所以我想用这个指令创建一个angular Module(自己的项目),这样我就可以把它作为模块依赖项注入到每个项目中。不幸的是,我不知道在哪里加载库,也不知道这个角度模块的结构应该如何。我必须在指令模板中加载库吗?

template.html:

<script src="libraries/jquery-slider.js></script>
<my-slider></my-slider>

还是我必须以不同的方式加载/注入jQuery库,才能访问其功能?

好吧,让我们假设您有一个主模块。那么您的index.html结构将如下所示:

<script src="js/main.js></script>

然后添加另一个模块,它是库的接口/绑定提供者:

<script src="js/library-binding.js></script>
<script src="js/main.js></script>

问题来了,你需要把图书馆本身包括在某个地方。这里有两个主要选项:

延迟加载,或者当您想在即将使用库时立即加载库时使用的方法。您需要在指令实现内部执行此操作,这可能会导致一些问题,因为您将被迫延迟元素呈现,直到加载库为止。此外,如果页面上有多个元素,您将遇到另一个问题:您将多次加载库,这可能是冲突的根源,您可能需要关心它,例如,设置某个全局变量,该库已加载,您不需要再加载它(此外,在这种情况下,它应该注入<head>部分)。

总是与接口模块一起加载库,这样更清晰、更简单;然而不管是否使用它都将加载CCD_ 3。

我个人的偏好是第二种方式,但你真的应该看看什么最适合你的特定项目。

因此,在这种情况下,index.html结构应该看起来像

<script src="js/library.js></script>
<script src="js/library-binding.js></script>
<script src="js/main.js></script>

或者,还有什么更好的

<script src="js/library-and-library-binding.js></script>
<script src="js/main.js></script>

在这种情况下,模块文件中的所有依赖项都是自包含的。

最新更新