web程序模板的各种实现方式

来源:互联网 发布:如何打底妆 知乎 编辑:程序博客网 时间:2024/06/03 20:10
现在很多程序为了追求界面的可定制,都提供了模板功能。用户可以选择自己喜欢的界面。模板的实现方法很多,如何找到一个克定制性强且高效率,基本不影响性能的方法呢?

我先例举几种都被使用过的方法

1、css控制
准确的说这种方法不算模板了,就是html是固定的,但提供了多个css文件,完全依赖css来控制背景图片、图片或者表格和层的样式。这个方法的实现我就不说了,非常简单,只要给不同的用户链接不同的css文件就可以了

优点:对性能完全没有影响
缺点:有局限性,不能改动页面布局

2、读取模板文件,把标识符替换为内容并输出
可以使用多个文件夹,每个文件夹都是一套模板,每个文件夹里都有文件名一样的html文件。但他们的内容是不一样的。当需要显示页面时,服务器端的程序根据用户的选择,去读取相应的模板文件夹里的文件内容,然后替换模板里的一些标识符(例如 $subject 被替换为文章标题,$content 被替换为文章内容),最后输出。当然我主要只是阐述原理,实际上的实现比这要复杂一些,包括缓存的处理,否则每次去读取.html模板文件性能很差。

优点:模板灵活程度很高,可以随便改动页面布局
缺点:即使对读取模板使用缓存,也仍然影响性能。因为替换标识符的性能显然也好不到哪里去。同时,模板里只能使用标识符,不能直接调用.cs代码文件中的任何变量和方法。

3、动态载入.ascx用户控件
这是cs一直采用的做法,受cs影响,也是国内很多人采用的做法。此做法也可以使用多个文件夹,也是每个文件夹一套模板。只是模板文件名不是.html而是.ascx。当需要显示页面时,服务器端的程序根据用户的选择,直接使用 LoadControl() 方法来载入.ascx文件。

优点:模板灵活程度很高,可以随便改动页面布局,可以直接调用.cs代码文件中的变量和方法
缺点:影响性能,且模板可读性不高,因为模板里不是使用类似$subject这样的标识符,而直接使用了代码快(比如<%=subject%>)

4、读取模板文件,不替换标识符,直接生成一个aspx文件供系统使用
对用户来说,这个方法实现出来的效果和第二种方法完全一样。也是多个文件夹多套模板,同样是html文件做模板。唯一不同的是,html模板文件只有在系统启动的时候才会被读取一次,然后自动转换为aspx文件并保存在硬盘上。举个例子: 模板中的 $subject 用正则表达式找出并替换成 <%=subject%>。当然,新生成的aspx文件应该和原来的html模板保持同样的文件夹结构。

关键是用户怎么切换界面。其实说白了就一个字:Url重写。多套不同的模板,现在通过处理,其实就是多套不同的aspx文件了,在不同的文件夹下,显然,可以在url重写之前就获得用户的设置,根据用户的选择rewrite到相应的目录中去。

当然,实际实现起来比我讲的要复杂很多。

优点:模板灵活程度很高,可以随便改动页面布局,可以直接调用.cs代码文件中的变量和方法,几乎不影响性能,模板可读性和方法2一样。
缺点:增加启动时间。


欢迎大家补充其它方法。
 
原创粉丝点击