精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

一文帶你了解新一代的編譯工具 SWC

開發(fā) 開發(fā)工具
最近前端圈掀起了一陣 rust 風(fēng),凡是能用 rust 重寫的前端工具就用 rust 重寫,今天介紹的工具就是通過 rust 實現(xiàn)的 bable:swc,一個將 ES6 轉(zhuǎn)化為 ES5 的工具。

最近前端圈掀起了一陣 rust 風(fēng),凡是能用 rust 重寫的前端工具就用 rust 重寫,今天介紹的工具就是通過 rust 實現(xiàn)的 bable:swc,一個將 ES6 轉(zhuǎn)化為 ES5 的工具。

而且在 swc 的官網(wǎng),很直白說自己和 babel 對標,swc 和 babel 命令可以相互替換,并且大部分的 babel 插件也已經(jīng)實現(xiàn)。

使用 rust 的一個優(yōu)勢就是快,比如我們之前的一個項目,將 babel 替換成 swc 后,編譯速度從原來的 7 秒提升到了 1 秒,效率直接爆炸。

上手

swc 與 babel 一樣,將命令行工具、編譯核心模塊分化為兩個包。

  • @swc/cli 類似于 @babel/cli;
  • @swc/core 類似于 @babel/core;
  1. npm i -D @swc/cli @swc/core 

通過如下命令,可以將一個 ES6 的 JS 文件轉(zhuǎn)化為 ES5。

  1. npx swc source.js -o dist.js 

下面是 source.js 的代碼:

  1. const start = () => { 
  2.   console.log('app started'

代碼中囊括了 ES6 的兩個特性,const 聲明 和 箭頭函數(shù)。經(jīng)過 swc 轉(zhuǎn)化后,這兩個特性分別被轉(zhuǎn)化成了 var 聲明 和 function 匿名函數(shù)。

配置文件

swc 與 babel 一樣,支持類似于 .babelrc 的配置文件:.swcrc,配置的格式為 JSON。

  1.   "jsc": { // 編譯規(guī)則 
  2.     "target""es5", // 輸出js的規(guī)范 
  3.     "parser": { 
  4.       // 除了 ecmascript,還支持 typescript 
  5.       "syntax""ecmascript"
  6.       // 是否解析jsx,對應(yīng)插件 @babel/plugin-transform-react-jsx 
  7.       "jsx"false
  8.       // 是否支持裝飾器,對應(yīng)插件 @babel/plugin-syntax-decorators 
  9.       "decorators"false
  10.       // 是否支持動態(tài)導(dǎo)入,對應(yīng)插件 @babel/plugin-syntax-dynamic-import 
  11.       "dynamicImport"false
  12.       // …… 
  13.       // babel 的大部分插件都能在這里找到對應(yīng)配置 
  14.     }, 
  15.     "minify": {}, // 壓縮相關(guān)配置,需要先開啟壓縮 
  16.   }, 
  17.   "env": { // 編譯結(jié)果相關(guān)配置 
  18.     "targets": { // 編譯結(jié)果需要適配的瀏覽器 
  19.       "ie""11" // 只兼容到 ie 11 
  20.     }, 
  21.     "corejs""3" // corejs 的版本 
  22.   }, 
  23.   "minify"true // 是否開啟壓縮 

babel 的插件系統(tǒng)被 swc 整合成了 jsc.parser 內(nèi)的配置,基本上大部分插件都能照顧到。而且,swc 還繼承了壓縮的能力,通過 minify 屬性開啟,jsc.minify 用于配置壓縮相關(guān)的規(guī)則,更詳細的配置可查看文檔。

Node APIs

通過在 node.js 代碼中,導(dǎo)入 @swc/core 模塊,可以在 node.js 中調(diào)用 api 直接進行代碼的編譯,這對 CLI 工具的開發(fā)來說是常規(guī)操作。

  1. // swc.mjs 
  2. import { readFileSync } from 'fs' 
  3. import { transform } from '@swc/core' 
  4.  
  5. const run = async () => { 
  6.   const code = readFileSync('./source.js''utf-8'
  7.  const result = await transform(code, { 
  8.     filename: "source.js"
  9.   }) 
  10.   // 輸出編譯后代碼 
  11.   console.log(result.code) 
  12.  
  13. run() 

打包代碼

除了將代碼轉(zhuǎn)義,swc 還提供了一個簡易的打包能力。我們新建一個 src 文件夾,在里面新建兩個文件:index.js、utils.js。

  1. // src/index.js 
  2. import { log } from './utils.js' 
  3. const start = () => log('app started'
  4. start() 
  1. // src/utils.js 
  2. export const log = function () { 
  3.   console.log(...arguments) 
  4. export const errorLog = function () { 
  5.   console.error(...arguments) 

可以看到 index.js 導(dǎo)入了 utils.js 中的一個方法,然后我們新建一個 spack.config.js 文件,該文件是 swc 打包的配置文件。

  1. // spack.config.js 
  2. module.exports = { 
  3.   entry: { 
  4.     // 打包的入口 
  5.     web: __dirname + "/src/index.js"
  6.   }, 
  7.   output: { 
  8.     // 打包后輸出的文件夾 
  9.     path: __dirname + "/dist"
  10.   }, 
  11. }; 

然后在命令行運行:

  1. $ npx spack 

打包成功后,會在 dist 目錄輸出一個 web.js 文件。

可以看到,不僅將 index.js、utils.js 打包成了一個文件,還進行了 tree shaking,將 utils.js 中沒有使用的 errorLog 方法刪掉了。

能不能用?

babel 畢竟經(jīng)過了這么多年的發(fā)展,不管是 bug 輸了,還是社區(qū)活躍度都遠遠優(yōu)于 swc。所以,如果是小產(chǎn)品試水還是可以試一下 swc 的,舊項目如果已經(jīng)使用了 babel 還是不建議進行遷移。

在使用的過程,還是發(fā)現(xiàn)了一些小問題。比如,如果我使用了 async function,swc 會自動導(dǎo)入 regenerator-runtime 模塊。

  1. // 編譯前,有個 async 方法 
  2. const start = async () => { 
  3.   console.log('app started'

調(diào)用 swc 編譯后,代碼如下:

這個結(jié)果看起來是沒問題的,但是 swc 與 babel 類似,也有 helpers(@swc/helpers),同時提供了 externalHelpers 開關(guān), 如果把 externalHelpers 設(shè)置為 true,swc 會將一些工具類,通過模塊的形式導(dǎo)入。

  1. // .swcrc 
  2.   "jsc": { 
  3.     "externalHelpers"true 
  4.   } 

而 externalHelpers 的默認值是 false,那這個時候,regenerator-runtime ,到底是通過模塊的形式導(dǎo)入,還是把整個代碼寫入到文件?

swc 正好有個 issue [https://github.com/swc-project/swc/issues/1461] 在討論這個問題。

除了上面說的這個問題,其實還有一點,就是作者覺得之前的架構(gòu)有問題,正在加緊重寫 2.0 版本,感覺可以期待一下,另外提一句,swc 的作者是一個 97 年的韓國小哥,目前大學(xué)都還沒畢業(yè),最后我也只能說一句:牛逼!

【編輯推薦】

 

責(zé)任編輯:姜華 來源: 自然醒的筆記本
相關(guān)推薦

2023-11-20 08:18:49

Netty服務(wù)器

2023-11-06 08:16:19

APM系統(tǒng)運維

2022-11-11 19:09:13

架構(gòu)

2023-10-27 08:15:45

2023-11-08 08:15:48

服務(wù)監(jiān)控Zipkin

2022-02-24 07:34:10

SSL協(xié)議加密

2020-02-02 15:14:24

HTTP黑科技前端

2024-02-04 09:44:41

量子計算量子量子物理

2025-09-12 16:31:04

TiDBMCP ServerAI工具

2022-04-28 09:22:46

Vue灰度發(fā)布代碼

2020-10-08 14:32:57

大數(shù)據(jù)工具技術(shù)

2025-01-15 09:06:57

servlet服務(wù)器Java

2022-09-29 13:09:38

DataClassPython代碼

2022-05-16 09:14:28

前端構(gòu)建工具

2021-12-16 12:42:18

AIoT人工智能物聯(lián)網(wǎng)

2019-06-13 15:38:34

甲骨文OracleExadata

2018-10-22 08:14:04

2022-02-18 10:13:07

SolrElasticSea開源

2023-03-31 08:16:53

Flutter優(yōu)化內(nèi)存管理

2022-09-06 11:21:49

光網(wǎng)絡(luò)光纖
點贊
收藏

51CTO技術(shù)棧公眾號

国产小视频一区| 欧美日韩生活片| 人成在线免费网站| 国产亚洲精品免费| 亚洲在线免费观看| 天堂网av手机版| 久久一区二区三区喷水| 亚洲第一天堂无码专区| 网站一区二区三区| 国产羞羞视频在线播放| 日本一区二区三区在线不卡| 92国产精品视频| 国产精品一区二区三区四| 欧美wwwww| 日韩电视剧免费观看网站| jizz18女人| 伊人成综合网站| 亚洲精品中文在线观看| 日本一区二区三区视频在线播放 | 欧美成人精品一区二区男人看| 国产91在线|亚洲| 国产精品av电影| 久久在线视频精品| 久久综合电影| 亚洲欧美日本另类| 激情成人在线观看| 国产亚洲人成a在线v网站| 黑人巨大精品欧美一区二区三区 | 国产精品视频入口| 国产精品久久久久久免费 | 凸凹人妻人人澡人人添| 免费人成网站在线观看欧美高清| 97色在线视频| 麻豆亚洲av成人无码久久精品| 国产精品一线天粉嫩av| 亚洲国产精品人人爽夜夜爽| www.成人黄色| www.国产精品| 91福利视频网站| 91专区在线观看| 国产亚av手机在线观看| 一区二区三区在线观看国产| 精品日韩在线播放| 毛片av在线| 中文字幕一区日韩精品欧美| 久久综合狠狠综合久久综青草| 亚洲老妇色熟女老太| 国产精品自拍一区| 亚洲一区二区三区sesese| 一级特黄aa大片| 蜜桃av一区二区在线观看| 国产精品久久久| 无码人妻精品一区二区50| 亚洲欧美清纯在线制服| 国模视频一区二区三区| 国产性生活网站| 亚洲视屏一区| 91精品国产亚洲| 国产又黄又粗又爽| 嫩草成人www欧美| 日本精品性网站在线观看| 亚洲精品男人的天堂| 久久精品午夜| 国产精品久久久久久久久| 中文字幕日韩国产| 久久国产精品第一页| 成人午夜小视频| va婷婷在线免费观看| 懂色av中文一区二区三区| 国产日韩一区二区| 欧美伦理影视网| 日本一区二区三级电影在线观看| 亚洲高清在线观看一区| 免费黄色在线网站| 一个色综合av| 免费看一级大黄情大片| 日本不卡一二三| 欧美日韩国产小视频| 男人午夜视频在线观看| 国产精品欧美大片| 亚洲欧美国产精品| 2014亚洲天堂| 亚洲国产日韩在线| 国产精品高潮呻吟视频| 国产免费一区二区三区免费视频| 福利电影一区二区| 免费在线观看一区二区| 免费a级在线播放| 亚洲国产欧美日韩另类综合| 日本三区在线观看| 国产一区二区久久久久| 日韩精品久久久久| 午夜成人亚洲理伦片在线观看| 欧美一区久久| 欧美在线影院在线视频| 97在线公开视频| 91在线观看污| 一区二区三区|亚洲午夜| 国模私拍视频在线播放| 欧美日韩免费一区二区三区| 艳妇乳肉豪妇荡乳xxx| 精品视频日韩| 久久久免费观看| 亚洲字幕av一区二区三区四区| 成人毛片老司机大片| 日韩国产一区久久| a级片免费在线观看| 欧美久久一二三四区| 日韩无码精品一区二区| 亚洲成人最新网站| 欧亚精品在线观看| 亚洲av综合色区无码一区爱av| 日本一区二区三区视频视频| 水蜜桃色314在线观看| 亚洲综合资源| 国产午夜精品全部视频播放| 久操免费在线视频| 久久99精品一区二区三区| 麻豆av一区二区| 欧美亚洲系列| 欧美二区三区的天堂| 亚洲人成人无码网www国产| 亚洲私人影院| 成人欧美一区二区| 麻豆传媒在线免费看| 日本精品一级二级| 视频免费在线观看| 国模吧视频一区| 91久久久久久久| 日韩黄色影院| 欧洲激情一区二区| 麻豆av免费观看| 在线欧美日韩| 懂色av一区二区三区在线播放| 黄色一级大片在线免费看产| 在线观看成人免费视频| a毛片毛片av永久免费| 伊人精品成人久久综合软件| 97超碰人人模人人爽人人看| 精品176二区| 欧美日本一区二区三区| 亚欧精品视频一区二区三区| 久久亚洲一区| 欧美日韩综合久久| 欧美日韩国产v| 亚洲欧美制服第一页| 视频一区二区三区四区五区| 91丨九色丨尤物| 日日碰狠狠添天天爽超碰97| 林ゆな中文字幕一区二区| 久久久久久香蕉网| 天堂中文资源在线观看| 精品久久中文字幕久久av| 成人性生活免费看| 国产亚洲精品v| 麻豆91蜜桃| 国产成人精品一区二区三区视频| 中文字幕日韩精品有码视频| 在线免费观看日韩视频| 成人欧美一区二区三区白人| 在线播放免费视频| 欧美久久久久| 精品欧美国产| 日本韩国欧美| 日韩在线中文字| a天堂视频在线| 五月天网站亚洲| 熟女俱乐部一区二区视频在线| 日本美女视频一区二区| 波多野结衣三级在线| 秋霞午夜一区二区三区视频| 久久免费在线观看| 久久精品色图| 91 com成人网| 国产精品suv一区二区| 久久亚区不卡日本| 中文字幕第88页| 韩国在线一区| 日本婷婷久久久久久久久一区二区| 最新日韩一区| 欧美日韩aaaa| 青青青手机在线视频观看| 欧美日韩在线播放三区四区| 少妇久久久久久被弄高潮| 97成人超碰视| 中文字幕在线观看日| 在线欧美福利| 亚洲激情一区二区三区| 视频一区日韩精品| 国产97色在线| 国产美女福利在线| 日韩精品欧美激情| 国产精品九九九九| 亚洲1区2区3区视频| www.av天天| 成人性生交大片免费| 天天色综合天天色| 亚洲久久在线| 一区二区在线观| 秋霞蜜臀av久久电影网免费 | 超碰在线免费97| 亚洲综合免费观看高清完整版在线| 精品人妻一区二区三区视频| 激情综合亚洲精品| 妺妺窝人体色www在线小说| 我不卡手机影院| 欧美高清视频一区| 91成人噜噜噜在线播放| 国产精品视频yy9099| 在线看片福利| 欧美黑人巨大精品一区二区| 天天在线视频色| 亚洲男人天堂古典| 亚洲不卡免费视频| 欧美精三区欧美精三区| 在线视频一区二区三区四区| 亚洲国产精品久久人人爱| 影音先锋男人看片资源| 久久久久国产精品麻豆ai换脸| 欧美性猛交xx| 久久99国产精品免费| 久久综合久久色| 国产精品毛片在线看| 一卡二卡三卡视频| 欧美一区网站| 综合网五月天| 久久在线视频| 亚洲精品在线免费看| 要久久爱电视剧全集完整观看| 7777精品伊久久久大香线蕉语言| 成人黄色在线| 国产成人精品综合久久久| 悠悠资源网亚洲青| 91禁国产网站| 国产一二三在线| 欧美激情精品久久久久久黑人| 二区三区在线观看| 久久亚洲精品成人| 巨大荫蒂视频欧美另类大| 色婷婷综合成人av| 国产福利片在线| 一区二区三区国产视频| 国产日韩精品在线看| 亚洲天堂av在线免费观看| 同心难改在线观看| 精品亚洲一区二区三区| 亚洲欧洲精品视频| 亚洲精品小视频| 久久免费看视频| 国产亚洲欧美视频| 日本在线观看| 久热在线中文字幕色999舞| 黄色精品在线观看| 九九综合九九综合| www成人免费观看| 97超碰国产精品女人人人爽 | 中文字幕乱码在线| av电影在线观看一区| av网页在线观看| 91色porny蝌蚪| 精品欧美一区二区久久久| 国产亚洲1区2区3区| 国产免费嫩草影院| 亚洲免费观看高清在线观看| 久久久久久av无码免费网站| 亚洲第一综合色| 国产精品自拍99| 在线观看日韩电影| 91国偷自产中文字幕久久| 欧美狂野另类xxxxoooo| 亚洲乱码精品久久久久..| 日韩久久午夜影院| 成人77777| 美日韩丰满少妇在线观看| 国内老司机av在线| 日韩av日韩在线观看| 91麻豆精品国产综合久久久| 国产精品久久一区二区三区| 免费成人结看片| 欧美与动交zoz0z| 99精品视频免费观看视频| 亚洲精品高清无码视频| 狠狠色综合日日| 国产精品九九视频| 国产精品水嫩水嫩| 青青草手机在线视频| 日韩欧美在线视频免费观看| 中文字幕欧美在线观看| 精品国产露脸精彩对白| 成人免费高清在线播放| 久久91亚洲精品中文字幕奶水| 亚洲伊人av| 成人在线中文字幕| 亚洲动漫在线观看| 日本老太婆做爰视频| 午夜综合激情| 中文字幕在线视频一区二区| ww亚洲ww在线观看国产| 久久久精品视频免费观看| 欧美性感美女h网站在线观看免费| 国产又黄又大又爽| 亚洲人午夜精品| 超碰在线资源| 国产精品视频久久久| 国内精品麻豆美女在线播放视频| 五月天综合网| 国产精品最新自拍| 欧美日韩一区二区区| 国产清纯在线一区二区www| 久久久精品国产sm调教网站| 精品1区2区3区| 牛牛澡牛牛爽一区二区| 欧美劲爆第一页| 亚洲在线资源| 亚洲欧洲国产精品久久| 蜜桃伊人久久| 国产美女视频免费观看下载软件| 最新中文字幕一区二区三区| 懂色av蜜臀av粉嫩av喷吹| 亚洲级视频在线观看免费1级| 国产三区视频在线观看| 国产精品自拍视频| 国产va免费精品观看精品视频| 免费拍拍拍网站| 国产精品1024| 亚洲不卡在线播放| 欧美日韩一区二区三区在线| 欧美另类自拍| 欧洲s码亚洲m码精品一区| 久久影院资源站| 2019日韩中文字幕mv| 国产精品一区一区| 日本一级特级毛片视频| 欧美日韩国产三级| 国产二区视频在线观看| 日韩av色在线| 教室别恋欧美无删减版| 成人黄色片视频| 久久一日本道色综合| 可以在线观看av的网站| 亚洲激情在线观看视频免费| 欧美巨大丰满猛性社交| 乱一区二区三区在线播放| 亚洲综合丁香| 一区二区黄色片| 日本国产一区二区| 国产黄在线播放| 国产精品丝袜一区二区三区| 日本成人小视频| 孩娇小videos精品| 中文字幕在线不卡一区| 国产精品国产三级国产aⅴ| 萌白酱国产一区二区| 2021年精品国产福利在线| 久久精品国产sm调教网站演员| 成人av中文字幕| 日本在线播放视频| 国产亚洲欧洲高清| 久久免费资源| 久久天天东北熟女毛茸茸| 国产成人在线色| 亚洲 欧美 视频| 亚洲视频精品在线| 日日夜夜综合| 欧美日韩午夜爽爽| 99精品一区二区| 五月激情丁香网| 久久精品国产一区二区电影| 91成人午夜| 99色精品视频| 国产精品一品| 91精品福利在线| 成人免费视频| 亚洲最大的av网站| 亚洲毛片播放| 人人人妻人人澡人人爽欧美一区| 在线免费观看不卡av| 国产在线观看91| 国产日韩三区| 麻豆久久一区二区| 精品无码免费视频| 亚洲欧美日韩图片| 999精品嫩草久久久久久99| 黄色一级片黄色| 99国内精品久久| 亚洲无码精品国产| 97超级碰碰人国产在线观看| 精品久久久久久久久久久aⅴ| 樱花草www在线| 日韩欧美亚洲一二三区| 国产黄色在线网站| 美国av一区二区三区 | 国产精品区在线| 亚洲中国最大av网站| 国产免费av在线| 国产精品大全| 蜜桃久久av一区| 日韩特级黄色片| 美女福利视频一区| 伊人久久综合影院|