精品欧美一区二区三区在线观看 _久久久久国色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ù)棧公眾號

麻豆久久久9性大片| 红桃视频国产精品| 国产成人综合亚洲91猫咪| 亚洲福利在线播放| 欧美 日韩 国产 在线观看| 妖精视频一区二区| 黄色片网站在线观看| 国产精品手机在线播放 | 国产亚洲一区在线播放| 欧美成人精品激情在线视频| 国产精品一区二区免费福利视频 | 添女人荫蒂视频| 久久不射影院| 国产精品香蕉一区二区三区| 日韩性xxxx爱| av免费一区二区| 爱久久·www| 日韩高清在线不卡| 亚洲欧美日韩中文在线制服| 国产精品久久中文字幕| 姝姝窝人体www聚色窝| 激情综合激情| 亚洲福利小视频| 国产一级片自拍| 性国裸体高清亚洲| 26uuu久久天堂性欧美| 欧美亚洲一区在线| 女尊高h男高潮呻吟| 蜜桃视频m3u8在线观看| 91啪九色porn原创视频在线观看| 成人在线播放av| 欧美精品久久久久性色| 盗摄牛牛av影视一区二区| 亚洲国产成人高清精品| 国内一区在线| www.蜜桃av.com| 亚洲午夜av| 久久九九精品99国产精品| 久久出品必属精品| 国产精品186在线观看在线播放| 国产福利91精品| 国产精品主播视频| 欧产日产国产v| 欧美xxxxx视频| 日韩欧美色电影| 日韩在线综合网| 国内av一区二区三区| 麻豆成人av在线| 欧美日韩国产成人在线观看| 韩国无码一区二区三区精品| 日韩不卡在线视频| 一本色道久久加勒比精品 | 国产精品91免费在线| 中文字幕有码在线播放| 综合久久2023| 亚洲图片欧美激情| 国产亚洲精品久久飘花| www.麻豆av| 国产成人亚洲综合a∨猫咪| 国产有码在线一区二区视频| 久草资源在线视频| 欧美激情 亚洲a∨综合| 精品视频在线导航| 中文字幕第17页| 成人涩涩视频| 午夜亚洲福利老司机| 色乱码一区二区三在线看| 精品国产无码一区二区三区| 国产在线播放一区| 日韩美女中文字幕| 九九热这里有精品视频| 亚洲久久久久| 亚洲精品按摩视频| 日韩欧美理论片| 精品一区二区三区视频在线播放| 欧美色播在线播放| 久久综合伊人77777麻豆| 三级av在线播放| 国产精品一区二区在线看| 成人综合国产精品| 国语对白做受69按摩| 亚洲国产一区二区精品专区| 日韩中文第一页| 成人免费av片| 久久大综合网| 亚洲视频在线观看免费| 精品久久国产精品| 国产激情美女久久久久久吹潮| 久久久国产高清| 亚洲成人av| 在线看福利67194| 国产老熟女伦老熟妇露脸| 国产一区二区三区免费在线| 欧美亚洲禁片免费| 国产精品秘入口18禁麻豆免会员| 18加网站在线| 国产精品久99| 亚洲国产精品一区二区第四页av| 性xxxfllreexxx少妇| 国产成人午夜片在线观看高清观看| 99影视tv| 亚洲国产综合一区| 国产一区二区三区四区五区美女| 国产精品久久久久久久免费大片 | 在线成人免费观看| 日本爱爱免费视频| 巨茎人妖videos另类| 欧美日韩五月天| 另类小说第一页| 日韩欧美中文在线观看| 亚洲一级片在线看| 色一情一交一乱一区二区三区| 美腿丝袜亚洲图片| 欧美一区二区视频在线观看| 91国内在线播放| 国产图片一区| www.欧美免费| 天堂网中文字幕| 久久精品人人| 日韩av日韩在线观看| 国产熟女一区二区三区四区| 黄色日韩网站视频| 91深夜福利视频| 精品视频三区| 午夜精品久久久久久久99樱桃| 亚洲美女爱爱视频| 凹凸成人精品亚洲精品密奴| 最近2019中文字幕在线高清| 性无码专区无码| 日韩电影在线免费看| 国语精品中文字幕| 男男电影完整版在线观看| 久久精品亚洲一区二区三区浴池| 欧美污视频久久久| 日韩免费啪啪| 一区二区三区中文字幕| 精品视频在线观看一区| www.日韩| 亚洲精品久久视频| 美女又爽又黄视频毛茸茸| 欧美福利影院| 91久久夜色精品国产网站| av在线天堂| 色哟哟欧美精品| 新91视频在线观看| 色777狠狠狠综合伊人| 国产成人一区二区在线| 欧洲成人av| 日韩欧美一区视频| 国产ts丝袜人妖系列视频| 国产日韩欧美| 国产欧美日韩丝袜精品一区| 国产女人在线视频| 亚洲精品伦理在线| 国产精品自在自线| 91精品啪在线观看国产手机| 亚洲女人天堂色在线7777| 日韩精品一区二区三区国语自制| 石原莉奈在线亚洲二区| 亚洲一区二区三区乱码aⅴ蜜桃女| 狠狠综合久久av一区二区| 国产色婷婷亚洲99精品小说| 国产激情在线看| 日韩一区二区三区免费视频| 国产一区二区三区三区在线观看| 999视频在线| 高清不卡一区二区| 四虎永久国产精品| 香蕉久久一区| 亚洲人成电影网| 久久影视中文字幕| 国产精品嫩草影院com| 波多野结衣综合网| 一区二区三区韩国免费中文网站| 久久成人精品视频| 91视频久久久| 国产精品国产三级国产三级人妇 | 91精品韩国| 日韩精品一区二区三区老鸭窝| 久久久久久激情| 麻豆久久久久久| 公共露出暴露狂另类av| 欧洲精品一区二区三区| 最近2019中文字幕大全第二页| 国产精品欧美综合亚洲| 国产日韩三级在线| 日本黄大片一区二区三区| 日韩美女毛片| 午夜精品久久久久久久久久久久| 国产精选久久久| 亚洲国产wwwccc36天堂| 色哟哟精品观看| 国产一区二区三区日韩| 青青草原成人网| 国产精品久久占久久| 国产精品免费久久久| 欧洲免费在线视频| 91麻豆精品国产91久久久| 天天干天天操天天拍| 国产成人综合在线播放| 午夜免费一区二区| 亚洲香蕉网站| 色噜噜色狠狠狠狠狠综合色一| jizz性欧美2| 国产综合在线看| 国产 欧美 精品| 欧美视频一区二区三区在线观看 | 亚洲在线观看视频网站| 北岛玲heyzo一区二区| 久久国产天堂福利天堂| 国产精品人妻一区二区三区| 天天爽夜夜爽夜夜爽精品视频| 亚洲欧洲日韩综合| 欧美成人一区二免费视频软件| 欧美精品尤物在线| 96sao在线精品免费视频| 国产欧美日韩丝袜精品一区| 国产高清不卡| 欧美精品久久久久久久久| 日本wwwxxxx| 精品久久久久久久久国产字幕 | 国产精品入口免费视| 国产中文在线播放| 精品香蕉一区二区三区| 国产高清第一页| 亚洲福利视频一区二区| 日韩三级久久久| 久久国产视频网| 日韩精品视频久久| 欧美体内she精视频在线观看| 亚洲自拍高清视频网站| 国产精品久久久久久妇女| 日韩视频在线免费| 成人免费高清在线播放| 亚洲一级免费视频| 国产在线超碰| 亚洲欧美综合精品久久成人| 四虎免费在线观看| 欧美变态tickling挠脚心| 国产精品久久久免费视频| 一区二区日韩电影| 中文字幕在线观看的网站| 丁香网亚洲国际| 日本女优爱爱视频| 综合天堂av久久久久久久| 中文字幕免费高| 婷婷综合在线| 成人性做爰片免费视频| 91久久高清国语自产拍| 中文精品一区二区三区| 欧美一级色片| 就去色蜜桃综合| 深爱激情综合网| 91青青草免费在线看| 欧美理论影院| 久久99亚洲精品| 日韩另类在线| 尤物yw午夜国产精品视频明星 | 99热这里只有精品首页 | 四虎1515hh.com| 国产欧美日韩亚洲一区二区三区| 丁香花在线影院观看在线播放| 欧美日韩亚洲一区二区三区在线| 800av在线免费观看| 日韩免费在线| 一本久道久久综合| 日韩大胆成人| 欧美一二三区| 国产欧美自拍一区| 久久精品久久精品国产大片| 国产亚洲久久| 国产传媒一区二区| 亚洲第一论坛sis| 亚洲成色www久久网站| 久久精品久久久| 精品久久久久久无码中文野结衣| 日本一区二区高清不卡| 中文字幕一区二区三区精彩视频| 亚洲精品国产成人影院| 丝袜人妻一区二区三区| 久久精品日韩欧美| 欧美国产日韩另类| 成人av片在线观看| 91香蕉视频在线观看视频| 成人综合婷婷国产精品久久蜜臀| 在线观看日韩精品视频| 国产精品丝袜一区| 午夜理伦三级做爰电影| 国产精品久久夜| 国产精品成人久久| 一区二区三区欧美| 波多野结衣视频网站| 欧美日韩久久不卡| a片在线免费观看| 欧美性色19p| 在线观看免费中文字幕| 欧美在线观看一区二区| 精品人妻一区二区三区含羞草 | 精品人伦一区二区三电影| 亚洲精品一二三区| 国产极品国产极品| 亚洲欧洲中文日韩久久av乱码| 亚洲国产精品午夜在线观看| 欧美亚洲一区二区在线观看| 欧美在线 | 亚洲| www国产亚洲精品久久网站| 美女91在线看| 亚洲最大福利网站| 成人激情开心网| 青青草国产精品视频| 国产综合久久久久久鬼色| 日本黄色网址大全| 亚洲国产视频直播| 国产无遮挡又黄又爽又色| 欧美日韩中字一区| 日韩av成人| 久久久日本电影| 精品伊人久久| 一区二区精品在线| 毛片一区二区| 无码一区二区精品| 久久久亚洲综合| 国产亚洲精久久久久久无码77777| 欧美天堂一区二区三区| 日中文字幕在线| 久久久久久久久久av| 国产精品美女久久久久人| 天天久久人人| 免费永久网站黄欧美| 五月婷婷丁香色| 久久精品一区二区三区四区| 永久免费看片在线播放| 在线一区二区三区做爰视频网站| 少妇无套内谢久久久久| 精品视频www| 操人在线观看| 精品国产二区在线| 极品日韩av| 亚洲欧美日韩偷拍| 亚洲一二三四在线| 性生活免费网站| 欧美成人性色生活仑片| 免费精品一区| 中文字幕色呦呦| 国产激情一区二区三区| 欧美三级在线免费观看| 日韩视频一区在线观看| 四虎精品成人影院观看地址| 中文字幕在线观看日韩| 三级网站视频在在线播放| 亚洲va码欧洲m码| 一个色综合网| wwwww在线观看| 亚洲成人av在线电影| 少妇精品高潮欲妇又嫩中文字幕 | 日本老太婆做爰视频| 国产美女精品在线| 免费人成在线观看| 亚洲国产第一页| 天堂电影一区| 日韩精品国内| 亚洲小说欧美另类婷婷| 色哟哟视频在线| 午夜精品久久久久| 男男电影完整版在线观看| 国产精品视频yy9099| 围产精品久久久久久久| 男人的天堂免费| 天天综合色天天综合| 噜噜噜在线观看播放视频| 国产精品久久婷婷六月丁香| 久久大综合网| 无码人妻一区二区三区免费n鬼沢| 午夜日韩在线电影| 国产视频二区在线观看| 成人黄色av播放免费| 激情久久五月| 亚洲女优在线观看| 欧美一卡2卡3卡4卡| 高h视频在线播放| 日本午夜精品一区二区三区| 久久97超碰国产精品超碰| 日本少妇高潮喷水xxxxxxx| 欧美日韩一区二区三区视频| 中文字幕有码在线观看| 九色一区二区| 麻豆一区二区三| 国产无码精品久久久| 亚洲新中文字幕| 超碰在线成人| 日本久久精品一区二区| 一区二区三区精品久久久| 日本一卡二卡四卡精品| 91在线观看免费高清完整版在线观看| 亚洲国产日韩欧美一区二区三区| 国产精品av久久久久久无| 精品国产乱码91久久久久久网站| av在线下载| 99久久综合狠狠综合久久止| 免费日韩av片|