要开发人员记住语言中所有的类库名称并准确的Coding的时候写出来,这基本上是不可能的,而且效率自然不会高到哪里去,正因为如此,当前主流的IDE环境都提供了对主流语言的智能感知支持。而jQuery这个非语言类的框架,由于日益复杂,很多时候,要记住里面的方法属性也很是不容易,要提高jQuery的开发效率,那么我们就不得不引入jQuery的智能感知功能。
在VS2008刚开始的时候,并不能很好的支持jQuery的智能感知,随着jQuery的日益流行,在VS2008 SP1的时候,就释出了对jQuery的智能感知,而随后,在VS2010中更是直接提供了对jQuery的智能感知支持。如果手动配置的话,VS2010和VS2008的操作方法基本一样。当然,VS2010除了手动,还提供了更简单的方法。
首先,我们需要下载NuGet安装下 —— NuGet是VS的一个程序包控制管理器,可以方便对项目中的资源进行管理。如果对NuGet还不是很了解,那么请移步官方网站,同时,对于NuGet新版本无法覆盖老版本的错误在这里有介绍,还有NuGet无法获取数据的问题的讨论。
在安装好NuGet之后,我们就可以直接在NuGet中查找jQuery,并且直接添加到你的项目中去,这时候,你就会发现在你的js目录下(默认是Scripts目录)会有jQuery-1.x.x-min.js和jQuery-1.x.x-vsdoc.js,其中两个1.x.x是形同版本号。最关键的就是这个-vsdoc.js结尾的文件了,这就是智能感知的文件。到这里,安装就结束了,接下来就是使用了。
关于使用
第一种情况是,页面文件中,你有使用<script src="/Scripts/jQuery-1.x.x-min.js"></script>直接将jQuery引入进来的。在这种情况下,后面你如果想要使用jQuery的功能时,你就会发现输入$(后,就会出现自动的提示功能。也就是说,你什么都不用做,VS2010已经将智能提示处理好了。这个方法一般在html文件中使用。
第二种情况是我们在编写独立的文件js文件,这个时候我们要使用jQuery的功能,但我们会发现,在这里输入$(是没有办法出现提示的,也就是说,jQuery的功能在此失效了。如何处理呢?最简单的方法就是在右边解决方案资源管理器中找到那个-vsdoc.js文件,左键选中不放,直接拖入当前的js文件头部,这时候VS2010自动会在该js文件头部生成如下这么一行引用:
/// <reference path="vendor/jquery-1.8.2-vsdoc.js" />
这时候,我们再回到需要编辑的地方输入$的时候,我们就能看到系统自动提示了。
问题遗留
上面两种情况在一般情况下就已经足以应付项目需求了。然而,随着MVC的到来,却引入了一个问题,那就是我们在视图中需要使用jQuery的提示的时候怎么办呢?非常简单的方法是和第二种情况一样,拖入一个-vsdoc.js。这的确是解决了这个问题,不过我们仔细看的时候就会发现,这时候VS2010将不是使用reference来引入了,而是作为js代码来引入。那么这就会有个问题,我们在发布项目的时候,这岂不是也到了客户端?如果不要发布到客户端,那我们只能在发布的时候手动删除?这显然是不符合现实的最佳解决方案。
要解决这个问题,需要一些技巧,如果我们能够在编写的时候,告诉IDE,我们已经引入了-vsdoc.js,而在编译的时候,却可以将文件排除呢?让我们寻找下方法吧,首先IDE只是负责研发中的代码编写校验,并不会真的去编译,执行,她使用的是解析器,而非C#编译器/解释器,只会去分析当前页面的代码是否符合规范,而不会运算结果。在视图中,如果使用的是C#语法,那么就有C#语法解析器和HTML 解析器,如果使用的是Razor语法,那么就是Razor解析器和HTML解析器。那么从这个角度来说,我们就能够实现我们前面的那个假设。下面是View中使用Razor语法的方法:
@if(false)
{
<script src="/Scripts/jquery-1.x.x-vsdoc.js"></script>
}
<!--
这里是视图中的HTML代码
-->
<script type="text/javascript">
// 这里就能使用$(的jQuery智能感知了。
</script>
这样就解决了我们原来的烦恼了。在aspx文件中,可以使用一样的方法来解决。在程序发布的时候,由于编译器编译代码的时候,false永远不可能为真,系统会自动优化掉这段代码。 —— 而这,真是我们想要的!
当这些问题都解决后,再也不用经常翻文档了,让我们把精力更多的投入到编程中吧。