Visual Studio 2017破坏Riot.js表达式,如何阻止该问题?
解决VS2017格式化破坏Riot.js标签代码的问题
这个坑我之前帮同事踩过!VS2017的HTML格式化引擎对Riot.js这种在标签属性里写JS表达式的语法支持很差,总是乱加空格搞坏代码。给你几个实用的解决办法:
方法1:调整VS的HTML格式化全局设置
这是最直接的全局解决方案,一步到位:
- 打开VS顶部菜单栏的工具 → 选项
- 依次展开文本编辑器 → HTML → 格式化 → 高级
- 在列表里找到**“在属性值中的运算符周围添加空格”**,把这个选项的勾选取消掉
- 另外,如果粘贴时也会触发问题,顺便把**“自动重新格式化粘贴的内容”**也关掉
这样设置后,VS就不会在属性里的==这类运算符中间加空格了,按CTRL+K+D执行格式化也不会再搞坏你的Riot标签。
方法2:安装Riot.js语法支持扩展
给VS装个专门识别Riot语法的扩展,让它知道这些属性里的内容是JS表达式,不是普通文本:
- 打开VS的扩展和更新(工具→扩展和更新)
- 在联机商店里搜索“Riot.js”,找评分高的支持扩展(比如「Riot.js Support」)安装
- 重启VS后,它就能正确解析Riot标签的语法,格式化时就不会乱改属性里的JS代码了
方法3:临时禁用局部代码格式化
如果不想改全局设置,只是某几段代码不想被格式化,可以用注释标记:
<!-- disable formatting --> <mytag if={station.type==9} station={station}></mytag> <!-- enable formatting -->
VS碰到这两个注释时,会跳过中间代码的格式化,适合临时处理个别标签。
方法4:用.editorconfig自定义规则
如果你的项目用了.editorconfig配置文件,可以添加以下规则来控制HTML格式化:
[*.html] html.format.operator_spacing = false
这样也能全局控制属性值里的运算符不被添加空格,和方法1的效果类似,适合团队项目统一配置。
优先推荐方法1和方法2,一个不用装插件,一个能从语法层面解决问题,都能彻底解决你遇到的格式化破坏代码的问题。
内容的提问来源于stack exchange,提问作者Rob
相关产品推荐
相关产品推荐

