网络编程
位置:首页>> 网络编程>> JavaScript>> 客户端模板的应用(2)

客户端模板的应用(2)

作者:Sheneyan 来源:蓝色经典 发布时间:2007-05-11 16:50:00 

标签:模板,ajax

模板这个概念我想大家都很熟悉了吧,就好像dw里的模板、php里的模板、word里的模板……这里就不多解释了。我们来说说我们用模板的目的。

一般来说,我们应用模板的原因都不外乎这两点:我不想老是做重复的劳动(如dw和word的模板),我想把表现和数据分开,因为我是程序员,我不懂界面的事或者我希望能够很方便地修改(如php的模板或jsp的taglib)。而我现在要说的,就是要做第二点:分离表现和数据,让html做它该做的事情,而其它的,交给模板来做吧。

呵呵,其实这两个理由是有相当一部分重复的,因为避免做重复的劳动,实际上就是将需要重复做的事情抽取出来做成模板,而对于网站、对于程序来说,这块重复的工作就是表现!而我一开始考虑客户端模板的原因也是因为我不想做三个页面,而这三个页面的修改频率也许会非常高

那模板应该用在哪里呢?到处都用吗?错!客户端模板的技术其实现在应该算相当成熟了,我在不少地方都看见过类似的实现,而目前最有名的就是q-zone了,你在q-zone的某处查看源代码,你会发现一大堆类似[%或<%或{%的标记,有时候会觉得自己是不是眼花,居然在客户端看见asp的代码?下面就是q-zone的典型代码:


  <li><a href="javascript:checkGoCmtPriv('[%=@albumid%]','[%=@lloccode%]')" title="[%=@content%] 由 [%=@nick[('__VAR__').unHtmlReplace()]%] 于[%=@datetime%]发表 " class="mode_photo_a">[%=@content[procContent('__VAR__')]%]</a><img class="author-display" style="cursor:hand" onclick="DelRecentCmt('[%=@albumid%]', '[%=@lloccode%]', '[%=@cmt_id%]')" src="http://imgcache.qq.com/qzone/client/photo/images/icon_del.gif" alt="删除该最新评论" /></li>


我为什么反对到处使用客户端模板呢?理由有二:

  • 我希望能够对搜索引擎友好!就现状来说,搜索引擎并不认识利用js加载的数据,而如果你希望客户能够从搜索引擎中看到你的网站,那你就得对搜索引擎好一点,投其所好,多给它一点它喜欢的内容。呵呵,不信的话,去baidu或google搜索内容吧,比如搜索周杰伦,你会不会对这样的结果觉得吃惊呢??
    baidu:http://www.baidu.com/s?wd=%D6%DC ... one.qq.com&cl=3
    google:http://www.google.cn/search?comp ... ne.qq.com&meta=

  • js的性能问题要求我们必须尽可能地将它用在刀刃上。你可以反驳说你的js很牛,你可以构架出完善的js体系,对客户端的要求很低,等等诸如此类的理由。但我可以肯定地说,大部分人在实现中大项目的js体系时,并没法将js的性能要求摆在第一块,因为大系统的需求纷繁复杂,能够把客户的需求全部实现就要偷笑了,谁能保证性能一定特别好?了不起我把内存泄露的问题尽量解决就算很对得起客户了~呵呵,别摇头,至少这是我现在工作的现状。

合理地使用一项技术,无论它多么时髦,多么酷,被多少专家目为不二选择,适合你才最重要!

我的想法是将客户端模板技术应用于那些使用ajax(或类似技术)来动态增改页面内容的地方,因为使用了ajax的技术的目的首要就是提高用户的体验,而不是搜索引擎的友好,比如留言的动态加载,比如评价的异步写入,比如rss内容的自动抓取(如果你告诉我你整个站都应用了ajax,你的整个站完全不需要刷新,你认为你给用户非常好的体验,请容许我bs你,谢谢)。对于这种需求,我们就可以放心大胆地使用客户端模板技术而不用担心我上面提及的两个理由(当然,性能还是得注意,别太大意了)。

0
投稿

猜你喜欢

  • VBScript似乎已经成为ASP服务器端开发的首先语言,VBScript函数库丰富、而且使用起来也很容易上手,即使平时不太编程的朋友,只要
  • 刚开始时,这个表的字段很少(10个以内),前开发者把这个表的所有存储过程与触发器以及表函数全是写死了。用户每添加一些字段,都需要手动去更改这
  • 会员注册以后,有些会员可能会遇到忘记登录密码的问题,因而网站具备“找回密码/忘记密码”功能不仅是必须的,而且是服务贴心的具体表现之一。在此,
  • 记得上次电梯按钮讨论中有朋友提到日本的无序电梯,我没有太明白意思。除了各位大师提出的无厘头方案,也有不少超前的创意,好多都值得继续思考和探索
  • SQL Server数据库查询优化的常用方法总结:本文中,abigale代表查询字符串,ada代表数据表名,alice代表字段名。技巧一:问
  • 你是否曾经想在数据库中存储一个日期而没有时间部分,或者想存储一个时间值希望有更高的精度?在SQL Server 2008的介绍中,微软介绍了
  • 成天都要与样式打交道的朋友,相信对CSS选择符(CSS Selectors)都不会陌生。不过对于刚接触或者还不是很熟悉css的朋友来说,能够
  • 虽然今年名义上已经不再管人了,但也不得不掺和进很多人事,这里想简单说说,即使不能帮助这个行业的从业者规划职业道路,也算是把之前摸过的路小结一
  • 测试需求 为了更好的测试你的ASP程序,你首先需要决定你的程序将来需要面对多大的压力。简单的说,压力或负载可以分解成以下数字:· 最低用户数
  • 我对这两种连接方式认识不够深,似乎朋友们对此也没有定论。请问哪一种更好呢?DSN是采用数据源的连接方式,其使用方法是: Conn.
  • 当服务器必须提供与两个或更多个网络或网络子网的连接时,典型的方案是使用多宿主计算机。此计算机通常位于外围网络(也称为 DMZ、外围安全区域或
  • 原文:http://www.htmldog.com/guides/htmlintermediate/badtags/十六 有害的标签 Bad
  • 如何做一个文本书写器?我们有下面的的函数,可做“文本书写器”:<%function WriteToFile(FileName
  • 数据库连接:<% set conn=server.createobject("adodb.connection&q
  • &ldquo;正则表达式&rdquo;对象,我们就可以非常方便的对各种数据进行合法性的校验了。首先,让我们来了解一下究竟什么
  • 1、Dreamweaver中的复制我在网页中复制的文字,粘贴到Dreamweaver中时,它总是带有原来网页的格式,请问如何只复制其中的文本
  •  <% Function ReplaceUrl2(HTMLstr) Dim n,st
  • asp日期转换星座函数,参数是日期型function astro(birth)astro=""if 
  • 自从SQL Server 2005推出后,因为有了更好的性能,所以有很多与SQL Server 2000相关的应用程序需要升级到这个版本。但
  • 1.建立设计规范的意义        建立设计文档的根本目的
手机版 网络编程 asp之家 www.aspxhome.com