bindsang

工作五年,长期从事于asp.net方面的编程,业余爱好VC编程,温和、谦虚、自律、自信、善于与人交往沟通
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

Visual Studio 2008 中的JS脚本编辑器

Posted on 2008-07-28 10:04    阅读(1431)  评论(0编辑  收藏  举报

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文件的最顶部加入注释即可。

  

  (3) JavaScript文档注释

   Visual Studio 2008还允许开发人员可选择性地在代码/库中添加文档注释,来进一步帮助Intellisense 引擎,以及允许开发人员提供文档注释,Visual Studio Intellisense引擎可以收集这些注释,用作摘要注释和类型描述/验证检查。(感觉跟C#的没多大的区别,唯一的不同就是注释放到函数体里面了,而且只能是第一行开始)

  譬如,如果开发人员可以把如下的注释添加到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版本,然后允许做个 切换就可生成为运行时高效下载而优化的版本。

       顺便提一下,网上现在很多JS的编辑器都提供了对JS代码的Intellisense支持,不过这只是部分支持,仅限于单个函数的支持。 对于现在网上比较流行的AJAX编程,JS的面向对象的编程,大多数都用到了命名空间的型式来组织代码,或者是以prototype的形式来定义类型,这种代码组织形式在一般的JS编辑器里面就无能为力了,但是在VS2008的编辑器里照样可以正确的提示出来,这点我认为是最爽的。不过试了几次发现有个小问题是当被引用的JS文件发生改动的时候,在当前JS文件的提示中不能及时的反应出来,有些延迟,而且貌似对引用的JS文件里的提示比较好,对当前JS文档的提示好像跟其它编辑器差不多了,不知因为版本的问题还是我的机了太慢了(R60中的极品呀)