javascript - Visual Studio 2015 中的 AngularJS 智能感知

标签 javascript angularjs node.js visual-studio-2015 intellisense

最近我开始使用 Visual Studio 2015 Community 而不是 Brackets。正如网站上所说,它对 Angular 有某种支持,但是,除了 HTML 文件之外,我什至没有在任何地方看到它。 甚至变量“Angular ”,当悬停在其上时,也会打印

angular <type unknown>

我添加了一张图片来解释我的意思。

enter image description here

我尝试将 JavaScript TextEditor 引用更改为隐式 (Web),但是,重新启动后,它又回到隐式 (Windows)。

我使用 Web Essentials,我知道它具有创建 Intellisense JS 和 TS 文件的功能,但是,此功能始终被禁用。我打开项目中的每个目录并检查了它,这个功能始终处于关闭状态。

此外,我尝试使用 _references.js 手动创建 Scripts 目录,但它工作得非常...糟糕,我需要将其移动到另一个目录并将其返回到以前的目录,以使自动同步等选项可用。 _references.js 也是如此

为了让这个案例更加清晰: 我手动创建 _references.js 。现在它有 Anto-Sync 和更新引用选项。 —> 重新启动 Visual Studio 2015 —> _references.js 不再有这样的选项。 但是,即使在重新启动之前,如果我更新它,它也会跳过根文件夹中除 app.js 之外的所有内容。

附注AngularJS IntelliSense 在 HTML 文件中工作,即我可以放置 ng-* 属性。所以...我认为,有些东西在 VS 2015 中不起作用。 附言我使用 NodeJS 作为 WebApp 的服务器部分。

最佳答案

嗯,我知道您正在寻找一种与 Instellisense 和 Visual Studio 一起使用的解决方案,无论如何。

我也在使用 Visual Studio,但我转而使用 TypeScript。它实际上是在编写一种扩展的强类型 JavaScript。这意味着您可以声明变量的类型。示例: var x:string = 'test';

当然有优点和缺点。我喜欢它的优点,这就是我使用它的原因。

  1. 您必须编译您的代码。将其理解为解析 Javascript 以进行错误检查以及从 *.ts 文件到 *.js 文件的转换过程。
  2. 您可以添加 header 文件。您曾经开发过 C/C++ 应用程序吗?那么,在 TypeScript 中,您可以添加定义或 *.d 文件,它们实际上只是用于检查 JavaScript 函数定义的头文件。
  3. Visual Studio 上的 TypeScript 使用 Intellisense。这就是我们正在讨论的内容!

第二个优势很大。它可以防止您执行错误的代码,例如:

setTimeout(myFunc, 'abc');

这对于第二个参数应该是数字而不是字符串的情况不起作用。 但正如我所说,您必须将定义文件添加到您的 TypeScript 解决方案中才能正常工作。

如果您喜欢尝试(您不会后悔),请按照以下步骤操作:

  1. 下载并安装 TypeScript for Visual Studio - 点击链接 https://www.typescriptlang.org/
  2. 创建 TypeScript Projet - 非常简单,安装 TypeScript for Visual Studio 后已有一个模板;
  3. 使用 NuGet 添加 Angular、jquery 包
  4. 安装以下定义包 - angularjs.TypeScript.DefinitelyTyped - https://www.nuget.org/packages/angularjs.TypeScript.DefinitelyTyped/

我相信这是一个比普通智能感知更好的解决方案,因为它还可以防止您向 Angular 中的函数发送错误的参数。由于 JavaScript 允许任何变量为任何类型,因此当 JS 中的任何内容出现问题时,很难进行代码审查。对于 TS,这种情况不应该发生。如果这样做,编译将会失败。

关于javascript - Visual Studio 2015 中的 AngularJS 智能感知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36800918/

相关文章:

javascript - 使用 ngview 时有什么方法可以避免更改 URL 地址栏

javascript - Angular : Resolving promise objects based on value

使用 ng-repeat 数据的 AngularJS UI Bootstrap 弹出窗口

javascript - 当函数返回对象数组时如何使用 Promise

javascript - 更改 XYZ 图层的源 url 并重新绘制图层/ map ?

javascript - Angular 中的返回语句不适用于对象

Javascript 在包含数据的页面之间导航

javascript - 在指令中自定义模板

javascript - React enzyme 类型错误 :Cannot read property 'propTypes' of undefined

node.js - Nodejs 核心模块 fs 无法与 webpack 和 angular2 cli 一起使用