V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
jruit
V2EX  ›  分享创造

Babel 教程,自己写的第一份教程

  •  3
     
  •   jruit · 2020-05-08 08:09:12 +08:00 · 4275 次点击
    这是一个创建于 1664 天前的主题,其中的信息可能已经有所发展或是发生改变。

    自己写了一份教程 Babel 教程

    在最初做前端开发的时候,自己被 Babel 那一堆 babel-preset-es2015 、babel-preset-es2016 、babel-preset-stage-0 、babel-preset-stage-1 、 @babel/preset-env 和 @babel/plugin-transform-runtime 搞糊涂了。到底该用哪些,到底怎么配置才是对的。

    然后在这种混乱状态下做完第一年开发的时候,才渐渐对 Babel 有了认知。但是认知也是不全的,从 Babel6 到 Babel7,大量学到的东西其实是淘汰或错误的。零散的,错误的知识碎片,给了我们这些初学者很大的学习难度。

    现在是做前端开发的第五年了,仍然可以看到大量错误的文章在技术社区出现,在教你用 babel-preset-stage-1 这些已经早已淘汰的东西。于是便写了这份教程,希望能对 JavaScript 开发者有所帮助。

    教程主体已基本完成,@babel/preset-env 预设和 @babel/plugin-transform-runtime 插件涉及到的知识太多,耗费了不少精力和时间。为了更好的把这两个东西讲透彻,之后会进行一些补充和改进。大家有页面 UI 建议或代码运行等错误的问题都可以提出来,我努力改进。

    教程地址 Babel 教程 - 姜瑞涛的官方网站,配套的代码在 github https://github.com/jruit/babel-tutorial

    第 1 条附言  ·  2020-08-07 21:50:36 +08:00
    Babel 教程地址现在是 https://www.jiangruitao.com/babel/
    17 条回复    2020-12-03 22:35:17 +08:00
    wszgrcy
        1
    wszgrcy  
       2020-05-08 08:31:43 +08:00 via Android
    js 配置这玩意太乱,如果可以建议 ts+core-js......我感觉为了 js 支持某种特性再配置 bable,有种手工活的感觉。。。。不过还是支持楼主分享
    troycode
        2
    troycode  
       2020-05-08 08:42:24 +08:00
    绑定 好帖
    bojue
        3
    bojue  
       2020-05-08 09:48:35 +08:00
    只是配置的话对初学者有用,有经验的感觉意义不大,可以从原理层讲解的更深入一些
    m0cha
        4
    m0cha  
       2020-05-08 09:53:15 +08:00 via iPhone
    好贴收藏
    teawithlife
        5
    teawithlife  
       2020-05-08 10:17:53 +08:00
    写的很好,对我这种初学者很有帮助
    xrr2016
        6
    xrr2016  
       2020-05-08 11:41:38 +08:00
    赞一个👍
    ixoy
        7
    ixoy  
       2020-05-08 11:42:32 +08:00
    以深入了解就到了抽象语法树( AST )
    tienyc
        8
    tienyc  
       2020-05-08 11:47:45 +08:00
    先赞再看
    jruit
        9
    jruit  
    OP
       2020-05-08 12:07:17 +08:00
    @wszgrcy js 生态确实有些乱,只要浏览器厂商标准有变化,前端开发就要会一直面对这个问题
    jruit
        10
    jruit  
    OP
       2020-05-08 12:08:08 +08:00
    @bojue
    @ixoy 感谢意义,后面会考虑增加关于原理方面的内容
    dinjufen
        11
    dinjufen  
       2020-05-08 12:37:37 +08:00
    我也感觉,搜到的东西太乱了,而且前端变化快,两年前写的东西不一定敢照用。
    angel001ma
        12
    angel001ma  
       2020-05-08 13:14:16 +08:00   ❤️ 1
    教程写的不错,这里我提下这些库目前的状况
    对于 babel-preset-es2015 、babel-preset-es2016 、babel-preset-stage-0 、babel-preset-stage-1,目前可以使用 @babel/preset-env 代替

    对于 @babel/plugin-transform-runtime 和 @babel/polyfill 的区别,可以看 https://segmentfault.com/q/1010000005596587?from=singlemessage&isappinstalled=1

    babel-plugin-transform-runtime 、babel-polyfill...这些 babel 前缀的是 babel6 及之前版本使用的,babel7 都使用 @babel 前缀的 @babel/xxx
    angel001ma
        13
    angel001ma  
       2020-05-08 13:20:44 +08:00
    实际项目可以使用 @babel/polyfill 做前置的引入,基本不会有语法兼容问题
    做插件或者库,推荐只使用 @babel/preset-env 和 @babel/plugin-transform-runtime 做语法糖的转换,代码中也别涉及新的 API 。例如,Iterator 、Generator 、Set 、Maps 、Proxy 、Reflect 、Symbol 、Promise 等全局对象,以及一些定义在全局对象上的实例方法(例如静态方法 Array.isArray 可支持,实例方法 array.includes 不支持)
    jruit
        14
    jruit  
    OP
       2020-05-08 19:08:51 +08:00
    @angel001ma 感谢分享
    FourAndHalf
        15
    FourAndHalf  
       2020-05-09 19:23:05 +08:00
    感谢分享
    william1780
        16
    william1780  
       2020-12-03 17:09:38 +08:00
    看完了,讲得很清楚。讲 babel 原理的教程或 github 项目,楼住有推荐吗?
    jruit
        17
    jruit  
    OP
       2020-12-03 22:35:17 +08:00
    @william1780 暂时没有。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3402 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 11:51 · PVG 19:51 · LAX 03:51 · JFK 06:51
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.