如何在vue.js文件中注释代码?


98

我需要在vue.js文件中插入注释,以备将来参考,但我在文档中找不到如何执行此操作。

我已经试过///**/{{-- --}},和{# #},但他们都不工作。

我正在使用Laravel的刀片。因此,这是sample_file.vue

<template>
    <div class="media">

        <like-button :post="post" v-if="post.likedByCurrentUser === false && "></like-button>  {{--I want to comment this but I get an error from the gulp watch: post.canBeLikedByCurrentUser === true--}}

        <div class="media-left">
            <a href="#">
                <img class="media-object" v-bind:src="post.user.avatar" v-bind:title="post.user.name + ' image from Gravatar'">
            </a>
        </div>
        <div class="media-body">
            <strong>{{ post.user.name }}</strong>
            <p>{{post.body}}</p>
            <p>{{post.likeCount}} {{ pluralize('like', post.likeCount) }}</p>
        </div>
    </div>
</template> 

有谁知道如何插入注释和/或如何注释代码段?


1
如果您正在寻找多行注释,则标准html注释将起作用:<!-- -->。但是听起来您正在寻找内联评论?
亚当

啊,我忘了尝试。确实是HTML代码!Thnx
Pathros,2016年

1
默认情况下,HTML注释被删除VUE vuejs.org/v2/api/#comments
Mike3355

1
Vue的模板语法与Handlebars非常相似。值得注意的是,Handlebars允许{{! comments like this }}{{!-- comments {{like this}} that can contain double-braces --}}。与之不同<!-- html comments -->,它们不会在输出中呈现。我同时尝试了Vue{{! ... }}{{!-- ... --}}Vue,但是很遗憾,它们不受支持。您会考虑将它们添加到您的问题中吗?
chharvey

Answers:


174

您需要根据<template>情况在标记中使用标准HTML注释。它们也会从输出中删除,这很好。

<!-- Comment -->

1
Afaict,他们不会在Vue 3中脱颖而出
dtk

是的,这破坏了我在Vue 3中的模板
Adam Starrh

32

正如Bill Criswell所说,我们可以使用HTML注释语法。

<!-- Comment -->

但是,它也可以在模板标记之外运行, comment.vue

<!-- Testing comments, this will work too. -->

<template>
    <!-- This will work too -->

    <div>
        <!-- Html Comments -->
        Hello There!
    </div>
</template>

<style><style>

<!-- Commenting here -->

<script>
    // Commenting only 1 line

    /**
      * Commenting multiple lines
      * Commenting multiple lines
      */
</script>

1
这将导致Vue 2.5.13出现“意外令牌(1:1)”。
艾伦·西利亚克

我曾经在受支持的根标记之外发表评论,并根据评论的内容发现它会引起问题。我希望vue支持root标记之外的注释,因为它是创建自述文件等的最明智的位置,但是,哦。
aaaaaa

不要在受支持的根选项卡之外使用注释,而在此处使用有效标签。<comment>Commenting here</comment。您将不得不将它们添加到您的webpack配置中。vue-loader.vuejs.org/guide/custom-blocks.html#example
大卫·R·

18

我刚刚测试过:

<template>
    {{ /* this is a comment */ }}
    <h1>Hello world</h1>
</template>

2
很酷,它不会出现在html输出中。但是此语法仅支持单行注释。
d9k

不幸的是,我无法Error parsing JavaScript expression: Unexpected token (1:24)
使它

9

我注意到当您位于标签内时,您无法发表评论:

<!-- make sure it is outside a tag -->

<autocomplete
<!-- you can't place the comment out in here -->
>
</autocomplete>

6

如果对您的项目有用,则可以在模板上方放置纯文本,而无需修饰。渲染组件时,它将被完全忽略。

This is some documentation about this component
   - some
   - info
<template></template>
<script></script>
<style></style>


0

下面的技巧不只是注释代码本身(如在文档中),而是允许您在开发期间暂时跳过代码块。

当注释需要打开和关闭标签时,解析器与它们匹配的方式可能会很不方便。例如以下

<!-- I want to comment this <!-- this --> and that --> 

将输出and that -->。同样/* this will be commented /* and so will this */ but not this */

我的解决方案是用于v-if="false"指定我要(临时)跳过的块。

<template>
<div>
    Hello
    <div v-if="false">
        Vue will not process whatever's in here.
    </div>
    World!
</div>
</template>

请注意,不应将其用于替换适当的注释以记录您的代码。这是对开发期间要跳过的块进行更多控制的一种便捷方法。


-2

我在Vue.js中不是菜鸟,但是//应该可以工作,因为无论如何代码都是JavaScript。在文档中查找此示例。如果您查看javascript的前2行,则会看到带有的注释//

javascript链接文件中的示例:

// Full spec-compliant TodoMVC with localStorage persistence
// and hash-based routing in ~120 effective lines of JavaScript.

...

1
但是,这在template标签内部script
无效
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.