网络编程
位置:首页>> 网络编程>> 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
投稿

猜你喜欢

手机版 网络编程 asp之家 www.aspxhome.com