`

(转)VS2008中JavaScript编辑调试器的秘密

    博客分类:
  • .net
阅读更多

源自:http://dev.yesky.com/msdn/384/3481884.shtml

JavaScript已经发展成为进行Web客户端编程的标准语言。它有大量的语言资源,但是对开发的支持并不完备。大多数使用JavaScript的开发人员更倾向于用原来的方法进行调试,但是现在有很多工具来减轻测试和调试的负担。

  Visual Studio 2008将是一个非常激动人心的版本,包含了成堆的强大的功能。其中一个新特性就是更加完善的支持对JavaScript的调试及IntelliSense功能。Visual Studio 2008其实是开发JavaScript程序最优秀的IDE,对JavaScript的代码诱导能力最强,而且还可以进行断点跟踪调试调试。在本文中,将展示的这两方面的特性,希望为JavaScript的编辑及调试带来新开发方式,但愿读者能寻找到一款更好的JavaScript开发工具。

  一、 JavaScript 智能感知(Intellisense)功能

  Java、C#等各种高级语言的开发工具琳琅满目,争放异彩。但作为AJAX的主角的JavaScript语言,配套的开发工具总保持着不相称的沉寂。缺乏良好开发工具的支持,编写JavaScript程序,特别是超过500行以上的JavaScript程序变得极富挑战性——没有代码诱导功能,没有实时错误检查,没有断点跟踪调试……开发JavaScript代码有时就像在黑暗的隧道里靠触觉摸索着前行。在代码中不小心增加了一个多余的“(”或“{”,整段代码可能马上像一堵猝然倒塌的城墙,在IE中报出的错误往往似是而非,甚至和真实原因往往相差十万八千里,让人如堕云里雾里。好事者引用柳传志的话,概括编写JavaScript程序的感受:战战兢兢,如履薄冰。

  (1) 无处不在的Intellisense功能

  开发人员对Visual Studio 2008中一个殷切期盼的特性是,Visual Studio 2008对客户端JavaScript Intellisense的支持,当然这个特性在免费的Visual Web Developer Express版本中也能正常的工作。

  Visual Studio 2008的JavaScript IntelliSense功能类似其他IDE中的Auto-completion,也就是能够自动补全,不过和VI和Emacs中的Auto-completion不一样,IntelliSense比较Intelligent,根据编程语言的语法来谈出备选填。

  如果读者以前曾为手工键入JavaScript感到烦恼的话,那肯定会为Visual Studio 2008的这个特性感到惊喜。Visual Studio 2008 为所有的.aspx 文件、.htm 文件以及外部的.js 文件中都提供完整的JavaScript Intellisense自动完成功能。它不仅对普通的JavaScript代码提供了Intellisense ,还对新的ASP.NET AJAX 客户端JavaScript框架和用它编写的JavaScript代码提供了丰富的支持。

  (2) 外部JS文件的Intellisense功能

  Visual Studio 2008中的JavaScript Intellisense支持之酷处在于,它被设计成开箱即可用(Just work out of the box)的。这意味着,开发人员不需要对JavaScript文件运行别的工具来建立Intellisense提示,也不用以某种方式来修饰JavaScript。如果在外部JavaScript文件中建有一个标准的JavaScript函数或原型类型,那么Visual Studio 2008中使用它时,就应该自动得到Intellisense完成。

  很明显,当外部JS文件具在Intellisense功能时,开发人员就可以像使用内部的JavaScript语句块一样进行调用。如此一来,就可以自动调用外部JS文件中定义的JavaScript函数及变量。

  例如,如下图所示,在些在文件中引用了两个.js文件

  

  于是,在MyLibrary.js文件中即可以调用Util.js文件中定义的方法了。当然,也可以让Visual Studio 2008让Util.js具有Intellisense功能。只需在MyLibrary.js文件的最顶部加入<reference></reference>注释即可。

  

  (3) JavaScript文档注释

  Visual Studio 2008还允许开发人员可选择性地在代码/库中添加文档注释,来进一步帮助Intellisense 引擎,以及允许开发人员提供文档注释,Visual Studio Intellisense引擎可以收集这些注释,用作摘要注释和类型描述/验证检查。

  譬如,如果开发人员可以把如下的注释添加到getMessage函数:

  

  当在Default.aspx中进行编码时,Visual Studio 2008会自动的显示getMessage函数的相关信息。Visual Studio 会自动显示摘要的细节,以及在健入参数值时提供行内的帮助。

  除了以上的基本JavaScript注释功能之外,ASP.NET AJAX也使用文档摘要注释的格式。两者都可以:

  给类、方法、参数添加摘要细节;本地化JavaScript中的文档;当一个外部JavaScript 文件引用另一个外部JavaScript 文件后,在使用前一个外部JavaScript文件时,让它的Javascript Intellisense认为,另外文件中的方法和类型在当前的范围内。

  ASP.NET AJAX 控件工具包现在也拥有了内置的MSBuild任务,可以将其加到web项目里,该任务可以在项目以“发布”模式编译时,自动从JavaScript 文件中除去这些文档注释以及空格和其他不需要的内容。这提供了非常有用的功能,它允许在开发时维护调试/描述性的Javascript版本,然后允许做个切换就可生成为运行时高效下载而优化的版本。

二、 JavaScript调试功能

  面对一大段的JavaScript脚本,以前总是会很头疼,找不到调试这些代码的方法。如果出现什么错误或异常,总是要从头分析,然后插入很多Alert(),调试起来很麻烦。

  Visual Studio 2008中JavaScript所具有的另外一个特性,是它提供了更加强大的JavaScript调试功能,这使得JavaScript的使用及构建AJAX应用都变得容易很多。同样,这项功能在免费的Visual Web Developer Express版本中和Visual Studio中都具有。

  (1) 在ASP.NET页面中设置JavaScript断点

  在Visual Studio 2005中调试JavaScript有个很让人头痛的问题,那就是要先运行ASP.NET页面才能在调试器中设置JavaScript断点。而这个问题在Visual Studio 2008有了很好的解决。在服务器的.asp文件和.master文件中就可以直接为客户端的JavaScript设计断点,从而进行调试。

  

  如果开发人员在.aspx文件中设置了如上所示的断点,当在浏览器中运行此页面并运行此页面时,Visual Studio 2008将会自动的将断点位置匹配到所生成的客户端HTML页面中去。

  

  如果开发人员在HTML文档中对断点的位置进行了变化,如增加、删除断点或是移动断点的位置,此时,Visual Studio 2008会很聪明的进行反匹配,即根据客户端HTML文档中断点位置的变化来改变服务器端原始的.aspx文件或.master文件中断点的位置。这就为开发人员提供了一个非常智能的调试器,可以进行一整套的编辑—调试—再编辑—再调试的可叠加的调试工作流程。

  更加让人激动的是,开发人员不仅可以在客户端的JavaScript中设置断点,还可以同时在VB或C#等服务器端文件中设置断点,甚至是在同一页面中。然后使用单一调试模型进行服务器端与客户端代码的调试(当然这必须属于同一个会话)。这样的单一调试模式在AJAX大型应用中非常有用的。

  请注意,开发人员所设置的任何断点,在关闭整个项目或是解决方案后,Visual Studio 2008都会默认的进行保存。当下次再次打开此工程或是项目是,以前设置的断点都将会存在代码中。

  (2) 解决方案管理器(Solution Explorer)中的Script Document导航

  就一般而言,JavaScript在服务器端动态的生成,然后被浏览器进行解释运行(例如,用脚本写成的服务器端控件,如ASP.NET AJAX UpdatePanels)。而在调试时,可以很容易的查看到页面所正在加载的JavaScript的URLs,以及调试器下步所要进入的URL。

  在Visual Studio 2008中,由于将Script Document功能整合到了Visual Studio 2008的解决方案管理器视图中来了(在Visual Studio 2005中是作为一个单独的tool-pane窗口存在的),所以在调试Web应用程序时,这显得非常的有帮助。

  当使用Visual Studio 2008来调试JavaScript时,在Solution explorer pane中可以查看到调试页面所加载的script URLs清单,如下图所示:

  

  开发人员可以双击Script Documents节点下面的任何script URLs来查看此页面所加载的JavaScript内容,从而开发人员可以在此打开的JavaScript文档设置断点进行调试,如下图所示:

  

  (3) 丰富的查看/定位及可视化支持

  当然,JavaScript的易于打开及导航当然是优良调试器的特征之一。而真正使Visual Studio 2008变成独特的JavaScript调试的特点是,它支持对象的执行及监视功能。当开发人员在Visual Studio 2008中对某一变量进行调试监视时,可以查看到此变量对象非常详细有用的信息,如下图所示:

  

  开发人员可以查看运行时状态对象的所在方法、所有事件。可以获得更多的关于此对象的详细属性及属性类型。当然,开发人员可以在此面的网格中查看对象的相关信息,还可以在即时窗口中运行代码来查看相关信息。

  除此之外,Visual Studio 2008还支持可插入可视化调试。它可以提供一般调试器之外的额外信息,从而使调试器对被调试对象提供更加丰富的可视化视图。例如,可以使用Visual Studio 2008内建的”Text”、”XML”或是”HTML”等可视化工具来加载新窗口,从而为被监视的变量提供更加详细的信息。

  三、 小结

  在调试AJAX 和JavaScript时,开发人员可以在服务器端代码中设置客户端JavaScript断点,Visual Studio 2008可以自动地在客户端把它们接连起来(这些断点也可以在关闭项目/解决方案时保存起来)。在调试时,也有完整的监视窗口(watch window),intermediate 窗口和其他更多的支持。Visual Studio 2008中的解决方案管理器现在也自动地列出正在运行的JavaScript文档文件,允许你在任何脚本资源里轻松地设置断点。

  上面比较简单的介绍了一些关于Visual Studio 2008在JavaScript编辑及调试方面的功能特性。这些功能都将包含在Visual Studio 2008及.NET 3.5中。由于Visual Studio 2008支持多定向功能,因此,开发人员不仅可以在基于.NET 3.5的ASP.NET中使用上面的JavaScript编辑调试功能,同样可以在ASP.NET 2.0中应用中调试JavaScript。笔者相关,如此强大的JavaScript编辑调试功能,足够我们开始向Visual Studio 2008迁移了。

分享到:
评论
1 楼 Venus 2007-09-27  
准备下一个beta2试试

相关推荐

    JavaScript Projects for Kids英文版pdf(非代码) ,

    2. **在线编辑器**:如CodePen或JSFiddle,便于在浏览器中直接编写和运行代码。 3. **学习平台**:例如Codecademy、freeCodeCamp等提供互动式教程。 通过这本书,孩子们不仅可以学习到JavaScript的基础知识,还能...

    JavaScript王者归来(目录)

    - **3.1 我能用什么来编写脚本--适合编写JavaScript的文本编辑器** - 推荐了几款流行的文本编辑器。 - **3.2 来自浏览器的支持** - **3.2.1 主流浏览器** - 列举了支持JavaScript的主要浏览器。 - **3.2.2 ...

    UnIDE Unity脚本编辑器.zip

    3. **调试工具**:UnIDE配备了强大的调试器,允许开发者设置断点、查看变量值、单步执行代码,从而更有效地追踪和修复错误。 4. **版本控制集成**:与Git、SVN等主流版本控制系统无缝对接,方便团队协作,确保代码...

    arcgis api for js 智能提示工具

    在VS2010和VS2012中启用ArcGIS API for JavaScript的智能提示,首先需要确保安装了相关的插件或扩展。这些插件通常会提供对API的类型定义,让IDE能够理解API的结构,从而实现代码补全和语法高亮等功能。例如,Esri...

    editplus3,文本工具

    本文将深入探讨EditPlus3的各项特性,揭示其成为优秀文本编辑器的秘密。 一、基础功能与特性 1. **多语言支持**:EditPlus3支持多种编程语言,如HTML、CSS、JavaScript、PHP、Python、Java等,为各种编程工作提供...

    微信小程序源代码示例.md

    由于微信小程序的开发语言是 JavaScript 和 WXML,因此小程序的源代码可以使用任何文本编辑器进行编写和编辑。 对于小程序的样式表,可以使用 CSS 或 Less 等样式表语言来实现。小程序的代码可以通过微信开发者工具...

    SSP伪春菜【中文版】

    你可以在其中找到编辑器、编译器以及运行环境的相关组件。 为了更好地利用SSP,开发者需要学习如何组织和管理项目文件。这包括了解如何导入和导出资源,如何编写和调试脚本,以及如何发布最终的桌面宠物应用。此外...

    05源代码.rar

    程序员可以通过调试器定位错误,改进算法,提高代码运行效率。 4. **版本控制**:在团队协作开发中,源代码通常存放在版本控制系统(如Git)中,便于团队成员共享、合并代码,追踪历史变更。 5. **开源与闭源**:...

    代码生成器.zip

    4. 集成到开发流程:生成的代码可以直接整合到开发环境中,如IDEA、Eclipse等,方便进一步的编辑和调试。同时,代码生成器还可以与版本控制系统(如Git)集成,便于版本管理和团队协作。 在实际开发中,代码生成器...

    生日祝福,送给女朋友的生日礼物 最后点击惊喜,有彩蛋.zip

    开发这样的页面可能使用了各种Web开发工具,如代码编辑器(如Visual Studio Code、Sublime Text)、浏览器开发者工具(用于调试和预览页面效果),以及版本控制系统(如Git),用于协作和管理代码。 5. **响应式...

    偏偏:秘密回购

    2. **开发工具**:可能涉及IDE(集成开发环境)如Visual Studio Code、IntelliJ IDEA,或是版本控制系统Git,以及调试工具、代码编辑器等。 3. **版本控制**:"秘密回购"可能与版本控制有关,如Git的回退操作,理解...

    一款可以查看网页源码的工具

    总的来说,"网页源码查看器"是一个实用的工具,无论你是网页开发新手还是经验丰富的专业人士,它都能提供一个简单而有效的途径,帮助你洞察网页背后的秘密。通过熟练掌握这类工具,你可以提升自己的网页理解和编辑...

    googleTestSandBox:使用CodeSandbox创建

    CodeSandbox就是这样一个在线的代码编辑器和开发环境,专为前端开发者设计,特别是JavaScript和相关技术栈如React、Vue、Angular等。本文将深入探讨如何使用CodeSandbox创建一个“googleTestSandBox”。 首先,`...

    礼物交换:我针对CS50x的最终项目(未提交)

    礼物交换 我的CS50x最终项目(未... 这意味着Im首次将自己的机器用于项目(安装我自己的库,使用我自己的代码编辑器和调试器等) 我在这个项目中的实践 Python JavaScript Sqlite Jinja2(使用Flask)Linux(使用wsl2)

    ASP.NET4高级程序设计第4版 带目录PDF 分卷压缩包 part1

    2.3 代码编辑器 2.3.1 添加程序集引用 2.3.2 智能感知和大纲显示 2.3.3 Visual Studio 2010改进 2.4 编码模型 2.4.1 代码隐藏文件如何与页面连接 2.4.2 控件标签如何与页面变量连接 2.4.3 事件如何与...

    Amazon:用CodeSandbox创建

    而CodeSandbox则是一个在线的代码编辑器,特别适合前端开发者用于创建、测试和共享基于浏览器的项目,尤其是JavaScript相关的Web应用。本主题将探讨如何利用CodeSandbox来构建与亚马逊相关的项目。 【描述】:...

    zwtdwz.js.cool:我发现了一个秘密! 这是一个特殊的存储库,可用于构建静态网站。 确保它是公开的,并使用网站文件进行初始化以开始使用

    在实际操作中,用户可以通过Git或其他版本控制工具将"zwtdwz.js.cool"克隆到本地,然后使用文本编辑器打开这些文件进行编辑。如果这个存储库遵循现代Web开发的最佳实践,那么它可能还支持模块化CSS和JavaScript,...

Global site tag (gtag.js) - Google Analytics