npm
V2EX  ›  Vue.js

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

  •  
  •   npm · Feb 19, 2020 · 9513 views
    This topic created in 2451 days ago, the information mentioned may be changed or developed.
    我看 vue 官方都没有在句末加上 ;

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

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

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

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

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

    v2ex.com/member/QQAdele2/replies


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

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

    有兴趣可以去看看原书。



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

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

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

    不加的话会有歧义,例如

    return
    { status: "OK" }

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

    return { status: "OK" };

    或

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

    return
    {
    name: "ESLint"
    };

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

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

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



    不过我是从来不会手动加分号的----代码能做的事干嘛要人做。
    lguan
    lguan
    Feb 20, 2020
    60
    按团队来,我要求加,定 eslint,让 eslintrc 自动加
    pan176
    pan176
    Feb 20, 2020
    61
    个人角度,加的。
    gzzchh
    gzzchh
    Feb 21, 2020 via Android
    62
    习惯性加了 ,然后 jetbrains 提醒我我又一行一行去掉了
    BigFoxGod
    BigFoxGod
    Feb 21, 2020
    63
    团队统一 eslint 规则不加
    nortonlai
    nortonlai
    Mar 12, 2020 via Android
    64
    天天加,然后 ctrl+ s 所有分号全部被消失
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   2193 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 109ms · UTC 11:27 · PVG 19:27 · LAX 03:27 · JFK 06:27
    ♥ Do have faith in what you're doing.