`
canonical
  • 浏览: 364565 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

资源文件管理

阅读更多

    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>

分享到:
评论

相关推荐

    易语言文件资源管理器

    很好的文件资源管理器,易语言编写。包含目录树和文件列表,文件列表有多种浏览方式可供选择。这是一个很好的实例,对二次开发很有帮助。

    MFC实现文件资源管理器示例

    在本文中,我们将深入探讨如何使用Microsoft Foundation Class (MFC) 库来实现一个文件资源管理器的示例。MFC 是微软为Windows应用程序开发提供的一套C++类库,它封装了Windows API,简化了窗口、对话框、控件等的...

    毕业设计基于SpringBoot的文档管理系统、资源管理平台项目源码+数据库

    本项目以SpringBoot为核心框架,结合Bootstrap前端UI库和MySQL数据库,构建了一个高效、易用的文档管理系统及资源管理平台,为用户提供了一站式的文件存储、检索和分享解决方案。 首先,SpringBoot是Spring框架的一...

    JAVA开发文件管理系统

    使用java开发一个文件管理系统,通过软件达成对电脑上文件的移动复制粘贴删除等功能。

    c++资源文件

    然而,题目要求从“c++资源文件”的角度出发,因此这里需要进行一定的转换,将操作系统的基础知识与C++编程语言中的资源管理和使用相结合。 ### C++资源文件知识点 #### 一、C++中的资源文件概念 在C++编程中,...

    资源管理器,类似WINDOWS资源管理器

    在WindowsSourceManger这个压缩包文件中,很可能包含了与Windows资源管理器相关的源代码、文档或工具。源代码可能是对资源管理器功能的实现或改进,比如添加新的特性、优化性能或者修复已知问题。文档可能详细阐述了...

    资源文件生成工具 Excel集中管理资源文件

    通过excel来集中管理资源文件,此工具用于从excel文件中生成资源文件,默认支持两种语言,不过可以简单修改代码来支持更多语言。 2.优点: 每次添加资源文件时,可以只在excel文件集中编辑,不必到各个资源文件中去...

    易语言高级资源管理器

    1. **文件浏览器**:允许用户浏览本地文件系统,选择和添加资源文件。支持常见的文件类型,包括图像、音频、视频、文本文件等。 2. **资源预览**:在不打开原始文件的情况下,提供资源的预览功能,让用户可以快速...

    仿windows资源管理器源码

    【资源管理器】是计算机操作系统中的一个重要组成部分,它允许用户以图形化的方式浏览、操作和管理文件及文件夹。在Windows系统中,资源管理器是一个非常直观且实用的工具,而【仿windows资源管理器源码】则为开发者...

    人力资源管理系统设计全套文档

    《人力资源管理系统设计全套文档》是一份详尽的资料集合,涵盖了从系统开发初期到后期运维的全过程。这个压缩包中的内容旨在为IT专业人员提供一套完整的人力资源管理系统的开发和实施指南。以下是对各部分文档的详细...

    C#资源管理器 C#资源管理器C#资源管理器C#资源管理器C#资源管理器

    3. 文件预览:高级的资源管理器可能支持文件预览,比如图片、文本文件或文档的快速查看。这可能需要利用第三方库或者.NET框架提供的控件。 4. 多选和拖放:为了提高用户体验,C#资源管理器可能会实现多选文件和拖放...

    Windows文件资源管理器,搜索框的使用技巧.docx

    例如,要搜索所有类型为“文档”的文件,可以输入“type:文档”,文件资源管理器将显示所有类型为“文档”的文件。 九、搜索文件大小 在搜索框中,可以使用“size”关键字来搜索文件大小。例如,要搜索所有大小...

    VC实现Windows资源管理器

    总结来说,实现一个基于VC的Windows资源管理器涉及的主要步骤包括:使用CTreeCtrl构建目录结构,处理用户交互,实现文件操作功能,以及优化用户界面。通过熟练掌握MFC和Windows API,你可以创建出功能完备且用户友好...

    关于资源管理器的实现

    资源管理器是Windows操作系统中的一个核心组件,它提供了一个用户友好的界面,用于浏览、管理和操作计算机上的文件、文件夹及各种系统资源。在本文中,我们将深入探讨如何使用Microsoft Foundation Class (MFC)库来...

    wince资源管理器

    7. **wince资源管理器的高级使用**:除了基本的文件操作,wince资源管理器还支持多种高级功能,如文件搜索、快捷方式创建、文件属性查看等。了解并熟练运用这些功能,可以提高在wince系统上的工作效率。 总的来说,...

    个人文档管理模块的资源

    【个人文档管理模块的资源】是一个专为个人用户设计的文档管理系统,它基于Java技术进行开发,旨在提供高效、安全且易用的文档存储、检索和管理服务。这个平台不仅涵盖了基本的文档上传、下载、分类和搜索功能,还...

    Android 文件资源管理器源码

    在Android平台上,文件资源管理器是一个非常重要的工具,它允许用户查看、操作和管理设备上的文件和目录。这里我们关注的是"Android 文件资源管理器2.0"的源码,这是一个包含两个主要模块的实现:文件管理和任务管理...

Global site tag (gtag.js) - Google Analytics