用Perl 来创建可重用的Web应用程序(4)


对 HTML::Template 的改进
    同时,该模块也有弱点。有两种类型的模板标签:  和  。这对于 HTML 编码人员来说有些不便。第一种不适合使用验证器的人。第二种不够鲜明。此外,两种类型无法被像 > 这样的 HTML 结构所接受。浏览器无法正确显示这类代码。另一个问题出现在和 JavaScript 同时使用模板的时候(例如,试着在浏览器窗口中打开 HTML::Template 2.2 模块中的 /templates/long_loops.tmpl)。
    执行依次打开及关闭一个额外标签(两者均可能为空)会变得更加有效。一些句法类型也能起到帮助作用。一部分 HTML 设计人员更喜欢用在 PHP 中的  标签,或用在 ASP 中的  标签。另外, _TMPL_TAG 能在  标签而不是  中被有效使用。
    可能还需要其它改进。当然,一个 HTML::Template 的新的和特定的派生类可能会有用。这就需要您复制并编辑巨大的 _parse() 方法,该方法是模块的核心。另一个更为灵活的解决方案是在未来能得以简便、快速地升级的对象技术基础上创建一个新的模块。遗憾的是您不能在 HTML::Template 模块中实现这一步。
用 CGI::Application 创建可重用的 Web 应用程序
    CGI::Application 模块是专为创建可重用的 Web 应用程序而设计的,它使用了对象技术,并包括了 CGI 和 HTML::Template 模块。这一模块的观念简单而有效:应用程序驱动 Web 页,但反过来则不成立(就像 PHP、ASP、JSP 和 EmbPerl 等等)。Web 应用程序代码能保存在单个文件(模块)中。此外,该文件能包含完整的控制代码(客户端与 Web 页以及数据库和操作系统界面之间的交互作用)。
    CGI::Application 模块对于大多数 Web 应用程序(包括留言簿)来说都是一流的解决方案。使用该模块能轻易地创建一个新的和特定的派生类,它带有新的方法和经过改进的基础类。还可以有一个继承下来的构造程序(有着留言簿专用的新参数)和一个继承下来的 load_tmpl() 方法(举例来说,若用特定的模板模块来代替 HTML::Template)。
结论
    这种由受着单个 Perl 模块控制的 Web 应用程序来驱动 Web 页(模板)的设想对交互式 Web 应用程序特别有效。模板同样能驱动应用程序(在 CGI::Application 和 HTML::Template 模块中就不存在该功能)。留言簿说明了这种执行:模块形式包括了“名称”、“电子邮件”和“消息正文”等字段。由于不必在脚本中进行直接的字段定义,这些字段能由脚本轻易地从模板中获得。因此,我们就有了一个有重用性的应用程序:要修改应用程序,只需编辑模板就行了。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wzwxjz.html