为了使各个模块能够独立运行,每个插件需要有自己的:配置/逻辑代码/缓存/UI,有插件之间的接口,通过接口来实现组合。
web开发,UI的灵活程度要求很高,各个插件可以通过控件(控件访问自己的缓存数据也是可以保证速度的)提供插件,控件可以定义样式和数据显示布局(layout);也可以通过代码片断来提供插件。这样在我们的站点就可以成为变形金刚了,主页面layout的改变和插件控件的灵活组合,可以做出各种各样的页面,并且插件控件自己也有样式和布局和自己的数据源。
目前大部分CMS的模版都是采用标签来开发,没有分成插件模块。
以cnBlogs为例:
首页 页面layOut:
┏Header
|┠blogTitle
||┠lnkBlogLogo
||┠blogLogo
|┠navigator
||┠navList
||┠blogStats
┠main
|┠mainContent
||┠forFlow
|||┠day
||||┠dayTitle
||||┠postTitle
||||┠postCon
||||┠clear
||||┠postDesc
┠sideBar
|┠sideBarMain
||┠newsItem
|||┠catListTitle(class)
||┠leftcontentcontainer(id)
|||┠catListEssay
||||┠catListTitle
||┠catListLink
|||┠catListTitle
||┠catListNoteBook
|||┠catListTitle
||┠catListTag
||......
这是首页的主要页面布局,这些页面布局能否根据功能划分为功能插件单元呢?这些单元可以叫做元插件,这些插件可以定义样式和布局。
比如day、Header、newsItem、leftcontentcontainer、catListLink、catListNoteBook 、catListTag这些可以单独拿出来封装一下,封装后有样式、布局、子元素。
可以封装成插件控件也可以封装成插件模版。