如果是一个临时项目,属于做完收工,不考虑后续扩展改进升级等问题的话,那么直接弄一份DWZ的拷贝放到项目下修修改改没有什么问题;但如果是一个产品,或者是一个基础的开发框架,那么更友好的整合DWZ应当是要考虑的问题。
我的应用场景是将DWZ整合到开发框架中,本身这个开发框架是需要持续改进的,所以我希望DWZ有新的版本时我可以更快的引入新的版本到开发框架中。
我不希望修改DWZ本身发布包中的任何文件,这样我就可以在下一次升级时直接将这些文件替换成新的,而不用考虑我曾修改过其中的某一块代码会被新版本的文件覆盖掉。
DWZ发布的文件可以放置在一个独立的目录下,结构像这样:
再创建一个用于修正DWZ的目录,结构像这样:
fix.js中可以写入对DWZ的一些修正或扩展方法,例如覆盖DWZ的一些js方法。而thems目录下的结构与DWZ是一致的,这里可以修正DWZ的core.css或皮肤下的style.css以及图片等。
除了DWZ本身所带的组件以外,或许我们还需要有自己的一些组件或自定义样式,那么依然可以按照上面的目录结构再创建一个扩展目录,像这样:
一旦使用了DWZ并且你希望应用系统能够无缝的使用DWZ提供的换肤功能,那么按照DWZ的换肤机制来设定你的扩展是最简便合理的一种方式,所以目录结构应当是保持一致的。
DWZ的换肤机制是采用js动态的修改首页中引用的样式来实现的,它给每种皮肤定义了一个名称并设定了该名称的目录名,换肤时将default下的style.css更换为其他几个目录下的style.css,于是整个应用的皮肤就会被新的样式渲染。在dwz.theme.js中我们可以看到源代码。
由于上面我们扩展了两个相同结构的目录,所以DWZ换肤的代码应当做相应的修改,在触发theme方法时,我们同时替换三个目录下的style.css文件,当然你如果乐意,也可以是四个、五个。这一段代码我是写在fix.js中的:
/** 覆盖DWZ的theme函数,支持多个部分的样式替换。*/
$.fn.extend({
theme : function(options) {
var op = $.extend({
dwzTheme : "coo/ui/dwz/themes",
fixTheme : "coo/ui/fix/themes",
xuiTheme : "coo/ui/xui/themes",
appTheme : "themes"
}, options);
var dwzThemeHref = op.dwzTheme + "/#theme#/style.css";
var fixThemeHref = op.fixTheme + "/#theme#/style.css";
var xuiThemeHref = op.xuiTheme + "/#theme#/style.css";
var appThemeHref = op.appTheme + "/#theme#/style.css";
return this.each(function() {
var jThemeLi = $(this).find(">li[theme]");
var setTheme = function(themeName) {
var dwzThemeLink = $("head").find("link[href^='" + op.dwzTheme + "'][href$='style.css']");
var fixThemeLink = $("head").find("link[href^='" + op.fixTheme + "'][href$='style.css']");
var xuiThemeLink = $("head").find("link[href^='" + op.xuiTheme + "'][href$='style.css']");
var appThemeLink = $("head").find("link[href^='" + op.appTheme + "'][href$='style.css']");
if(dwzThemeLink.size() > 0) {
dwzThemeLink.attr("href", dwzThemeHref.replace("#theme#", themeName));
}
if(fixThemeLink.size() > 0) {
fixThemeLink.attr("href", fixThemeHref.replace("#theme#", themeName));
}
if(xuiThemeLink.size() > 0) {
xuiThemeLink.attr("href", xuiThemeHref.replace("#theme#", themeName));
}
if(appThemeLink.size() > 0) {
appThemeLink.attr("href", appThemeHref.replace("#theme#", themeName));
}
jThemeLi.find(">div").removeClass("selected");
jThemeLi.filter("[theme=" + themeName + "]").find(">div").addClass("selected");
if($.isFunction($.cookie))
$.cookie("dwz_theme", themeName);
}
jThemeLi.each(function(index) {
var $this = $(this);
var themeName = $this.attr("theme");
$this.addClass(themeName).click(function() {
setTheme(themeName);
});
});
if($.isFunction($.cookie)) {
var themeName = $.cookie("dwz_theme");
if(themeName) {
setTheme(themeName);
}
}
});
}
});
其中appTheme是指当前应用的主题目录位置。dwzTheme/fixTheme/xuiTheme已封装到基础开发框架中供所有应用共用,而appTheme只应用于当前应用系统,适用于针对当前应用系统定制样式,例如应用logo、首页头部样式等。
最后需要注意的一点是在首页的head中引入css和js时应当注意顺序,依次是dwz->fix->xui->app,因为这里应用了页面引入css和js时的覆盖特性,顺序是很重要的。
分享到:
相关推荐
这里我们详细探讨这两个工具的整合以及“操作都在头部”的实现方式。 DWZ(Design Without ZIndex)是一个基于jQuery的前端开发框架,它提供了一套完整的UI组件,包括布局、表单、对话框、提示、菜单等,使得开发者...
整合ThinkPHP和DWZ,开发者可以利用ThinkPHP的后台逻辑处理能力,如数据验证、权限控制、API接口等,同时利用DWZ提供的前端模板和交互效果,实现用户友好的界面。这样的结合,不仅让开发者可以专注于业务逻辑的编写...
2. **AJAX支持**:DWZ框架深度整合了jQuery,提供了便捷的Ajax操作,使得页面无刷新交互成为可能,提升了用户体验。 3. **页面布局**:DWZ提供了一套灵活的页面布局方式,支持栅格系统,方便开发者构建响应式页面。...
而DWZ则负责前端展示,提供用户友好的界面和交互效果,如DWZ的分页组件可以与后台的分页逻辑紧密结合,实现前后端的无缝对接。 具体实现时,开发者需要配置SpringMVC的DispatcherServlet、Controller、Service以及...
2. Ajax链接扩展:DWZ支持在当前页面的navTab中使用Ajax链接,允许开发者通过Ajax方式更新页面内容,而不必重新加载整个页面。 3. 组件扩展:DWZ提供了Tab组件、Accordion组件、Table组件等多种UI组件的扩展,帮助...
在本项目中,DWZ用于构建用户界面,提供友好的操作体验和高效的页面交互。 其次,ThinkPHP是一个广受欢迎的PHP开发框架,以其MVC(Model-View-Controller)架构、简洁的代码风格和强大的性能著称。在这个后台系统中...
- **如何整合第三方jQuery插件**: 确保插件与DWZ兼容,并按需引入。 - **Error loading XML document: dwz.frag.xml**: 确认XML文件路径正确且文件存在。 - **IIS不能用Ajax访问*.html后缀的页面**: 修改IIS配置,...
标题中的“dwz.rar_dwz_dwz struts”暗示了这是一个与DWZ(可能是Dynamic Web Zone的缩写)和Struts框架相关的压缩包。描述提到的“dwz+struts+仿habernate”可能意味着这个项目或教程是将DWZ、Struts以及一个模仿...
【标题】"dwz+SpringMVC+mybatis"是一个基于DWZ(Dynamic Web Project)前端框架、SpringMVC后端控制器以及MyBatis持久层框架整合的Web应用开发架构。这种组合通常用于构建高效、灵活的企业级应用程序,提供从前端...
7. 性能优化:DWZ框架注重性能,提供了数据懒加载、缓存机制等,以减少服务器压力和提高用户体验。 综上所述,“dwz的分页查询等”涵盖了DWZ框架在数据处理、页面交互、UI设计等多个方面的应用,体现了其在构建高效...
压缩包中的"dwz_jui"文件可能是DWZ与jQuery UI整合的资源包,包含了CSS样式文件、JavaScript脚本、图片资源等,用于构建符合jQuery UI风格的DWZ后台界面。 总的来说,DWZ是一个为中国开发者量身打造的高效后台管理...
整合DWZ与ThinkPHP,可以实现前后端的无缝对接。前端通过AJAX向后端发送请求,后端通过ThinkPHP处理请求并返回数据,再由DWZ渲染展示。这种分离式的架构有利于团队协作,同时也提高了代码的可读性和可维护性。 在...
通过学习和实践这个小项目,开发者可以深入理解Spring、iBatis和DWZ的集成方式,以及如何利用它们来构建一个完整的Web应用。同时,这也是一个很好的起点,可以帮助开发者进一步扩展和定制功能,以满足实际项目的需求...
【描述】:该系统展示了如何将DWZJS技术与ASP.NET框架整合,以实现Web应用程序的高效开发。DWZJS技术主要负责前端交互,通过JavaScript调用后台的一般处理程序(ASHX),实现数据的动态获取和更新。这种方式提高了...
1. **DWZ与MVC的整合**:了解如何在ASP.NET MVC项目中引入DWZ框架,设置CSS、JavaScript引用,确保前端页面能够正确调用DWZ的组件和功能。 2. **DWZ提示框的使用**:DWZ提供了一套完整的提示框机制,包括信息提示、...
### DWZ富客户端框架知识点...综上所述,DWZ框架以其强大的功能集和便捷的开发方式,在企业级Web应用开发领域占据了一席之地。无论是初学者还是有经验的开发者,都可以通过学习和实践DWZ框架来提升自己的前端开发技能。
- **数据交互方式**:由于DWZ框架是基于jQuery构建的,因此推荐使用AJAX方式进行数据交互。避免使用传统的服务器控件,以免造成页面的完全刷新。 - **服务端控件的使用**:如果确实需要使用ASP.NET服务端控件,则...
这是一个基于Java技术栈开发的通用后台管理系统,涵盖了Spring MVC、MyBatis、Shiro和DWZ框架的核心功能和实现方式。下面将详细讲解这些技术及其在系统中的应用。 首先,Spring MVC是Spring框架的一部分,主要负责...
整合SpringMVC与DWZ,可以让后端业务逻辑和前端展示更加紧密地协作,提供更流畅的用户体验。 在"springMVC+DWZ"的项目中,首先需要配置SpringMVC的DispatcherServlet,设置其映射路径以及加载相关的配置文件,如...