第三方类库如何使用模块加载
需要给组里其他同事提供一个类库,这个类库涉及到服务调用、页面操作等,总体来说涉及到的功能还是不少,我在实现的时候是基于backbone的,分模块组织,不同模块分散在不同文件中,本地测试是将所有的js文件加载到页面中。
随着功能增加,我觉得这种方法不好,很多加载的功能可能都用不到,所以我想到了模块加载器如requirejs这种。
改造到requirejs难度也不大,问题是我觉得作为一个第三方类库用requirejs是不是不太合适? 如果客户端自身用了一个跟我版本不一致的requirejs会怎么样? 而且,require js的入口放到那里?比如:
require.config({
.....
})
必然不能放到我的代码里,因为客户端也可能自己需要配置自己的依赖,但是由客户端控制的话,我怎么配置我类库的依赖?
我不希望将自己类库的模块暴露给外面,只希望对客户端来说API是一致的,比如
var userPanel = new xx.UserPanel();
当这个UserPanel初始化的时候他可能异步加载相关的js、模板等,也可能啥都不做(相关的js、模板已经在本地了),我希望这个内部实现对客户端是关闭的。
举一个明显的例子,打开腾讯地图,下图是资源加载完成,鼠标放到一个热点上的图:
当点击那个热点之后:
因为信息窗的弹出,因此相关的资源被加载了,但是这个过程对用户是不可知的,客户端不需要知道他有一个名字为infowindowimplement的模块,对客户端来说只需要
new InfoWindow()就够了。
有没有什么办法实现这一点?
我的节操都还在
10 years, 2 months ago