第三方类库如何使用模块加载

发布于 2022-09-01 12:25:49 字数 1055 浏览 19 评论 0

需要给组里其他同事提供一个类库,这个类库涉及到服务调用、页面操作等,总体来说涉及到的功能还是不少,我在实现的时候是基于backbone的,分模块组织,不同模块分散在不同文件中,本地测试是将所有的js文件加载到页面中。

随着功能增加,我觉得这种方法不好,很多加载的功能可能都用不到,所以我想到了模块加载器如requirejs这种。

改造到requirejs难度也不大,问题是我觉得作为一个第三方类库用requirejs是不是不太合适? 如果客户端自身用了一个跟我版本不一致的requirejs会怎么样? 而且,require js的入口放到那里?比如:

require.config({
  .....
})

必然不能放到我的代码里,因为客户端也可能自己需要配置自己的依赖,但是由客户端控制的话,我怎么配置我类库的依赖?

我不希望将自己类库的模块暴露给外面,只希望对客户端来说API是一致的,比如

var userPanel = new xx.UserPanel();

当这个UserPanel初始化的时候他可能异步加载相关的js、模板等,也可能啥都不做(相关的js、模板已经在本地了),我希望这个内部实现对客户端是关闭的。

举一个明显的例子,打开腾讯地图,下图是资源加载完成,鼠标放到一个热点上的图:

clipboard.png

当点击那个热点之后:

clipboard.png

因为信息窗的弹出,因此相关的资源被加载了,但是这个过程对用户是不可知的,客户端不需要知道他有一个名字为infowindowimplement的模块,对客户端来说只需要

new InfoWindow()就够了。

有没有什么办法实现这一点?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文