December 18, 2007
上次我们讨论了《 Wordpress插件DIY:使用API提高插件易用性 》, 这次我们来讨论一下使用javascript来提高wordpress插件的易用性; 不过我要申明一个原则: 一般情况下, 我不支持使用javascript, 我觉得javascript会增加客户端的资源占用, 同时javascript也是需要传输到客户端才能使用的, 这样的情况下, 会加大网站与客户端之间的流量, 也就是说网页的载入速度会变慢的, 而且如果采用的是addevent之类的格式的话, 好像必须等到网页全部载入完成之后才会发生, 如果你中间有一个问题影响了网页载入速度, 可会让人恨死的; 所以就算你要用javascript, 也请你用的简单点, javascript少一点, 这样可以加快网站的载入速度。
使用javascript来增加插件我还推崇一个原则, 就是实在没有办法的情况下才使用, 只要还有那么一丝的办法, 我觉得都不应该用javascript, 所以当我需要使用javascript来增加插件易用性的时候, 我总会问自己, 是不是真的没有办法了?(我一向认为使用服务器的资源比使用客户端的资源要来的人道, 来的合理)
下面进入正题, 来说说如何使用javascript来提高插件的易用性, 不过我写的插件就两个使用了javascript, 其中一个是逼不得已, 不得不使用(也就是说不是为了插件易用性, 而是不使用插件是没有用处的), 这个插件就是 wp thread comment, 对于这个javascript我就不做分析了; 另外还有一个插件的确是使用了 javascript 达到了提高插件易用性的目的, 这个插件是 wp paged comments, 我这里就来说说这个插件中我如何利用 javascript 的。
在我做 wp paged comments 之前, 有一个叫 paged comments 的插件, 这个插件说也是不需要修改模板的, 因为他自带了模板, 不过你也知道, 自带主题模板肯定是不全的, 所以对于部分用户来说, 还是很不爽的, 比如我用的主题他就没有, 我就必须自己修改我的主题模板才可以实现我自己的样式, 为此我最终就做了这么一个 wp paged comments 的插件。
评论分页的插件, 实现的机理是这样的:
最理想的方法是这样的: 直接获取设定值的评论, 然后显示评论和分页, paged comments 插件就是这么实现的;
但是 wordpress 没有提供相应的 API 接口可以让我获取自定义条数的评论(wordpress 给了这么一个空心汤团{// TODO: Use API instead of SELECTs.});
不得已我退而求其次, 仍旧使用wordpress的获取全部评论, 然后自己用 comments_array 这个 filter 截取我需要部分的评论(浪费了查询mysql的资源, 没办法, 我就寄希望于wordpress能尽快实现它的那个TODO), 幸好我觉得分页的次数也不可能多的, 应该没有特别的资源占用。
获得了评论接下来就是显示评论和评论页数, 这是一个难点, 因为所有的结构都是在comments.php中固定的, 没有任何接口可以改变这一点; 为此 paged comments 插件就开始使用自带的comments.php 文件来实现, 而我就使用 javascript 来实现了(招还有一个就是分析模板, 可分析模板的方法不及使用 javascript 来的兼容性好(不过我还是准备试试, 这个就是后话了)
我在这里使用 javascript 其实就是实现了在评论页中显示评论分页, 我在上面已经说过了, 因为所有的主题中都没有评论分页的(为啥要做啊, wordpress又没有提供评论分页), 所以要在显示评论之后再显示评论分页就是一个难点, 不能指望从 comments.php 中想办法(除非也是自己制作模板), 那就只能用javascript来分析dom结构, 然后在合适的位置插入评论分页, 这样可以直接使用插件而不再需要修改主题模板。
对于具体的 javascript 我就不分析了, javascript 就做了这两件事:
1、 查找最后一条评论, 如何得知最后一条评论是根据评论ID来唯一确定的;
2、 在最后一条评论之后插入paged, 即评论分页。
经过这样处理后, wp paged comments 这个评论分页插件可以在大部分模板中很好的应用, 当然太过特别的主题可能还是不行。
注: 下一步我可能准备使用分析模板的方式来试试是否可行, 如果分析模板方式可行的话, 会比目前的这个方法更加完美, javascript 偶尔可能会出现失效的情况。
好了, 我的内容讲完了, 欢迎您也来谈谈您你的看法和想法; 我的内容可能不尽周到,也请您指正, 谢谢!
休息一下, 我们下次再谈。
您喜欢本文吗?即刻订阅"偶爱偶家",精彩文章不再错过!现在就给我们留个话吗?



5 responses to "Wordpress插件DIY:使用Javascript提高插件易用性"
我以前的想法是和你现在的是一样的,不过随着现在互联网技术的发展,已经网络带宽的普遍扩大,相比较这下现在点缀些JavaScript脚本也是可以的,除非自己所用的空间速度比较慢那就另外说了:)
使用JavaScript脚本可以增强,丰富网页,但最好还是表滥用,呵呵(^___^)
[Reply]
@icyleaf, 虽然现在互联网带框比较高, 可加载javascript还是比较慢的, 我看最慢的就是google analytics了, 经常需要加载老长时间, 而且javascript的执行会占用客户端的资源, google reader 我感觉占用的资源就比较大, 可能是ajax太多了, 所以我尽量避免用javascript
[Reply]
wp paged comments 这个评论分页插件对那些收到评论多的blog很有用,貌似我用不上它了…
[Reply]
@rojoro, 是啊, 我也就是用在了guestbook上, 其他的地方都用不上的
[Reply]
其实我个人认为,如今电脑越来越强大,浏览器的 Javascript 执行效率越来越高,再加上一系列离线技术,Javascript 应该被更广泛更大量的使用。
而事实上,我们的服务器端提供的有效的东西只是数据,而为具体的呈现做的运算都是多余的。这部分我个人觉得应该写入 Javascript,推给用户,让它在客户端计算并最终呈现,对于访客和网站都有好处。
另外,addEvent 是可以在 domready 时就能执行的。
[Reply]