[TOC]
# 插件
大多數人使用 Babel 的內建預設就足夠了,不過 Babel 提供了更多更細粒度的能力。
`@babel/preset-*` 就是一些預先配置好的插件的集合,如果你想要做一些不一樣的事情你會手動去設定插件,這和使用預設幾乎完全相同。
```js
{
"plugins": [
- "transform-es2015-classes"
+ ["transform-es2015-classes", { "loose": true }] // "寬松"模式,通過放棄一些標準中的行為來生成更簡化且性能更好的代碼
]
}
```
# 自定義插件
**自定義插件原理:自定義的babel插件實際上是定義一個實例化的visitor對象,來處理一系列的AST節點,進而操作代碼。**
# Visitor 對象
babel在處理一個節點時,是以訪問者的形式獲取節點的信息,并進行相關的操作,這種操作是通過visitor對象實現的。
在visitor 中定義了處理不同節點的函數。
# 參考
* [官網-Babel 插件](http://babeljs.io/docs/plugins/)
* [Babel 插件開發指南](https://github.com/brigand/babel-plugin-handbook/blob/master/translations/zh-Hans/README.md)
* [《從 0 到 1 手寫 babel》思路分享](https://juejin.cn/post/6962861837800964133)
* [從零開始編寫一個 babel 插件](https://juejin.im/post/5a17d51851882531b15b2dfc)
* [寫一個 babel 插件](https://cnodejs.org/topic/5a9317d38d6e16e56bb808d1)
- 講解 Markdown
- 示例
- SVN
- Git筆記
- github 相關
- DESIGNER'S GUIDE TO DPI
- JS 模塊化
- CommonJS、AMD、CMD、UMD、ES6
- AMD
- RequrieJS
- r.js
- 模塊化打包
- 學習Chrome DevTools
- chrome://inspect
- Chrome DevTools 之 Elements
- Chrome DevTools 之 Console
- Chrome DevTools 之 Sources
- Chrome DevTools 之 Network
- Chrome DevTools 之 Memory
- Chrome DevTools 之 Performance
- Chrome DevTools 之 Resources
- Chrome DevTools 之 Security
- Chrome DevTools 之 Audits
- 技巧
- Node.js
- 基礎知識
- package.json 詳解
- corepack
- npm
- yarn
- pnpm
- yalc
- 庫處理
- Babel
- 相關庫
- 轉譯基礎
- 插件
- AST
- Rollup
- 基礎
- 插件
- Webpack
- 詳解配置
- 實現 loader
- webpack 進階
- plugin 用法
- 輔助工具
- 解答疑惑
- 開發工具集合
- 花樣百出的打包工具
- 紛雜的構建系統
- monorepo
- 前端工作流
- 爬蟲
- 測試篇
- 綜合
- Jest
- playwright
- Puppeteer
- cypress
- webdriverIO
- TestCafe
- 其他
- 工程開發
- gulp篇
- Building With Gulp
- Sass篇
- PostCSS篇
- combo服務
- 編碼規范檢查
- 前端優化
- 優化策略
- 高性能HTML5
- 瀏覽器端性能
- 前后端分離篇
- 分離部署
- API 文檔框架
- 項目開發環境
- 基于 JWT 的 Token 認證
- 扯皮時間
- 持續集成及后續服務
- 靜態服務器搭建
- mock與調試
- browserslist
- Project Starter
- Docker
- 文檔網站生成
- ddd