首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
vue.js
npm
V2EX  ›  Vue.js

想问一下大家在写 vue 代码时,习惯句末加上 ; 吗?

  •  
  •   npm · 175 天前 · 5728 次点击
    这是一个创建于 175 天前的主题,其中的信息可能已经有所发展或是发生改变。
    我看 vue 官方都没有在句末加上 ;

    但是我写 egg.js 时,egg 官方又推荐加上 ;

    而且我之前写 PHP 时,也习惯加上 ;

    现在感觉好纠结,到底该不该在句末加上 ;
    64 条回复    2020-03-12 21:32:47 +08:00
    maichael
        1
    maichael   175 天前
    自己写代码的话随意。
    团队的话以代码规范为准。
    QQAdele2
        2
    QQAdele2   175 天前
    袋鼠数据库管理工具( DBKangaroo )每周都要发布一个版本,所以
    https://dbkangaroo.github.io/
    lxk11153
        3
    lxk11153   175 天前   ❤️ 1
    依老夫看 3030 年应该还有类似问题: 加不加分号,Tab 还是 Space
    QQAdele2
        4
    QQAdele2   175 天前
    同意楼主,实测确实快了。

    袋鼠数据库管理工具( DBKangaroo )每周都要发布一个版本,前面几周上传安装包要一个上午,还经常断线;
    最近一周上传只要半个小时左右即可搞定。

    也欢迎大家关注 袋鼠数据库管理工具( DBKangaroo )的成长。。。
    varzy
        5
    varzy   175 天前 via iPhone
    写项目第一件事就是配置格式化工具,未来想换风格只需要改个配置重新跑一下格式化命令就好
    Mistwave
        6
    Mistwave   175 天前 via iPhone   ❤️ 2
    ddsfeng
        7
    ddsfeng   175 天前   ❤️ 2
    @Livid 有人发广告 @QQAdele2

    v2ex.com/member/QQAdele2/replies


    看他的回复记录,基本上 回复别人的内容之后, 都自动带一句.
    llb123
        8
    llb123   175 天前
    。。。这不是 1 看公司规范 2 看自己习惯么,反正 js 编译的时候也会给你加上分号的
    KuroNekoFan
        9
    KuroNekoFan   175 天前
    格式化工具能解决的问题就不要讨论了
    heyjei
        10
    heyjei   175 天前
    看项目带的 ESLint,如果没有看心情
    learnshare
        11
    learnshare   175 天前
    选一个合适的代码风格就行了
    https://github.com/airbnb/javascript
    liuy1994g
        12
    liuy1994g   175 天前 via Android
    js 不需要加分号啊
    chenliangngng
        13
    chenliangngng   175 天前
    不加。鉴于 js 不加分号乃糟粕之一,设置 IDE 保存时自动格式化帮加
    MrUser
        14
    MrUser   175 天前
    同意 9# 的,
    配置好格式化工具,加与不加一个快捷键就统一了。
    galikeoy
        15
    galikeoy   175 天前
    放心,不管你加不加,Babel 会帮你加的
    unicloud
        16
    unicloud   175 天前 via iPhone
    我习惯在结尾加上;
    这是在 jQuery 时代养成的习惯;
    mongodb
        17
    mongodb   175 天前   ❤️ 1
    Python 不加。
    所以我在 JS 里也不加。
    charlieputon
        18
    charlieputon   175 天前 via Android
    一般编辑器不是会提示;是多余的吗,如果在语法上的确是多余的。记得 idea 和 as 都是这样。
    ericls
        19
    ericls   175 天前 via iPhone
    不要浪费时间搞这些
    都是可以自动加或者去掉的东西 0 成本改变决定的东西
    ujued
        20
    ujued   175 天前 via iPhone
    站在极客的角度呢,不加会好些,看上去干净
    Blackricky
        21
    Blackricky   175 天前   ❤️ 1
    在 《你不知道的 JavaScript (中卷)》里专门有一个小节( 5.3 节)叫 [自动分号] 作者有认为需要加上分号。

    JavaScript 有时候会为代码自动加上分号, 自动分号插入( Automatic Semicolon Insertion,ASI )这是一种 “纠错”的机制,作者认为我们应该将这种机制的依赖降到最低。

    有兴趣可以去看看原书。



    我觉得说的很有道理,所以我加上了。
    beastk
        22
    beastk   175 天前 via iPhone
    话说压缩的时候,不加分号会导致无法闭合吗?
    molvqingtai
        23
    molvqingtai   175 天前 via Android
    不加
    S4msara
        24
    S4msara   175 天前 via Android
    习惯是有这么个习惯,所以 eslint 总是让我很难受,于是有在刻意提醒自己不加了
    mrcotter2013
        25
    mrcotter2013   175 天前 via iPhone
    不喜欢加,ESLint 和 Prettier 配置好自动去除多余的符号,空格,缩进一类的
    shanlanlan
        26
    shanlanlan   175 天前   ❤️ 1
    @Livid 2/4 楼强行广告。
    alexsunxl
        27
    alexsunxl   175 天前
    不加
    反正编译器会加上
    inhal
        28
    inhal   175 天前 via Android
    @beastk Quinlan?
    Track13
        29
    Track13   175 天前 via Android
    vue 不加分号,其他习惯加。
    sunmoon1983
        30
    sunmoon1983   175 天前
    强迫症必须加
    Livid
        31
    Livid   V2EX Moderator   175 天前 via iPhone
    @Mistwave
    @ddsfeng
    @shanlanlan

    谢谢。那个账号已经被彻底 ban。
    yiqiao
        32
    yiqiao   175 天前
    PHP 不是必须加「 ; 」的吗。。。
    不加你能运行?
    前端这个应该有规范吧。按规范来就好了啦
    magiclz233
        33
    magiclz233   175 天前
    我自己觉得加上好点,因为这样在看代码的时候更清晰一点,但是我们团队是不加,我就好多都是自己加上,写完了一格式化没了。但是在写 Java 的时候,又得加上,搞的有点乱
    drydiy
        34
    drydiy   175 天前
    我曾经也为这个烦恼。我尝试不加一段时间后,发现代码看起来简洁了一点,就不加了。
    其实需要手动加;的情况有这么几种:
    1、当你使用 return 返回内容时,注意代码块需要跟 return 在同一行。( break、throw、continue 等同理)
    2、注意 ()、[] 作为行头会跟上一行串联。
    ben1024
        35
    ben1024   175 天前
    看缘分加,顺手就加
    php 必须要加的
    jydeng
        36
    jydeng   175 天前
    团队统一就好。我们统一加,因为都有 java、c#背景,习惯了。
    no1xsyzy
        37
    no1xsyzy   175 天前
    @drydiy 1、不能算需要手动加,而是说自动加会多加
    2、的话建议加在开头(防御性编程)
    no1xsyzy
        38
    no1xsyzy   175 天前
    没什么好说的,我觉得这种可以自动化等价互转的问题甚至不能叫做代码规范。规范让人遵守以保证某种要求的,但这种问题你根本没必要去刻意遵守,只需要无脑让工具完成。
    至于用哪个,看哪个顺眼就行,如果看的量还没多到足以看任何一个顺眼,那就抛硬币决定 —— 直到你真觉得不顺眼了,那你显然知道该怎样了。
    DOLLOR
        39
    DOLLOR   175 天前
    不加分号的,能不能告诉我,如何避免这种问题?
    var a = b
    (function(){})()

    func()
    ['ul', 'ol'].map(func)
    ochatokori
        40
    ochatokori   175 天前 via Android
    @DOLLOR #39 37 楼回答了你的问题,遇到([的行开头加个分号就是了,人又不是死的,说不加就全部不加
    Tink
        41
    Tink   175 天前
    @QQAdele2 #4 你在说啥?
    lijsh
        42
    lijsh   175 天前
    看团队规范,反正 eslint 可以帮你 fix
    lxk11153
        43
    lxk11153   175 天前
    所以我选择加,See: "应该将这种机制的依赖降到最低"
    FaiChou
        44
    FaiChou   175 天前
    看过 react conf 里有一期, 一大佬在上面用 vim 讲解 react hooks, 他说过: 别问我为什么用 let 而不是 const, 年纪大了, 能少敲几下就少敲几个. (大概这么个意思)
    Curtion
        45
    Curtion   175 天前
    都是 eslint 来规范的,反正又不需要自己操作,如果是自己的项目就按照自己的想法来设置 eslint 嘛
    realkaiway
        46
    realkaiway   175 天前 via iPhone
    我个人写 react 配合 eslint 句末加;已经是一种习惯,但奇怪的是 vue-cli 的脚手架不搞这套,所以你要用脚手架的话那索性就不加
    creanme
        47
    creanme   175 天前
    @DOLLOR 这种得手动加
    wangyzj
        48
    wangyzj   175 天前
    eslint 我记得是没有的
    rain0002009
        49
    rain0002009   175 天前
    vue 这种因为一般都是经过 babel 处理一下 不加分号 代码更清晰
    egg 一般不会用 babel 的吧 加上分号更严谨
    Hanggi
        50
    Hanggi   175 天前
    别争了,加肯定是要加的,这是 js 标准。但是不需要手动加,用工具,自动添加。
    cepczkd
        51
    cepczkd   175 天前
    webstorm 不加好像会有一个提示颜色吧,然后一般就加上了。
    66beta
        52
    66beta   175 天前
    建议采用 airbnb 的 js 规范
    Mutoo
        53
    Mutoo   175 天前
    js 标准是建议加,但是 vue 的创史人 youyuxi 不喜欢加,所以他们不建议加。

    不加的话会有歧义,例如

    return
    { status: "OK" }

    即使用 prettier 或 eslint 也不能正确地自动加上分号,会出现两种结果:

    return { status: "OK" };



    return;
    { status: "OK" };
    Revenant
        54
    Revenant   175 天前
    然而,对使用分号的人而言,ASI 机制有时会很棘手。例如:

    return
    {
    name: "ESLint"
    };

    这个看起来像是个 return 语句返回一个对象文本。然而,JavaScript 引擎将代码解释成:
    return;
    {
    name: "ESLint";
    }

    事实上,一个分号插入到 return 语句之后,导致(块中的标签文本)下面的代码不可达。
    puilu
        55
    puilu   175 天前
    配上 eslint,启用保存修复,爱+不+,前端规范乱得跟什么一样。
    Martox
        56
    Martox   175 天前
    不加分号,老 vue 了
    amundsen
        57
    amundsen   175 天前
    一楼说得对
    amundsen
        58
    amundsen   175 天前
    我自己写已经没有加分号的习惯了,但是注意一些语法插件(lint)执行时可能会出问题。
    redbuck
        59
    redbuck   175 天前
    @beastk 会的。

    比如
    ```
    (()=>{})()
    [].map(i=>i.value)
    ```
    这样的代码就会报错。



    不过我是从来不会手动加分号的----代码能做的事干嘛要人做。
    lguan
        60
    lguan   175 天前
    按团队来,我要求加,定 eslint,让 eslintrc 自动加
    pan176
        61
    pan176   175 天前
    个人角度,加的。
    gzzchh
        62
    gzzchh   174 天前 via Android
    习惯性加了 ,然后 jetbrains 提醒我我又一行一行去掉了
    BigFoxGod
        63
    BigFoxGod   174 天前
    团队统一 eslint 规则不加
    nortonlai
        64
    nortonlai   153 天前 via Android
    天天加,然后 ctrl+ s 所有分号全部被消失
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2981 人在线   最高记录 5168   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 11:51 · PVG 19:51 · LAX 04:51 · JFK 07:51
    ♥ Do have faith in what you're doing.