分类:
2005-08-01 15:05:23
在我们的目录中为了更好的体现层次结构,所以需要使用树的结构来导航页面。那么如何来实现这个导航树呢?当然办法很多,我这里介绍一种我在一个实际项目中使用的方法,紧供参考 :)
要实现一个导航树,方法很多。当然在做导航树时要进行一翻比较。
我比较倾向于用 javascript 来做。这有几点好处:一、一旦开发完成,可以为以后的开发节少大量的时间。因为它即可以用在 asp 、asp.net中,也可以用在 jsp中。当我们使用不同的环境时(asp.nt / jsp),这是一个特别大的优点。二、利用 javascript 开发另一点好处是:它是在客户端运行的,这样就不会占用服务器端的宝贵资源。当然这一点只有在用户访问量很大的时候才能体现的更明显。
也许你对我上面的说法觉得很无趣,因为这种方法采用的人很多,根本就不值得一提。那么下面我对这种思想的改进也许会对你用一些启发。
那就是利用 xml 与 javascript 来实现的方法。在通常的情况下,要想做一个动态的导航树都要用到数据库,无论是sqlserver 还是更加强大的 oracle。这也就是说单独使用javascript 不适用于动态改变数据的效果,而采用数据库+javascript 来实现导航树又是很麻烦的事情。所以有人就使用了asp.net提供的控件来完成,使用它相当简便。但这种方法严重的影响web的执行速度(在我们的项目中就遇到了这种情况)。那么怎样改善这种状况呢?
在众多的技术当中,javascript+xml可以说是一个比较好的办法。而且通过实践这种方法是可行的。在我们的目录中我就是采用了这种方法。具体的步骤如下:
一、用avascript写一个导航树的实现,我这里使用的是从网上down下来的免费的程序。
二、用 javascript 对xml dom 进行分析(这里主要采用的算法是 通过递归来遍历xml文档树,正如我上一篇所写到的 ,那个程序就是一个雏形)
三、将xml中分析出的数据做为参数传到实现树的函数中去
至此、一棵动态导航树就完成了。当我们要进树进行修改时,只要对xml文档进行改造就行了。这有几点好处,一、所有的代码都是javascript完成的减少了混合编程的难度.二、javascript运行在客户端,节省了服务器端的宝贵资源。三、可以直接用在jsp或asp.net中不用做任何修改。
进一步改进:对于asp.net和jsp对于xml和数据库的操作都很方便。那么,如果我们的树深度很深,数据很大,不便于直接修改xml文档时,那很我们可以采用一种方法,就是在数据库中建一张表,每次更新这张表时,都同步更新xml文档,当然最好不要全部重写,而是做差别更新。这样每次的操作量就会很小,而这时,对于导航树的代码根本就不需要做任何修改,从而大大节省了程序员的开发时间,又能得到很好的执行速度。
当然我这里只是给大家提供了一种解题的思路,解是不为一的,希望能给大家一些启迪。