關於使用 babel 7 x 的一點疑問

2021-09-14 06:42:26 字數 1672 閱讀 9347

開發十年,就只剩下這套架構體系了! >>>

今天同事在打包專案**時發現報錯了,我跟蹤了一下發現是之前踩過的坑,uglifyjs 在進行**壓縮時**必須是 es5,不能包含 es6 的語法。所以我在寫乙個包時,最後都會用 babel 轉乙份 es5 的**,然後在上傳到 npm,然而現在越來越多的第三方包的作者不這麼去做了,有的人說自己的包是給 node 用的,沒必要轉,想在 browser 環境跑就自己配置轉一下吧云云。 於是我就想著在 webpack 配置一下 exclude,將需要額外轉換的包排除在 exclude 之外,這樣應該就沒問題了。然後試了一下發現並沒有什麼卵用,剛好周五,著急回家,然後今天閒下來的時候自己寫了個例子試了一下。就發現了乙個奇怪的點。google 和 github 上都沒找到什麼線索。 首先我安裝了乙個 [email protected] 這個包,原始碼部分摘抄如下:

'use strict';

var valueof = symbol.prototype.valueof;

const typeof = require('kind-of');

第四行就有乙個 es6 的 const 語法了。然後我就配置了一下 .babelrc:

"@babel/env", ,

"usebuiltins": "usage"

}

這裡就不用解釋了,ie6 肯定不支援 const 了,然後 webpack 的配置我也簡單的改了一下:

return true;

},use:

}

這裡就是除了 shallow-clone 和 src 目錄下的**,其他的全部都 exclude 掉。然後我就開始 build **了,最後就發現生成的**裡面赫然有這樣的東西:

var r=symbol.prototype.valueof;const o=n(139);
我就很鬱悶了,我都已經配置了需要 babel 轉換一下這個包,為啥還會有 const 語法。而且我清楚的記得以前的 uglifyjs 是沒法壓縮非 es5 語法的 js 的啊,難道是我現在用的新版本的原因,這個我一會兒再去看看,重點是為啥會有 es6 的語法,然後我就開始到處找解釋了。最後在 babel 的官網下找到了這麼一句話:

babel.config.js is for you!

眾所周知,babel 一般我們都會用 .babelrc 或者 babel.config.js 來配置它,我之前理解這兩個東西的效果是一樣的,而且我的配置一般都是靜態的,所以我一直使用的都是 .babelrc。但是官網上這句話讓我很鬱悶,compile node_moudles 是啥意思,.babelrc 難道不能編譯 node_modules 目錄嗎?我谷歌了一下,沒有找到解釋。 然後我決定用 babel.config.js 來試試看。 babel.config.js 和上面 .babelrc 同樣的配置,結果如下:

var r=symbol.prototype.valueof,o=e(164);
看樣子 const 被乾掉了,所以 babel 官網文件誠不欺我。 繼續尋找我的答案去了~~~

後續,剛剛使用了舊版本的 babel-loader 7.x | babel 6.x 試了一下,發現在 .babelrc 的情況下也是正常的。

關於Linux STL使用的一點總結

前兩天發現linux使用stl的程式記憶體占用比較大,通過valgrind檢查沒有發現記憶體洩露,分析可能與stl有關,所以單獨對stl進行測試 程式新建10個執行緒,採用分離方式,每隔2秒建立乙個執行緒。1.對new 與 delete的測試 在每個執行緒中new 很大一塊記憶體,然後間隔20s後d...

關於 WinScp 的一點使用經驗

在嵌入式平台下 是,使用ssh登陸,可以使用winscp提供的圖形介面,支援拖拽,滑鼠直接開啟,甚是好用。使用winscp 登陸的方式有,scp和sftp兩種,之前乙隻用scp,但後來出現了如下錯誤,登陸無法載入目錄 這種錯誤乙隻沒有解決。後來就是用了sftp。這需要把sftp server檔案 s...

關於iBatis selectKey的一點筆記

技術前提 我們使用ibatis作為持久層方案 技術場景 假設我們有兩張表,一張主表main,一張子表sub,並且主表的主鍵是由資料庫維護的自增長的主鍵,子表中有乙個字段引用這個主鍵,那麼當我們插入主表資料後,就需要馬上返回這個自增長的主鍵。解決方案 可以在insert時通過ibatis的select...