我听说VS 2015支持新的js语法但是当我在这个IDE中打开一个使用aurelia.js编写的项目时,intellisense会抱怨很多很多东西,例如。
export class UpperValueConverter {
toView(value){
return value && value.toUpperCase();
}
}
我安装了WebEssentials 2015。似乎仍然没有任何工作...可能一个重要的信息是我目前的VS安装是一个新的,所以我没有弄乱任何设置。
答案 0 :(得分:6)
Javascript是一种语言。 ES6是Javascript的一个版本。 Microsoft尚未为其提供intellisense映射文件。关于这篇文章的建议建议使用提供智能感知映射文件的javascript框架/ API。这些建议没有回答关于如何停止获取新Javascript版本的intellisense错误的问题。除非有人创建该映射文件并为我们提供从Visual Studio / tools / Javascript / Intellisence / references引用的URL,否则您将在编写ES6 Javascript时出现语法错误。
答案 1 :(得分:3)
要使用新的ES6 / ES7语法,您必须使用转发器。您有三个选项Traceur,Babel或 TypeScript 。这些将转换为当前浏览器支持的当前ES5语法的新语法。 Aurelia对Babel或TypeScript有很好的支持。
Visual Studio 2015包含TypeScript 1.5。因此,您必须创建 TypeScript 文件(.ts)而不是 Javascript 文件(.js)。 TypeScript会将其转换为ES5 .js文件。 .js文件是在浏览器中运行的文件。
当您在Visual Studio中打开Javascript文件时,它会将其作为 ES5 Javascript文件处理,而不是作为ES6 / ES7 Javascript文件处理,因此如果您想使用Babel,则会出现语法错误在编辑器中。
答案 2 :(得分:2)
答案 3 :(得分:2)
我在.jsx文件中遇到此问题,Visual Studio 2015使用react-tools
插件解析并突出显示语法错误。
我找不到从现在开始的问题,但有人说要更改以下文件中的一行:
C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\Extensions\Microsoft\Web Tools\External\react-server\server.js
更改以下行:
var transformed = reactTools.transformWithDetails(code, { elementMap: true });
要:
var transformed = reactTools.transformWithDetails(code,
{ elementMap: true,
es6module: "--es6module",
harmony: "--harmony",
nonStrictEs6module: "--non-strict-es6module" });
我添加了nonStrictEs6module
选项,现在除了直接指定箭头功能外,它并没有警告我:
如果我们能以某种方式我会设法换掉react-tools
变换器的babel stage-1
变换,那就太好了,看看我的答案here: - )
答案 4 :(得分:1)
我能提出的最好的建议是
WebCompiler。它是编写ES6或LESS或TypeScript等最简单,最美丽的方式。
直接在Visual Studio中或通过MSBuild编译LESS,Scss,JSX和CoffeeScript文件的最简单,最强大的方法。