数据和显示格式的分离有许多优点,首先是修改格式和修改内容互相不冲突,避免因为其他问题导致数据丢失或者格式难以修改的问题。其次是存储的问题,因为网络速度相对较慢,如果可以直接针对要修改的部分而进行修改,可以解决速度过慢的问题。
直接针对更新的部分进行修改、添加,而不需要改动其他内容部分。
一个好的站点,页面的安排应该能够自动适应浏览器,也就是在每一种浏览器中都能够正常显示(当然,太老版本的不能算)。
实现数据和显示格式的分离存放主要可以使用如下几种技术:
纯XML技术
使用XML语言编制和组织页面,使用XSL或者CSS对XML数据格式化并显示在浏览器中
混合XML技术
使用XML语言编制和组织页面,把所有的XML数据当作一个“XML岛”存放在HTML页面,使用CSS和脚本对数据进行格式化显示
脚本技术
使用脚本的某一些特性,使数据和显示格式在有限范围内分离。
综合评估
由于浏览器的版本限制,使用XML及其相关技术在具体实现上尚欠理想,所以,采用脚本技术,对数据和格式进行有限度的分离,同时在有必要的情况下,可以方便地转换到XML技术。
分割存放数据和格式描述。用新闻作为例子,新闻的显示格式部分存放在一个文件中,而新闻的内容部分则分别存放在多个文件中。如果需要修改的话,可以直接下载较小的新闻内容文件进行修改,如果要添加的话,只要把原来新闻的一部分内容文件改一个名字,然后上载一个新内容的新闻文件就可以了。
浏览器的兼容性实现应该在能够容忍的范围内实现,也就是浏览器类型的检测不应该导致文件过长,下载速度过慢,页面应该尽量解决因为可能页面下载不全而导致脚本解释出错的问题。
本设计方案为一个补充方案,并不改变原有网站结构和内容格式,初期主要作用于新闻及其格式的编排,然后在设计效果评估之后,准备更新通讯录,以及其他适合数据重组的页面。最后在设计方案成熟的情况下,我们把留言板进行格式和数据进行重新排整。
新闻文件的文件名规则为 newsYYMM.js,其中yy和MM表示年份和月份,例如 news1215.js,news0131.js,news0504.js 分别表示12月15日,1月31日,5月4日更新的新闻
实现文件内容和显示格式的分离,依然拿新闻作为例子。文件的内容存放在两个部分中,一个部分是HTML文件,其中包含JAVASCRIPT代码用来格式化输出新闻的内容,同时针对浏览器类型作相应的优化,达到浏览器兼容性的目的。新闻的内容存放在另外一个文件中,是一个脚本文件.js,所有的内容都会被包含在一个JS数组中,整个新闻的数据结构如下:
struct NewsBlock{
String nextBlockName;
NewsData news[];
};
struct NewsData{
String headlines;
String content;
};
系统提供一组平面化的操作函数接口,以便界面进行有效的处理:
int NewsCount(); // 取得所有新闻的总数 String GetNews(int index); // 取得指定序号位置的新闻的内容 String GetNewsPart(int index, String partName); //取得新闻元素的某一部分(比如标题)
新闻数据文件(.js文件)中不包含任何格式显示信息。
其他的页面,如通讯录等,到要修改的时候,也按照这个原则组织。