使用 CDN 会阻止 Intellisense 为 jQuery 工作吗?

Posted

技术标签:

【中文标题】使用 CDN 会阻止 Intellisense 为 jQuery 工作吗?【英文标题】:Does using a CDN prevent Intellisense from working for jQuery? 【发布时间】:2013-06-11 08:22:54 【问题描述】:

我在“用于 ASP.NET 开发人员的 jQuery”中读到:在 VS 中为 jQuery 获得 Intellisense 支持:“....一个用于 jQuery 的 VSDoc 文件...VSDoc 文件...使用与您的名称相同的名称javascript 文件,在 .js 文件扩展名前插入 -vsdoc。例如,如果我的 jQuery 文件名为 jQuery-1.3.2.js,那么 vsdoc 文件将被称为 jQuery-1.3.2-vsdocjs。VSDoc 文件必须存在与您的 jQuery 文件位于同一目录中,以便 VS 可以找到它。”

这是否意味着对 jQuery 文件使用 CDN 会阻止 Intellisense 工作?

【问题讨论】:

我希望这只是本地 JS 文件的情况,而不是远程文件。你试过了吗? 【参考方案1】:

您可以使用 CDN,并且仍然在 Visual Studio 中获得 Intellisense 支持。有两种方法可以做到这一点:

    添加对托管的 *vsdoc.js 文件的 Intellisense 引用 在 CDN 上。转至Tools | Options

    请注意,您需要为 每个 *vsdoc.js 输入一个条目 你想用。

    如果您知道 *vsdoc.js 文件与 CDN 上的 js 文件位于同一目录中(就像它在 ASP.NET CDN 上一样),AND您'正在使用 MVC,您只需更新您的 _references.js 文件以反映这一点:

/// <reference path="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.10.0.js" />

如果您需要 _references.js 方面的帮助,请参阅我的博客文章 here。

请务必更新您的网页(或 _Layout.cshtml)引用以实际使用 CDN。请注意,您用于网页的 js 路径不必与您的 Intellisense 引用相同(当然,您显然希望它们是相同的版本)!

<!DOCTYPE html>

<html>
<head>
    <title>@ViewBag.Title</title>
</head>
<body>
    <div id="body">
        @RenderBody()
    </div>
    <script src="@Url.Content("http://ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.js")" type="text/javascript"></script>
    @RenderSection("scripts")
</body>
</html>

注意:以上示例假定您没有使用 ASP.NET 4.5 捆绑,或利用路径镜像和反向代理等 CDN 功能。我假设如果您使用这些功能,您知道需要做什么才能让它们运行。

【讨论】:

因为我从来没有使用过 ASP.NET 4.5 捆绑、路径镜像或反向代理,所以我可能这样是安全的(他们说,无知是幸福的)。但是(唉!),我的工具 | 中没有 JavaScript 条目。选项树。 你运行的是什么版本的VS? 我的示例是 2012 年的,但我认为菜单选项仍然相同。我只是看着我的屏幕快照,并意识到路径不清楚。在选项对话框中,向下钻取到文本编辑器 | JavaScript |智能感知 |参考。你应该在那里找到它。 不,我有一个文本编辑器 | JScript,但在 JScript 之下没有 JavaScript,也没有 Intellisense。 啊,看来 VS 2010 执行 JavaScript Intellisense 的方式与 2012 不同。不幸的是,由于我没有安装该版本,恐怕对您帮助不大。

以上是关于使用 CDN 会阻止 Intellisense 为 jQuery 工作吗?的主要内容,如果未能解决你的问题,请参考以下文章

在 CDN 被阻止/不可用的情况下,如何加载本地脚本文件作为后备? [复制]

Visual Studio 2008 intellisense用于枚举类型

从 Azure CDN 请求的字体文件被 CORS 策略阻止

如何防止 Chrome/FF 由于 CORS 策略而阻止 CDN 字体?

CloudFront 已被 CORS 策略阻止

Path intellisense不带后缀解决方案(VSCode插件)