想问一下大家在写 vue 代码时,习惯句末加上 ; 吗? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
npm
V2EX    Vue.js

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

  •  
  •   npm 2020-02-19 20:41:11 +08:00 8616 次点击
    这是一个创建于 2112 天前的主题,其中的信息可能已经有所发展或是发生改变。
    我看 vue 官方都没有在句末加上 ;

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

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

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

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

    也欢迎大家关注 袋鼠数据库管理工具( DBKangaroo )的成长。。。
    varzy
        5
    varzy  
       2020-02-19 20:58:38 +08:00 via iPhone
    写项目第一件事就是配置格式化工具,未来想换风格只需要改个配置重新跑一下格式化命令就好
    Mistwave
        6
    Mistwave  
       2020-02-19 21:01:52 +08:00 via iPhone &bsp; 2
    xqin
        7
    xqin  
       2020-02-19 21:04:04 +08:00   2
    @Livid 有人发广告 @QQAdele2

    v2ex.com/member/QQAdele2/replies


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

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

    有兴趣可以去看看原书。



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

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

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

    不加的话会有歧义,例如

    return
    { status: "OK" }

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

    return { status: "OK" };



    return;
    { status: "OK" };
    Revenant
        54
    Revenant  
       2020-02-20 15:34:29 +08:00
    然而,对使用分号的人而言,ASI 机制有时会很棘手。例如:

    return
    {
    name: "ESLint"
    };

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

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

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



    不过我是从来不会手动加分号的----代码能做的事干嘛要人做。
    lguan
        60
    lguan  
       2020-02-20 18:38:07 +08:00
    按团队来,我要求加,定 eslint,让 eslintrc 自动加
    pan176
        61
    pan176  
       2020-02-20 19:35:05 +08:00
    个人角度,加的。
    gzzchh
        62
    gzzchh  
       2020-02-21 05:02:35 +08:00 via Android
    习惯性加了 ,然后 jetbrains 提醒我我又一行一行去掉了
    BigFoxGod
        63
    BigFoxGod  
       2020-02-21 09:10:35 +08:00
    团队统一 eslint 规则不加
    nortonlai
        64
    nortonlai  
       2020-03-12 21:32:46 +08:00 via Android
    天天加,然后 ctrl+ s 所有分号全部被消失
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5298 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 30ms UTC 08:41 PVG 16:41 LAX 00:41 JFK 03:41
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86