模板引擎在MVC设计模式视图层中的应用.pdf
《模板引擎在MVC设计模式视图层中的应用.pdf》由会员分享,可在线阅读,更多相关《模板引擎在MVC设计模式视图层中的应用.pdf(6页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、http:/-1-模板引擎在模板引擎在 MVC 设计模式视图层中的应用设计模式视图层中的应用 王君健1,宋茂强2 1 北京邮电大学计算机科学与技术学院,北京(100876)2 北京邮电大学软件学院,北京(100876)E-mail: 摘摘 要:要:设计模式提高了软件设计过程和编码过程的复用度,提高了软件开发的效率。MVC就是设计模式中非常经典的一个。本文分析了一个开源的模板引擎库 Teng,讨论了此模板库在 MVC 设计模式视图层中的实际应用。关键词关键词:模式,MVC,模板,Teng 1.引引 言言 模式是一条由三部分组成的规则,它表示了一个特定环境、一个问题和一个解决方案之间的关系。每一个
2、模式描述了一个在我们周围不断重复发生的问题,以及该问题的解决方案的核心。将设计模式引入软件设计和开发过程的目的在于充分利用已有的软件开发经验,这是因为设计模式通常是对于某一类软件设计问题的可重用的解决方案。设计模式的最终目标就是帮助人们利用熟练的软件设计师的集体经验,来设计出更加优秀的软件。MVC 是非常经典的一个设计模式,全称是 Model-View-Controller,即模型-视图-控制器。它是 20 世纪 80 年代为编程语言 Smalltalk-80 发明的一种软件设计模式,至今已经被广泛使用。MVC 的视图层是用户与系统交互的界面,主要是用于用户数据的输入,并向用户展示结果。输入与
3、返回界面在内容本质上是相同的,但是由于用户对界面的要求语言、界面颜色或是显示方式不同,如果每个相应的配置都设计一个界面,那么就需要若干个界面,而且由于这些界面在内容本质上是相同的,只是显示方式不同,设计上就会产生很大的冗余,进而影响到编码。如何把显示方式和显示内容分开控制呢?模板正是解决此问题的一种方法。我们可以把内容做成模板,显示作为配置信息,最后,页面生成器用模板和配置信息一起生成满足用户特定要求的界面,展现在用户眼前。2.MVC 设计模式设计模式 MVC 把应用程序分成 3 个核心模块:模型(Model)、视图(View)和控制器(Controller),它们分别担当不同的任务1。如图
4、1 所示。http:/-2-图 1 MVC 设计模式 2.1 视图视图 视图是用户看到并与之交互的界面。视图向用户展示用户所关心的业务数据,也能够接收用户输入的数据,但是,视图并不能进行任何实际的业务流程处理。视图可以向模型查询业务数据,但不能直接改变模型中的业务数据。视图还能够接收模型发出的业务数据更新事件,从而对用户界面进行同步更新。2.2 模型模型 模型是应用程序的主体部分。模型表示业务数据和业务逻辑。一个模型能为多个视图提供业务数据。同一个模型可以被多个视图重用。2.3 控制器控制器 控制器接收用户的数据并调用模型和视图去完成用户的请求。当用户在试图上选择按钮或菜单时,控制器接收请求并
5、调用相应的模型组件去处理请求,然后调用相应的视图来显示模型返回的数据。2.4MVC 处理过程处理过程 首先用户在视图提供的界面上发出请求,视图把请求转发给控制器,控制器调用相应的模型来处理用户请求,模型进行相应的业务逻辑处理,并返回数据。最后控制器调用相应的视图来显示模型返回的数据2。3.模板引擎模板引擎 由于在设计模式的应用中使用模板的思想还不是特别广泛,所以开源的模板库并不多见。本文讨论一个用 C+语言编写的模板库Teng3。Teng 严格地把应用逻辑与显示逻辑区分开来,后台程序取得所要呈现给用户的数据并把它们提供给模板引擎,显示页面设计者写出模板。最后,模板引擎选择相应的模板,把用户数据
6、插入到显示页面的相应位置,再根 View 显示模型的业务数据 接收用户请求 把请求传给控制器 Model 包含业务数据 响应数据查询 处理业务逻辑 通知视图业务数据更 Controller 接受用户请求 调用相应模型响应请求 选择视图展示结果 http:/-3-据配置设置显示页面的一些属性,生成页面,展现给用户。后台程序设计者和页面设计者需要注意的就是数据结构的一致性。3.1 模板的语法特性模板的语法特性 模板的语法与 HTML 语法有些相似,都是由这两个符号括起来的标签,标签里面的由模板引擎进行解释,标签外面的原样输出。语法如表 1 所示。表 1 语法表 符号 说明 举例 注释 模板嵌套,可
7、多级嵌套 段落格式化的开始 段落格式化的结束 其中 value 的可选值有:nowhite,删除这段中所有空格 onespace,把这段中所有的空格合成一个。striplines,删除段中行首和行尾的空格,空行除外。joinlines,删除段落中下一行行首的空格或一个空行。nowhitelines,删除段中空行 noformat,结束当前的格式化。hello world 应用程序中数据的引用 引用结束$variable 条件表达式,由条件来控制输出内容 b?hello world !定义变量 使用变量 使用表达式 =、+、!、&、&操作符,包括关系、算术、逻辑、位运算符 3.2 模板引擎的数据
8、结构模板引擎的数据结构 模板的数据结构是由三个类组织起来的:Fragment_t,FragmentList_t,and FragmentValue_t。FragmentValue_t 是数据结构表中最基本的一项,它包括两个成员变量:一个是字符串型的 value(string value),它表示存储的数据;一个是 FragmentList_t 型指针(FragmentList_t*nestedFragments),如果为空,则此 FragmentValue_t 就是一个数据单元,如果非空,则http:/-4-FragmentValue_t 是一个指向一个 FragmentList_t 的指针。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 模板 引擎 MVC 设计 模式 视图 中的 应用
限制150内