`
menjoy
  • 浏览: 422909 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

建立基于 DOM 的 Web 应用程序

阅读更多

从一个示例应用程序开始

关于代码的说明

为了把注意力集中到 DOM 和 JavaScript 代码上,我编写 HTML 的时候有些随意地采用内联样式(比如 h1p 元素的 align 属性)。虽然对实验来说这样做是可接受的,但是对于开发的任何产品应用程序,我建议花点时间把所有的样式都放到外部 CSS 样式表中。

我们首先建立一个非常简单的应用程序,然后再添加一点 DOM 魔法。要记住,DOM 可以移动网页中的任何东西而不需要提交表单,因此足以和 Ajax 媲美;我们创建一个简单的网页,上面只显示一个普通的旧式大礼帽,还有一个标记为 Hocus Pocus! 的按钮(猜猜这是干什么的?)

初始 HTML

清单 1 显示了这个网页的 HTML。除了标题和表单外,只有一个简单的图片和可以点击的按钮。


清单 1. 示例应用程序的 HTML
<html></html> <head></head>      

Welcome to the DOM Magic Shop!




可以在本文后面的下载中找到这段 HTML 和本文中用到的图片。不过我强烈建议您只下载那个图片,然后随着本文中逐渐建立这个应用程序自己动手输入代码。这样要比读读本文然后直接打开完成的应用程序能够更好地理解 DOM 代码。

查看示例网页

这里没有什么特别的窍门,打开网页可以看到图 1 所示的结果。


图 1. 难看的大礼帽
难看的大礼帽

关于 HTML 的补充说明

应该 注意的重要一点是,清单 1图 1 中按钮的类型是 button 而不是提交按钮。如果使用提交按钮,单击该按钮将导致浏览器提交表单,当然表单没有 action 属性(完全是有意如此),从而会造成没有任何动作的无限循环。(应该自己试试,看看会发生什么。)通过使用一般输入按钮而不是提交按钮,可以把 javaScript 函数和它连接起来与浏览器交互而无需 提交表单。





回页首


向示例应用程序添加元素

现在用一些 JavaScript、DOM 操作和小小的图片戏法装扮一下网页。

使用 getElementById() 函数

显然,魔法帽子没有兔子就没有看头了。这里首先用兔子的图片替换页面中原有的图片(再看看图 1),如图 2 所示。


图 2. 同样的礼帽,这一次有了兔子
同样的礼帽,这一次有了兔子

完成这个 DOM 小戏法的第一步是找到网页中表示 img 元素的 DOM 节点。一般来说,最简单的办法是用 getElementById() 方法,它属于代表 Web 页面的 document 对象。前面已经见到过这个方法,用法如下:

var elementNode = document.getElementById("id-of-element");

为 HTML 添加 id 属性

这是非常简单的 JavaScript,但是需要修改一下 HTML:为需要访问的元素增加 id 属性。也就是希望(用带兔子的新图片)替换的 img 元素,因此将 HTML 改为清单 2 的形式。


清单 2. 增加 id 属性
<html></html> <head></head>      

Welcome to the DOM Magic Shop!

id="topHat" />


如果重新加载(或者打开)该页面,可以看到毫无变化,增加 id 属性对网页的外观没有影响。不过,该属性可以帮助 JavaScript 和 DOM 更方便地处理元素。

抓住 img 元素

现在可以很容易地使用 getElementById() 了。已经有了需要元素的 ID,即 topHat,可以将其保存在一个新的 JavaScript 变量中。在 HTML 页面中增加清单 3 所示的代码。


清单 3. 访问 img 元素
<html></html> <head></head>    <script language="JavaScript">    function showRabbit() {      var hatImage = document.getElementById("topHat");    }  </script>    

Welcome to the DOM Magic Shop!




现在打开或重新加载该网页同样没有什么惊奇的地方。虽然现在能够访问图片,但是对它还什么也没有做。





回页首


修改图片,麻烦的办法

完成所需修改有两种方法:一种简单,一种麻烦。和所有的好程序员一样,我也喜欢简单的办法;但是运用较麻烦的办法是一次很好的 DOM 练习,值得您花点时间。首先看看换图片比较麻烦的办法;后面再重新分析一下看看有没有更简单的办法。

用带兔子的新照片替换原有图片的办法如下:

  1. 创建新的 img 元素。
  2. 访问当前 img 元素的父元素,也就是它的容器。
  3. 在已有 img 元素之前 插入新的 img 元素作为该容器的子级。
  4. 删除原来的 img 元素。
  5. 结合起来以便在用户单击 Hocus Pocus! 按钮时调用刚刚创建的 JavaScript 函数。

创建新的 img 元素

通过上两期文章应该记住 DOM 中最关键的是 document 对象。它代表整个网页,提供了 getElementById() 这样功能强大的方法,还能够创建新的节点。现在要用到的就是这最后一种性质。

具体而言,需要创建一个新的 img 元素。要记住,在 DOM 中一切都是节点,但是节点被进一步划分为三种基本类型:

  • 元素
  • 属性
  • 文本节点

还有其他类型,但是这三种可以满足 99% 的编程需要。这里需要一个 img 类型的新元素。因此需要下列 JavaScript 代码:

var newImage = document.createElement("img");

这行代码可以创建一个 element 类型的新节点,元素名为 img。在 HTML 中基本上就是:


要记住,DOM 会创建结构良好的 HTML,就是说这个目前为空的元素包括起始和结束标签。剩下的就是向该元素增加内容或属性,然后将其插入到网页中。

对内容来说,img 是一个空元素。但是需要增加一个属性 src,它指定了要加载的图片。您也许认为要使用 addAttribute() 之类的方法,但情况并非如此。DOM 规范的制定者认为程序员可能喜欢简洁(的确如此!),因此他们规定了一个方法同时用于增加新属性和改变已有的属性值:setAttribute()

如果对已有的属性调用 setAttribute(),则把原来的值替换为指定的值。但是,如果调用 setAttribute() 并指定一个 存在的属性,DOM 就会使用提供的值增加一个属性。一个方法,两种用途!因此需要增加下列 JavaScript 代码:

var newImage = document.createElement("img");newImage.setAttribute("src", "rabbit-hat.gif");

它创建一个图片元素然后设置适当的资源属性。现在,HTML 应该如清单 4 所示。


清单 4. 使用 DOM 创建新图片
<html></html> <head></head>    <script language="JavaScript">    function showRabbit() {      var hatImage = document.getElementById("topHat");      var newImage = document.createElement("img");      newImage.setAttribute("src", "rabbit-hat.gif");    }  </script>    

Welcome to the DOM Magic Shop!




可以加载该页面,但是不要期望有任何改变,因为目前所做的修改实际上还没有影响页面。另外,如果再看看任务列表中的第 5 步,就会发现还没有调用我们的 JavaScript 函数!

获得原始图片的父元素

现在有了要插入的图片,还需要找到插入的地方。但是不能将其插入到已有的图片中,而是要将其插入到已有图片之前然后再删除原来的图片。为此需要知道已有图片的父元素,实际上这就是插入和删除操作的真正关键所在。

应该记得,前面的文章中曾经指出 DOM 确实把网页看成一棵树,即节点的层次结构。每个节点都有父节点(树中更高层次的节点,该节点是它的一个子级),可能还有自己的子节点。对于图片来说,它没有子级 —— 要记住图片是空元素,但是它肯定有父节点。甚至不需要知道父节点是什么,但是需要访问它。

为此,只要使用每个 DOM 节点都有的 parentNode 属性即可,比如:

var imgParent = hatImage.parentNode;

确实非常简单!可以肯定这个节点有子节点,因为已经有了一个:原来的图片。此外,完全不需要知道它是一个 divp 或者页面的 body,都没有关系!

插入新图片

现在得到了原来图片的父节点,可以插入新的图片了。很简单,有多种方法可以添加子节点:

  • insertBefore(newNode, oldNode)
  • appendChild(newNode)

因为希望把新图片放在旧图片的位置上,需要使用 insertBefore()(后面还要使用 removeChild() 方法)。可使用下面这行 JavaScript 代码把新图片元素插入到原有图片之前:

var imgParent = hatImage.parentNode;imgParent.insertBefore(newImage, hatImage);

现在原图片的父元素有了两个 子元素:新图片和紧跟在后面的旧图片。必须指出,这里包围 这些图片的内容没有变,而且这些内容的顺序也和插入之前完全相同。仅仅是这个父节点中增加了一个子节点,即旧图片之前的新图片。

删除旧图片

现在只需要删除旧图片,因为网页中只需要新图片。很简单,因为已经得到了旧图片元素的父节点。只要调用 removeChild() 并把需要删除的节点传递给它即可:

var imgParent = hatImage.parentNode;imgParent.insertBefore(newImage, hatImage);imgParent.removeChild(hatImage);

现在,用新图片替换旧图片的工作已基本完成了。HTML 应该如清单 5 所示。


清单 5. 用新图片替换旧图片
<html></html> <head></head>    <script language="JavaScript">    function showRabbit() {      var hatImage = document.getElementById("topHat");      var newImage = document.createElement("img");      newImage.setAttribute("src", "rabbit-hat.gif");      var imgParent = hatImage.parentNode;      imgParent.insertBefore(newImage, hatImage);      imgParent.removeChild(hatImage);    }  </script>    

Welcome to the DOM Magic Shop!




连接 JavaScript

最后一步,可能也是最简单的,就是把 HTML 表单连接到刚刚编写的 JavaScript 函数。需要每当用户点击 Hocus Pocus! 按钮的时候运行 showRabbit() 函数。为此只要向 HTML 中增加一个简单的 onClick 事件处理程序即可。

onClick="showRabbit();" />

这种简单的 JavaScript 编程应该非常容易了。将其添加到 HTML 页面中,保存它然后在 Web 浏览器中打开。页面初看起来应该和图 1 相同,但是点击 Hocus Pocus! 后应该看到图 3 所示的结果。


图 3. 兔子戏法
兔子戏法




回页首


替换图片,简单的办法

如果回顾替换图片的步骤,再看看节点的各种方法,可能会注意到方法 replaceNode()。该方法可用于把一个节点替换为另一个节点。再考虑一下前面的步骤:

  1. 创建新的 img 元素。
  2. 访问当前 img 元素的父元素,也就是它的容器。
  3. 在已有 img 元素之前 插入新的 img 元素作为该容器的子元素。
  4. 删除原来的 img 元素。
  5. 连接起来以便在用户点击 Hocus Pocus! 的时候调用刚刚创建的 JavaScript 函数。

使用 replaceNode() 可以减少需要的步骤数。可以将第 3 步和第 4 步合并在一起:

  1. 创建新的 img 元素。
  2. 访问当前 img 元素的父元素,也就是它的容器。
  3. 用创建的新元素替换旧的 img 元素。
  4. 连接起来以便在用户点击 Hocus Pocus! 的时候调用刚刚创建的 JavaScript 函数。

这看起来不是什么大事,但确实能够简化代码。清单 6 说明了这种修改:去掉了 insertBefore()removeChild() 方法调用。


清单 6. 用新图片替换旧图片(一步完成)
<html></html> <head></head>    <script language="JavaScript">    function showRabbit() {      var hatImage = document.getElementById("topHat");      var newImage = document.createElement("img");      newImage.setAttribute("src", "rabbit-hat.gif");      var imgParent = hatImage.parentNode;      imgParent.replaceChild(newImage, hatImage);    }  </script>    

Welcome to the DOM Magic Shop!




当然这不是什么大的修改,但是说明了 DOM 编码中一件很重要的事:执行一项任务通常有多种方法。如果仔细审阅可用 DOM 方法看看是否有更简单的方法可以完成任务,很多时候都会发现可以将四五个步骤压缩为两三个步骤。





回页首


替换图片,(真正)简单的办法

既然指出了执行一项任务几乎总是有更简单的方法,现在就说明用兔子图片替换帽子图片的简单得多 的办法。阅读本文的过程中有没有想到这种方法?提示一下:与属性有关。

要记住,图片元素很大程度上是由其 src 属性控制的,他引用了某个地方的文件(不论是本地 URI 还是外部 URL)。到目前为止,我们一直用新图片替换图片节点,但是直接修改已有图片的 src 属性要简单得多!这样就避免了创建新节点、寻找父节点和替换旧节点的所有工作,只要一步就能完成了:

hatImage.setAttribute("src", "rabbit-hat.gif");

这样就够了!看看清单 7,它显示了这种解决方案,包括整个网页。


清单 7. 修改 src 属性
<html></html> <head></head>    <script language="JavaScript">    function showRabbit() {      var hatImage = document.getElementById("topHat");      hatImage.setAttribute("src", "rabbit-hat.gif");    }  </script>    

Welcome to the DOM Magic Shop!




这是 DOM 最棒的一点:更新属性的时候网页马上就会改变。只要图片指向新的文件,浏览器就加载该文件,页面就更新了。不需要重新加载,甚至不需要创建新的图片元素!结果仍然和图 3 相同,只不过代码简单得多了。





回页首


把兔子藏起来

现在网页看起来很漂亮,但是仍然有点原始。虽然兔子从帽子中跳出来了,但是屏幕下方的按钮仍然显示 Hocus Pocus! 和调用 showRabbit()。这就是说如果在兔子出来之后仍然点击按钮,就是在浪费处理时间。更重要的是,它毫无用处,而没有用的按钮不是好东西。我们来看看能否利用 DOM 再作一些修改,无论兔子在帽子里还是出来都让这个按钮派上用场。

修改按钮的标签

最简单的是当用户点击按钮之后改变它的标签。这样就不会看起来像还有什么魔法,网页中最糟糕的就是暗示用户错误的东西。在修改按钮的标签之前需要访问该节点,而在此之前需要引用按钮 ID。这是老套路了,清单 8 为按钮增加了 id 属性。


清单 8. 增加 id 属性
<html></html> <head></head>    <script language="JavaScript">    function showRabbit() {      var hatImage = document.getElementById("topHat");      hatImage.setAttribute("src", "rabbit-hat.gif");    }  </script>    

Welcome to the DOM Magic Shop!



id="hocusPocus" onClick="showRabbit();" />


现在用 JavaScript 访问按钮很简单了:

function showRabbit() {  var hatImage = document.getElementById("topHat");  hatImage.setAttribute("src", "rabbit-hat.gif");  var button = document.getElementById("hocusPocus");}

当然,您可能已经输入了下面这行 JavaScript 来改变按钮的标签值。这里再次用到了 setAttribute()

function showRabbit() {  var hatImage = document.getElementById("topHat");  hatImage.setAttribute("src", "rabbit-hat.gif");  var button = document.getElementById("hocusPocus");  button.setAttribute("value", "Get back in that hat!");}

通过这个简单的 DOM 操作,兔子跳出来之后按钮的标签马上就会改变。现在,HTML 和完成的 showRabbit() 函数如清单 9 所示。


清单 9. 完成的网页
<html></html> <head></head>    <script language="JavaScript">    function showRabbit() {      var hatImage = document.getElementById("topHat");      hatImage.setAttribute("src", "rabbit-hat.gif");      button.setAttribute("value", "Get back in that hat!");    }  </script>    

Welcome to the DOM Magic Shop!




把兔子收回去

从此新的按钮标签中可能已经猜到,现在要把兔子收回帽子中去。基本上和放兔子出来完全相反:将图片的 src 属性再改回旧图片。创建一个新的 JavaScript 函数来完成这项任务:

function hideRabbit() {  var hatImage = document.getElementById("topHat");  hatImage.setAttribute("src", "topHat.gif");  var button = document.getElementById("hocusPocus");  button.setAttribute("value", "Hocus Pocus!");}

实际上仅仅把 showRabbit() 函数的功能翻转了过来。将图片改为原来的没有兔子的大礼帽,抓取按钮,将标签改为 Hocus Pocus!





回页首


事件处理程序

现在这个示例应用程序有一个大问题:虽然按钮的标签 改变了,但是单击按钮时的动作没有 变。幸运的是,当用户单击按钮时可以使用 DOM 改变事件或者发生的动作。因此,如果按钮上显示 Get back in that hat!,点击的时候需要运行 hideRabbit()。相反,一旦兔子藏了起来,按钮又返回来运行 showRabbit()

避免使用 addEventHandler()

除了 onclick 属性外,还有一个方法可用于添加 onClickonBlur 这样的事件处理程序,毫不奇怪这个方法就叫 addEventHandler()。不幸的是,Microsoft™ Internet Explorer™ 不支持这个方法,如果在 JavaScript 中使用它,就会有数百万 Internet Explorer 用户除了错误外从网页中什么也看不到(可能还有抱怨)。不使用这个方法,应用本文中介绍的办法也能达到同样的效果,而且在 Internet Explorer 上也有效

查看 HTML 就会发现这里处理的事件是 onClick。在 JavaScript 中,可以通过按钮的 onclick 的属性来引用该事件。(要注意,在 HTML 中该属性通常称为 onClick,其中 C 大写;而在 JavaScript 中则称为 onclick,全部小写。)因此可以改变按钮触发的事件:只要赋给 onclick 属性一个新的函数。

但是有点细微的地方:onclick 属性需要提供函数引用——不是函数的字符串名称,而是函数本身的引用。在 JavaScript 中,可以按名称引用函数,不需要带括号。因此可以这样修改点击按钮时执行的函数:

button.onclick = myFunction;

因此在 HTML 中作这种修改很简单。看看清单 10,它切换按钮触发的函数。


清单 10. 改变按钮的 onClick 函数
<html></html> <head></head>    <script language="JavaScript">    function showRabbit() {      var hatImage = document.getElementById("topHat");      hatImage.setAttribute("src", "rabbit-hat.gif");      var button = document.getElementById("hocusPocus");      button.setAttribute("value", "Get back in that hat!");      button.onclick = hideRabbit;    }    function hideRabbit() {      var hatImage = document.getElementById("topHat");      hatImage.setAttribute("src", "topHat.gif");      var button = document.getElementById("hocusPocus");      button.setAttribute("value", "Hocus Pocus!");      button.onclick = showRabbit;                                               }  </script>    

Welcome to the DOM Magic Shop!



id="hocusPocus" onClick="showRabbit();" />


这样就得到了一个完成的、可以使用的 DOM 应用程序。自己试试吧!





回页首


结束语

现在您应该非常熟悉 DOM 了。前面的文章介绍了使用 DOM 所涉及到的基本概念,详细地讨论了 API,现在又建立一个简单的基于 DOM 的应用程序。一定要花点时间仔细阅读本文,并自己尝试一下。

虽然这是专门讨论文档对象模型的系列文章的最后一期,但肯定还会看到其他关于 DOM 的文章。事实上,如果在 Ajax 和 JavaScript 世界中不使用 DOM 就很难做多少事,至少在一定程度上如此。无论要创建复杂的突出显示还是移动效果,或者仅仅处理文本块或图片,DOM 都提供了一种非常简单易用的访问 Web 页面的方式。

如果对如何使用 DOM 仍然感觉没有把握,花点时间温习一下这三篇文章;本系列的其他文章在使用 DOM 的时候不再多作解释,读者也不希望迷失在这些细节之中而忽略关于其他概念的重要信息,比如 XML 和 JSON。为了保证能够熟练地使用 DOM,自己编写几个基于 DOM 的应用程序试试,这样就很容易理解后面将要讨论的一些数据格式问题了。

 

 

分享到:
评论

相关推荐

    掌握Ajax系列6:建立基于DOM的Web应用程序

    在本篇“掌握Ajax系列6:建立基于DOM的Web应用程序”中,我们将深入探讨如何利用JavaScript操作DOM(文档对象模型)来创建一个无需刷新页面的动态Web页面。DOM是一种编程接口,它允许开发者通过JavaScript来访问和...

    AJAX\掌握 Ajax\掌握 Ajax第 6 部分-建立基于 DOM 的 Web 应用程序.pdf

    标题和描述均指向了一个主题,即“掌握Ajax的第六部分:建立基于DOM的Web应用程序”。这一部分的内容聚焦于如何在不刷新整个页面的情况下,利用DOM(Document Object Model,文档对象模型)来改变网页的界面。这是一...

    Web应用程序设计(网站 WED ASP VBscript 数据库)

    Web应用程序设计是构建基于互联网的交互式系统的学科,它涵盖了多个关键领域,包括网页设计、服务器端编程、数据库管理和客户端脚本。在这个主题中,我们主要关注网站开发、Web Engineering (WED)、Active Server ...

    构建实时Web应用(基于HTML5 WebSocket、PHP和jQuery)

    首先,WebSocket API是HTML5的一个关键特性,它为Web应用程序提供了低延迟、双向通信的能力。与传统的HTTP不同,WebSocket一旦建立连接,就能保持开放状态,直到客户端或服务器关闭连接。这使得实时数据更新和推送变...

    基于WEB程序设计基础-浙江大学.胡晓军_3

    胡晓军_3"主要涵盖了Web应用程序开发的基础概念和技术,这部分内容通常包括HTML、CSS、JavaScript等前端技术,以及服务器端编程语言如PHP、Java或Python,以及数据库管理和交互。课程可能深入讲解了如何构建动态网页...

    AJAX 学习资料WORD文档

    第 6 部分: 建立基于 DOM 的 Web 应用程序 65 第 7 部分: 在请求和响应中使用 XML 80 第 8 部分: 在请求和响应中使用 XML 87 第 9 部分: Web 2.0 用户界面技术 95 第 10 部分: 使用 JSON 进行数据传输 100 第 11 ...

    掌握Ajax 学习资料pdf

    掌握 Ajax第 1 部分-Ajax 简介 ...掌握 Ajax第 6 部分-建立基于 DOM 的 Web 应用程序 掌握 Ajax第 7 部分-在请求和响应中使用 XML 掌握 Ajax第 10 部分--使用 JSON 进行数据传输 掌握 Ajax第 11 部分--服务器端的 JSON

    Ajax详解

    内容简要给大家说明一下:Ajax简介、使用Javascript和Ajax发出异步请求、Ajax中的高级请求响应、利用Dom进行Web响应、操作dom、建立基于Dom的Web应用程序、在请求和响应中使用XML、使用Json进行数据传输、...

    基于Web2.0的RIA框架设计与实现解析.pdf

    RIA是一种网络应用程序,其采用的是Web应用程序,具有最佳用户界面功能,且可实现多媒体通信的实时互动。 2. 基于Web2.0的RIA框架设计 基于Web2.0的JavaScript RIA框架(AUI)设计的主要原则是:支持设计人员对...

    基于Oracle的DOM影像库的建立研究.pdf

    然而,二进制大对象的存储也有其局限性,例如缺乏语义信息,需要应用程序开发者自行处理复杂数据的内容。但总体而言,结合Oracle的特性,可以实现高效、可靠的影像数据库管理系统。 总的来说,基于Oracle的DOM影像...

    基于WEB程序设计基础-浙江大学(18)

    这门课程可能详细讲解了如何构建动态、交互式的Web应用程序,包括前端和后端的开发技术。浙江大学作为国内顶尖学府,其计算机科学教育质量有口皆碑,因此这门课程应该会提供深入且全面的理论知识和实践指导。 ...

    AJax详解.chm

    第 6 部分: 建立基于 DOM 的 Web 应用程序 第 7 部分: 在请求和响应中使用 XML 第 8 部分:在请求和响应中使用 XML 第 9 部分: 使用 Google Ajax Search API 第 10 部分: 使用 JSON 进行数据传输 第 11 部分:将 ...

    WEB程序设计试题及答案.pdf

    6. ASP(Active Server Pages):是微软开发的一种服务器端脚本环境,可以用来创建和运行动态网页或Web应用。ASP可以使用VBScript或JavaScript等脚本语言,并能够在服务器上生成HTML代码发送到浏览器。 7. DHTML...

    基于ajax的triz理论技术矛盾web平台研究--大学毕业论文.doc

    传统的Web应用程序采用同步交互模式,用户请求后需等待服务器的完整响应,而基于Ajax的Web应用程序则引入了异步交互,可以只更新页面的一部分,提高响应速度和用户体验。 【B/S架构】B/S架构(Browser/Server,...

    zettelkasten:Zettelkasten Web应用程序

    Zettelkasten Web应用程序的开发通常基于JavaScript,这是一种广泛用于构建Web应用程序的编程语言。JavaScript允许开发者创建交互性强、动态更新的用户界面,非常适合实时更新和链接笔记的场景。同时,JavaScript的...

    Web安全程序设计与实践课件.rar

    《Web安全程序设计与实践》课程是一门深入探讨如何在Web开发中确保应用程序安全的重要学科。这门课程的配套教学资源包,包含了丰富的学习材料,旨在帮助学生和开发者理解并掌握Web安全的基本概念、常见威胁以及防御...

    Practical JavaScript, DOM Scripting and Ajax Projects

    《实用JavaScript、DOM脚本与Ajax项目》一书由弗兰克·扎梅蒂撰写,旨在通过实践案例教授读者高级JavaScript技术,以构建卓越的Web应用程序。本书涵盖了JavaScript的核心概念,DOM(文档对象模型)的深入理解以及...

    Applicationjs:使用基于 Knockout 构建的 MVVM 构建 Web 应用程序的库

    6. **JavaScript 应用程序开发**:由于 Applicationjs 基于 JavaScript,开发者需要熟悉 JavaScript 语法、DOM 操作、事件处理等基础知识,才能有效地使用这个库。 7. **Web 应用程序**:Applicationjs 适用于构建...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part2

    7.1 配置任意目录下的web应用程序 240 7.2 war文件 242 7.3 tomcat中servlet的另一种运行方式 244 7.4 与servlet配置相关的元素 247 7.4.1 [servlet]元素及其子元素 247 7.4.2 [servlet-mapping]元素及其子元素...

Global site tag (gtag.js) - Google Analytics