我已经开始研究javascript框架的架构。
我不想在这里重复发明轮子,特别是关于浏览器的怪癖,我知道,在某种程度上,我将不得不依赖一些常用的库来处理低级问题。
问题是,我不确定如何依赖外部库来实现某些功能(例如dom操作),而不将其与我的设计捆绑在一起。
实际的例子将有助于提出更好的观点,但我还没有处于设计阶段,我只是试图避免从错误的角度出发。
因此,我正在寻找一些例子、指导方针、最佳实践或可能对这种情况有所帮助的模式。
有什么见解吗?
编辑:澄清一下我为什么要这么做。
我的目标是构建一种类似于应用程序框架的东西,而不是像jQuery这样的大多数传统库。
考虑分层架构,其中的库将适合基础架构层(根据Evans在领域驱动设计中的定义),并处理事件、dom遍历和操作等事情。
发布于 2009-11-24 23:43:14
隔离你的代码:
在其单独的代码部分中,尽可能充分地使用外部库。
以jQuery为例,只需指定一个与jQuery接口的部分,然后在该库的该部分中使用jQuery,就像没有明天一样,并为其提供其他代码独占使用的接口函数。
坦率地说,如果你将一个库集成到你的代码中,并试图使它足够通用,以至于你可以简单地将它与其他东西交换出去,那么你可能会使这个库中立到甚至不包含它的地步。
如果您最终要交换库,那么您可能需要重写,但要做好准备,给与库接口的代码单独的部分,这样您就能够用这些外部库编写不那么通用、功能更强大的代码,从而节省大量的工作。
发布于 2009-11-24 23:35:57
这是一个非常广泛的问题,但如果我是您,我会使用jQuery作为基础。它也是一个非常容易扩展和添加功能的库。
发布于 2009-11-24 23:37:20
我建议拿一份ExtJS的拷贝,看看他们是如何为替换其产品的底层核心提供支持的。您可以使用它们的高级库,例如网格、树等,但选择使用YUI或prototype来代替它们的Ext核心。
这应该会给你一个很好的起点。
编辑以回答评论:
下载ExtJS后,请查看"adapter“文件夹。在那里,您将看到用于使ExtJS与其他库协同工作的各种适配器。您很快就会看到它们是如何定义函数的,而这些函数又利用了适当的底层库。
https://stackoverflow.com/questions/1790806
复制相似问题