html主要通过内置的<script>,<link>, <img>等标签引入外部的资源文件,一般的Web框架并没有对这些资源文件进行抽象,因此在实现组件封装时存在一些难以克服的困难。例如一个使用传统JSP Tag机制实现的Web组件中可能用到js1.js, js2.js和css1.css等文件,当在界面上存在多个同样的组件的时候,可能会生成多个重复的<script>和<link>标签调用,这将对页面性能造成严重的负面影响。资源管理应该是一个Web框架的内置组成部分之一。在Witrix平台中,我们主要借助于tpl模板引擎来输出html文本, 因此可以通过自定义标签机制重新实现资源相关的html标签, 由此来提供如下增强处理功能:
1. 识别contextPath
tpl模板中的所有资源相关标签都会自动拼接Web应用的contextPath, 例如当contextPath=myApp时
<script src="/a.js"></script> 将最终输出 <script src="/myApp/a.js" ...>
2. 识别重复装载
<script src="a.js" tpl:once="true"></script>
tpl:once属性将保证在页面中script标签实际只会出现一次.
3. 识别组件内相对路径
开发Web组件时,我们希望所有资源文件都应该相对组件目录进行定位,但是直接输出的<script>等标签都是相对于最终的调用链接进行相对路径定位的. 例如在page1.jsp中调用了组件A, 在组件A的实现中, 输出了<script src="my_control.js"></script>
我们的意图一般是相对于组件A的实现文件进行定位, 而不是相对于page1.jsp进行定位. tpl模板引擎的相对路径解析规则为永远相对于当前文件进行定位. 例如
<c:include src="sub.tpl" />
在sub.tpl中的所有相对路径都相对于sub.tpl文件进行定位.
4. 编译期文件有效性检查
在编译期, tpl引擎会检查所有引入的资源文件的有效性. 如果发现资源文件丢失, 将直接抛出异常. 这样就不用等到上线后才发现文件命名已修改等问题.
5. 缓存控制
浏览器缺省会缓存css, js等文件, 因此系统上线后如果修改资源文件可能会造成与客户端缓存不一致的情况. 一个简单的处理方式是每次生成资源链接的时候都拼接文件的修改日期或者版本号, 这样既可利用客户端缓存, 又可以保证总是使用最新版本. 例如
<script src="a.js"></script>将会输出 <script src="/myApp/myModule/a.js?344566" ...>
6. 字符集选择
为了简化国际化处理, 一般提倡的最佳实践方式是坚持使用UTF-8编码. 但是很多情况下可能使用系统内置的GBK编码会更加方便一些, 另外集成一些既有代码时也存在着不同字符集的问题. 在Witrix平台中, 所有输出的资源标签都会标明对应的字符集, 如果没有明确设置就取系统参数中的缺省字符集.
例如 <script src="a.js"></script> 将会输出 <script ... charset="GBK"></script>
7. 缺省theme支持
为了支持多种页面风格, 往往不是简单的替换css文件即可实现的, 它可能意味着整个组件的实现代码的更换. Witrix平台中通过一系列缺省判断来简化这一过程. 例如如下代码表明如果设置了ui_theme系统参数, 并且对应的特殊实现存在, 则使用特殊实现, 否则系统缺省实现.
<c:include src="${cp:ui_theme()}/ctl_my_ctl.tpl" >
<c:include src="default/ctl_my_ctl.tpl" />
</c:include>
分享到:
相关推荐
QT文件资源管理器是基于Qt库开发的一款应用程序,它提供了类似于操作系统内置文件管理器的功能,让用户可以浏览、操作和管理本地文件系统。Qt是一个跨平台的C++图形用户界面应用程序开发框架,支持Windows、Linux、...
很好的文件资源管理器,易语言编写。包含目录树和文件列表,文件列表有多种浏览方式可供选择。这是一个很好的实例,对二次开发很有帮助。
在本文中,我们将深入探讨如何使用Microsoft Foundation Class (MFC) 库来实现一个文件资源管理器的示例。MFC 是微软为Windows应用程序开发提供的一套C++类库,它封装了Windows API,简化了窗口、对话框、控件等的...
使用java开发一个文件管理系统,通过软件达成对电脑上文件的移动复制粘贴删除等功能。
为了区别于MS的资源管理器,我们设计成初级Java练习者的java,class,mf文件等资源文件管理器 功能如下: 设置类路径。 设置扩展路径。 过滤显示*.java,*.class,*.mf,*.jar,*.war,*.ear,*.properties等...
然而,题目要求从“c++资源文件”的角度出发,因此这里需要进行一定的转换,将操作系统的基础知识与C++编程语言中的资源管理和使用相结合。 ### C++资源文件知识点 #### 一、C++中的资源文件概念 在C++编程中,...
在WindowsSourceManger这个压缩包文件中,很可能包含了与Windows资源管理器相关的源代码、文档或工具。源代码可能是对资源管理器功能的实现或改进,比如添加新的特性、优化性能或者修复已知问题。文档可能详细阐述了...
文档《android资源文件详解》对res文件夹下的anim、drawable、xml等资源文件进行了详细介绍。 anim文件夹用于存放动画资源,分为两种类型:一种是补间动画(tweened animation),它可以通过改变XML文件中的属性来...
通过excel来集中管理资源文件,此工具用于从excel文件中生成资源文件,默认支持两种语言,不过可以简单修改代码来支持更多语言。 2.优点: 每次添加资源文件时,可以只在excel文件集中编辑,不必到各个资源文件中去...
在“wpf简单文档管理系统”中,开发者利用WPF的强大学习库和功能来创建一个可以展示文件夹结构并管理其中文件的系统。这个系统可能采用了TreeView控件,这是一个常用来呈现层次结构数据的可视化组件。 **TreeView...
文件资源管理器是对计算机系统里面所有文件的检索,并按一定的等级排列。
本项目旨在构建一个基于Web的文件资源管理系统,旨在解决传统纸质文档管理中的诸多问题,如高成本、不便保存和查找、难以共享等。随着信息技术和网络技术的进步,电子文档管理成为了提高办公效率和节约成本的重要...
【资源管理器】是计算机操作系统中的一个重要组成部分,它允许用户以图形化的方式浏览、操作和管理文件及文件夹。在Windows系统中,资源管理器是一个非常直观且实用的工具,而【仿windows资源管理器源码】则为开发者...
3. 文件预览:高级的资源管理器可能支持文件预览,比如图片、文本文件或文档的快速查看。这可能需要利用第三方库或者.NET框架提供的控件。 4. 多选和拖放:为了提高用户体验,C#资源管理器可能会实现多选文件和拖放...
例如,要搜索所有类型为“文档”的文件,可以输入“type:文档”,文件资源管理器将显示所有类型为“文档”的文件。 九、搜索文件大小 在搜索框中,可以使用“size”关键字来搜索文件大小。例如,要搜索所有大小...
本资源包聚焦于"C#资源管理器"的实现,它是一个用于浏览和管理计算机文件系统的应用程序,类似于我们熟悉的Windows资源管理器。下面,我们将深入探讨相关知识点。 1. **C#基础** C#是微软公司推出的一种面向对象的...
"教学资源库管理平台V4.0"是一个专为教育领域设计的系统,旨在高效管理和分发教育资源。这个平台由LinBSoft开发,提供了一种便捷的方式来存储、组织和访问各种教学材料,如课件、视频教程、文档、试题等。用户可以...
总结来说,实现一个基于VC的Windows资源管理器涉及的主要步骤包括:使用CTreeCtrl构建目录结构,处理用户交互,实现文件操作功能,以及优化用户界面。通过熟练掌握MFC和Windows API,你可以创建出功能完备且用户友好...
资源管理器是Windows操作系统中的一个核心组件,它提供了一个用户友好的界面,用于浏览、管理和操作计算机上的文件、文件夹及各种系统资源。在本文中,我们将深入探讨如何使用Microsoft Foundation Class (MFC)库来...