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

在沒有構建系統的情況下編寫 Javascript

開發
我想談談構建系統對我有什么吸引力,為什么我(通常)仍然不使用它們,以及一些前端 Javascript 庫要求你使用構建系統時,為什么我覺得這讓我感到沮喪。

嗨!這周我一直在寫一些 Javascript,和往常一樣,當我開始一個新的前端項目時,我面臨的問題是:我是否應該使用構建系統?

我想談談構建系統對我有什么吸引力,為什么我(通常)仍然不使用它們,以及一些前端 Javascript 庫要求你使用構建系統時,為什么我覺得這讓我感到沮喪。

我寫這篇文章是因為我看到的大多數關于 JS 的文章都假定你正在使用構建系統,而對于像我這樣的人來說,編寫非常簡單的、不需要構建系統的小型 Javascript 項目時,構建系統可能反而添加了很多麻煩。

什么是構建系統?

構建系統的思路是,你有一堆 Javascript 或 Typescript 代碼,你想在把它放到你的網站上之前把它翻譯成不同的 Javascript 代碼。

構建系統可以做很多有用的事情,比如:

  • (出于效率的考慮)將 100 多個 JS 文件合并成一個大的捆綁文件
  • 將 Typescript 翻譯成 Javascript
  • 對 Typescript 進行類型檢查
  • 精簡化
  • 添加 Polyfills 以支持舊的瀏覽器
  • 編譯 JSX
  • 搖樹優化Tree Shaking(刪除不使用的 JS 代碼以減少文件大小)
  • 構建 CSS(像 ??tailwind?? 那樣)
  • 可能還有很多其他重要的事情

正因為如此,如果你今天正在構建一個復雜的前端項目,你可能會使用 Webpack、Rollup、Esbuild、Parcel 或 Vite 等構建系統。

很多這些功能對我很有吸引力,我過去使用構建系統也是出于這樣一些原因: 例如,??Mess With DNS?? 使用 Esbuild 來翻譯 Typescript,并將許多文件合并成一個大文件。

目標:輕松地對舊的小網站進行修改

我做了很多簡單的小網站(??之一??、??之二??、??之三??、??之四??),我對它們的維護精力大約為 0,而且我改變它們的頻率很低。

我的目標是,如果我有一個 3、5 年前做的網站,我希望能在 20 分鐘內,

  • 在一臺新的電腦上從 GitHub 獲取源代碼
  • 做一些修改
  • 把它放到互聯網上

但我對構建系統(不僅僅是 Javascript 構建系統!)的經驗是,如果你有一個 5 年歷史的網站,要重新構建這個網站會非常痛苦。

因為我的大多數網站都很小,所以使用構建系統的 優勢 很小 —— 我并不真的需要 Typescript 或 JSX。我只要有一個 400 行的 ??script.js?? 文件就可以了。

示例:嘗試構建 SQL 實驗場

我的一個網站(??SQL 試驗場??)使用了一個構建系統(它使用 Vue)。我最后一次編輯該項目是在 2 年前,是在另一臺機器上。

讓我們看看我今天是否還能在我的機器上輕松地構建它。首先,我們要運行 ??npm install??。下面是我得到的輸出:

$ npm install
[lots of output redacted]
npm ERR! code 1
npm ERR! path /Users/bork/work/sql-playground.wizardzines.com/node_modules/grpc
npm ERR! command failed
npm ERR! command sh /var/folders/3z/g3qrs9s96mg6r4dmzryjn3mm0000gn/T/install-b52c96ad.sh
npm ERR! CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/surface/init.o
npm ERR! CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/avl/avl.o
npm ERR! CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/backoff/backoff.o
npm ERR! CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/channel/channel_args.o
npm ERR! CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/channel/channel_stack.o
npm ERR! CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/channel/channel_stack_builder.o
npm ERR! CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/channel/channel_trace.o
npm ERR! CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/channel/channelz.o

在構建 ??grpc?? 時出現了某種錯誤。沒問題。反正我也不需要這個依賴關系,所以我可以花 5 分鐘把它拆下來重建。現在我可以 ??npm install?? 了,一切正常。

現在讓我們試著構建這個項目:

$ npm run build
? Building for production...Error: error:0308010C:digital envelope routines::unsupported
at new Hash (node:internal/crypto/hash:71:19)
at Object.createHash (node:crypto:130:10)
at module.exports (/Users/bork/work/sql-playground.wizardzines.com/node_modules/webpack/lib/util/createHash.js:135:53)
at NormalModule._initBuildHash (/Users/bork/work/sql-playground.wizardzines.com/node_modules/webpack/lib/NormalModule.js:414:16)
at handleParseError (/Users/bork/work/sql-playground.wizardzines.com/node_modules/webpack/lib/NormalModule.js:467:10)
at /Users/bork/work/sql-playground.wizardzines.com/node_modules/webpack/lib/NormalModule.js:499:5
at /Users/bork/work/sql-playground.wizardzines.com/node_modules/webpack/lib/NormalModule.js:356:12
at /Users/bork/work/sql-playground.wizardzines.com/node_modules/loader-runner/lib/LoaderRunner.js:373:3
at iterateNormalLoaders (/Users/bork/work/sql-playground.wizardzines.com/node_modules/loader-runner/lib/LoaderRunner.js:214:10)
at iterateNormalLoaders (/Users/bork/work/sql-playground.wizardzines.com/node_modules/loader-runner/lib/LoaderRunner.js:221:10)
at /Users/bork/work/sql-playground.wizardzines.com/node_modules/loader-runner/lib/LoaderRunner.js:236:3
at runSyncOrAsync (/Users/bork/work/sql-playground.wizardzines.com/node_modules/loader-runner/lib/LoaderRunner.js:130:11)
at iterateNormalLoaders (/Users/bork/work/sql-playground.wizardzines.com/node_modules/loader-runner/lib/LoaderRunner.js:232:2)
at Array.<anonymous> (/Users/bork/work/sql-playground.wizardzines.com/node_modules/loader-runner/lib/LoaderRunner.js:205:4)
at Storage.finished (/Users/bork/work/sql-playground.wizardzines.com/node_modules/enhanced-resolve/lib/CachedInputFileSystem.js:43:16)
at /Users/bork/work/sql-playground.wizardzines.com/node_modules/enhanced-resolve/lib/CachedInputFileSystem.js:79:9

??這個 Stack Overflow 的答案?? 建議運行 ??export NODE_OPTIONS=--openssl-legacy-provider?? 來解決這個錯誤。

這很有效,最后我得以 ??npm run build?? 來構建這個項目。

這其實并不壞(我只需要刪除一個依賴關系和傳遞一個略顯神秘的 Node 選項!),但我寧愿不被那些構建錯誤破壞。

對我來說,對于小項目來說,構建系統并不值得

對我來說,一個復雜的 Javascript 構建系統對于 500 行的小項目來說似乎并不值得 —— 它意味著放棄了在未來能夠輕松更新項目的能力,以換取一些相當微小的好處。

Esbuild 似乎更穩定一些

我想為 Esbuild 大聲叫好: 我 ??在 2021 年了解到 Esbuild??,并用于一個項目,到目前為止,它確實是一種更可靠的構建 JS 項目的方式。

我剛剛嘗試在一臺新電腦上構建一個我最后一次改動在 8 個月前的 Esbuild 項目,結果成功了。但我不能肯定的說,兩年后我是否還能輕松的建立那個項目。也許會的,我希望如此!

不使用構建系統通常是很容易的

下面是 ??Nginx 實驗場?? 代碼中導入所有庫的部分的樣子:

<script src="js/vue.global.prod.js"></script>
<script src="codemirror-5.63.0/lib/codemirror.js"></script>
<script src="codemirror-5.63.0/mode/nginx/nginx.js"></script>
<script src="codemirror-5.63.0/mode/shell/shell.js"></script>
<script src="codemirror-5.63.0/mode/javascript/javascript.js"></script>
<link rel="stylesheet" href="codemirror-5.63.0/lib/codemirror.css">
<script src="script.js "></script>

這個項目也在使用 Vue,但它只是用 ??<script src?? 來加載 Vue —— 前端沒有構建過程。

一個使用 Vue 的無構建系統模板

有幾個人問如何在沒有構建系統的情況下開始編寫 Javascript。當然,如果你想的話,你可以寫原味的 JS,但我常用的框架是 Vue 3。

??這是我做的一個小模板??,用于啟動一個沒有構建系統的 Vue 3 項目。它只有 2 個文件和大約 30 行的 HTML/JS。

有些庫需要你使用構建系統

構建系統這些事情最近盤旋在我的腦海里,因為這周我正在用 CodeMirror 5 做一個新項目,我看到有一個新版本,CodeMirror 6。

所以我想 —— 很酷,也許我應該使用 CodeMirror 6 而不是 CodeMirror 5。但是 —— 似乎沒有構建系統你就不能使用 CodeMirror 6(根據 ??遷移指南??),所以我打算堅持使用 CodeMirror 5。

同樣地,你以前可以把 Tailwind 作為一個巨大的 CSS 文件下載,但是 ??Tailwind 3?? 似乎根本不能作為一個大的 CSS 文件使用,你需要運行 Javascript 來構建它。所以我現在要繼續使用 Tailwind 2。(我知道,我知道,你不應該使用大的 CSS 文件,但是它驗收只有 300KB,而且我真的不希望有構建步驟)

(更正:看起來 Tailwind 在 2021 年發布了一個 ??獨立的命令行工具??,這似乎是一個不錯的選擇)

我不完全確定為什么有些庫不提供無構建系統版本 —— 也許發布無構建系統版本會給庫增加很多額外的復雜性,而維護者認為這不值得。或者,庫的設計意味著由于某種原因,不可能發布無構建系統版本。

我希望有更多的無構建系統的 Javascript 技巧

到目前為止,我的主要策略是:

  • 在某個庫的網站上搜索 “CDN”,找到一個單獨的 Javascript 文件
  • 使用 ??https://unpkg.com?? 來查看該庫是否有一個我可以使用的內置版本
  • 托管我自己的庫的版本,而不是依賴可能崩潰的 CDN
  • 編寫我自己的簡單集成方案,而不是拉入另一個依賴關系(例如,前幾天我為 Vue 編寫了自己的 CodeMirror 組件)。
  • 如果我想要一個構建系統,就使用 Esbuild

還有一些看起來很有趣但我還沒有研究過的東西:

責任編輯:龐桂玉 來源: Linux中國
相關推薦

2021-10-26 15:59:18

WiFi 6WiFi 5通信網絡

2019-12-12 15:32:48

ITvCenterVMware

2023-03-10 21:48:52

Go語言消息隊列

2019-02-27 12:00:09

開源Org模式Emacs

2025-02-13 09:45:31

2022-07-31 23:55:23

區塊鏈加密貨幣代幣

2022-02-12 00:05:53

開發軟件硬件

2023-03-09 08:17:46

Google存儲設備

2023-09-14 09:27:19

Java系統

2010-06-30 10:55:13

SQL Server日

2018-07-31 16:20:12

Windows 10Windows密碼

2020-06-12 10:03:01

線程安全多線程

2021-06-04 09:17:13

JavaScriptBoolean函數

2020-04-02 11:16:28

Linux進程高并發

2016-12-01 18:57:39

火狐瀏覽器Firefox

2017-07-05 18:25:00

2020-11-18 09:26:52

@property裝飾器代碼

2015-06-01 06:39:18

JavaJava比C++

2017-06-14 16:00:11

2022-11-15 11:02:21

點贊
收藏

51CTO技術棧公眾號

91香蕉视频在线播放| 国产亚洲一区二区三区四区| 欧美三级韩国三级日本一级| 亚洲激情啪啪| 亚洲AV无码精品色毛片浪潮| 香蕉国产精品偷在线观看不卡| 在线观看亚洲视频| 国内自拍偷拍视频| 日韩成人影音| 亚洲一区二区三区在线看| 蜜桃传媒视频麻豆一区| 国产又粗又猛又黄| 一区二区日本视频| 久久亚洲精品毛片| 最近中文字幕免费视频| 欧美黄视频在线观看| 色综合久久久久久久久| av中文字幕av| 国产69久久| 不卡影院免费观看| 成人午夜两性视频| 无码视频在线观看| 亚洲日本国产| 欧美成人一区二区三区电影| 51妺嘿嘿午夜福利| 国产欧美自拍一区| 精品污污网站免费看| 大肉大捧一进一出好爽视频| 午夜伦理在线视频| 亚洲欧洲国产日韩| 亚洲精品tv久久久久久久久| 天堂av电影在线观看| 国产成人精品免费看| 国产精品一区二区久久久久| 免费在线不卡视频| 在线观看日韩av电影| 久久九九全国免费精品观看| 卡一卡二卡三在线观看| 日韩欧美黄色| 亚洲精品国产电影| 国产精品无码自拍| av日韩一区| 欧美精品精品一区| 欧美成年人视频在线观看| 校园春色亚洲色图| 一本色道久久加勒比精品| 国产精品一卡二卡在线观看| 久久精品人人做人人爽| 亚洲色图日韩精品| 欧美性感美女一区二区| 亚洲美女性生活视频| yy1111111| 麻豆一区一区三区四区| 亚洲国产精品久久| 亚州av综合色区无码一区| 国产精品18hdxxxⅹ在线| 日韩女优电影在线观看| 国产成人av片| 盗摄牛牛av影视一区二区| 精品国产一区二区亚洲人成毛片| 91视频福利网| 91精品久久久久久综合五月天 | wwwwww欧美| av片在线观看| 亚洲午夜视频在线观看| 欧日韩免费视频| 国产网站在线| 在线亚洲精品福利网址导航| 黄色aaa级片| 国产乱子精品一区二区在线观看| 欧美日韩在线播| mm131亚洲精品| 精品国产亚洲一区二区在线观看| 日韩一区二区三区在线视频| 国产乱淫av麻豆国产免费| 国产欧美啪啪| 尤物九九久久国产精品的特点 | 亚洲国产综合人成综合网站| 18禁网站免费无遮挡无码中文 | 狠狠躁夜夜躁人人躁婷婷91 | 亚洲天堂中文字幕在线观看| 精品免费日韩av| 亚洲av成人无码一二三在线观看| 女人丝袜激情亚洲| 日韩网站在线观看| 国产一国产二国产三| 亚洲国产裸拍裸体视频在线观看乱了中文 | 91在线中文字幕| 少妇精品高潮欲妇又嫩中文字幕| 久久久精品免费网站| 青青草原国产免费| 蜜桃av在线播放| 欧美日韩免费一区二区三区| 久久久久无码国产精品一区李宗瑞 | 日本免费网站视频| 国内揄拍国内精品久久| 日本成熟性欧美| 99在线小视频| 久久久久国产一区二区三区四区 | 亚洲啪啪91| 国产精品色悠悠| 亚洲免费不卡视频| 欧美国产一区二区| 给我免费播放片在线观看| 午夜av成人| 精品久久久久久最新网址| 妺妺窝人体色WWW精品| 国模吧视频一区| 国产精品亚发布| 天天躁日日躁狠狠躁伊人| 一区二区视频| 91麻豆国产在线观看| 亚洲一区二区三区午夜| 成入视频在线观看| 7777精品伊人久久久大香线蕉| 欧美xxxxx精品| 亚洲精品tv久久久久久久久久| 欧美在线性爱视频| www香蕉视频| 亚洲婷婷国产精品电影人久久| 狠狠97人人婷婷五月| 欧一区二区三区| 日韩在线观看网址| 无码人妻久久一区二区三区不卡| 国产99精品视频| 精品国产无码在线| 日本综合视频| 精品亚洲国产成av人片传媒| 免看一级a毛片一片成人不卡| 美女视频第一区二区三区免费观看网站| 国产欧美亚洲日本| 欧美日韩色网| 日韩女优av电影在线观看| 国产精品18在线| 蜜桃av一区二区在线观看| 免费观看成人高| 久草在线中文最新视频| 精品99999| 激情小说中文字幕| 国产福利精品一区二区| 在线成人性视频| 激情久久一区二区| 蜜桃成人av| 久久中文精品视频| 国产精品久久久久久69| 中文字幕av一区二区三区| 波多野结衣家庭教师视频| 欧美激情99| 欧美一级电影久久| 三级国产在线观看| 欧美日韩免费网站| 国产伦精品一区二区三区妓女| 在线不卡欧美| 精品久久久久久中文字幕动漫| gogo高清在线播放免费| 精品国产髙清在线看国产毛片| 日本精品人妻无码77777| 国产伦精品一区二区三区在线观看 | 欧美尤物巨大精品爽| 青草久久伊人| 在线免费观看日韩欧美| 日韩毛片无码永久免费看| 全国精品久久少妇| 亚洲欧洲一区二区| 粉嫩av国产一区二区三区| 不卡中文字幕av| 亚洲成人精品女人久久久| 亚洲国产精品人人做人人爽| 在线观看国产三级| 另类天堂av| 亚洲自拍的二区三区| 国产精品久久久久久久久久久久久久久 | 女人十八毛片嫩草av| 日韩精品五月天| 亚洲欧洲久久| 白白在线精品| 日本不卡免费高清视频| 日本韩国在线视频爽| 日韩欧美国产综合一区| 自拍偷拍欧美亚洲| 中文子幕无线码一区tr | 成人18视频在线播放| 激情五月开心婷婷| 欧美aaaa视频| 高清视频一区二区三区| 综合另类专区| 久久精品国亚洲| 五月婷婷狠狠干| 欧美日韩在线综合| 精品视频一区二区在线观看| 久久奇米777| 日本一二三四区视频| 一本色道久久综合亚洲精品高清| 日韩视频专区| 成人av激情人伦小说| 国产精品久久久久久久久久小说 | 亚洲bt欧美bt日本bt| 爱啪啪综合导航| 在线成人激情视频| 亚洲免费国产视频| 欧美综合色免费| 国产精品suv一区二区69| 国产欧美日韩三区| 国产免费无码一区二区| 日韩不卡一区二区三区| 国产女主播av| 日韩精品欧美激情一区二区| 激情久久av| 国产精品一区二区三区av| 日韩av免费看网站| 丰满诱人av在线播放| 一区二区三区四区视频| 四虎永久在线观看| 欧美一区二区三区思思人| 精品黑人一区二区三区| 亚洲高清免费在线| 亚洲国产123| 日韩大片在线免费观看| 一本色道久久综合精品竹菊| 性欧美疯狂猛交69hd| 久久亚洲一区二区三区四区| www.四虎精品| 精品在线免费视频| 黑森林精品导航| 亚洲欧美日韩综合国产aⅴ| 一本色道久久88亚洲精品综合| 国产精品密蕾丝视频下载| 国产一区二区在线观看免费播放| 国产精一区二区| 国产精品久久久久久久久久久不卡 | 亚洲人在线观看视频| 日韩精品一区二区三区四区| 亚洲综合一区中| 欧美日韩在线不卡| 波多野结衣在线观看一区| 天天亚洲美女在线视频| 国产一级做a爰片在线看免费| 亚洲精品成人悠悠色影视| 女人18毛片毛片毛片毛片区二| 欧美激情在线观看视频免费| av小说在线观看| 久久久久久夜精品精品免费| 香蕉视频黄色在线观看| 91色porny在线视频| 久久久久麻豆v国产精华液好用吗 在线观看国产免费视频 | 最近2019年好看中文字幕视频| 日本私人网站在线观看| 亚洲成人黄色网址| 日本美女一级视频| 亚洲福利视频免费观看| 蜜桃在线一区二区| 亚洲国产精品va在线看黑人| 特黄aaaaaaaaa真人毛片| 日韩成人黄色av| 九色在线播放| 最好看的2019的中文字幕视频| 日本中文字幕在线播放| 日韩一区二区三区xxxx| www免费视频观看在线| 欧美成人精品在线观看| 欧美hdxxxxx| 97超级碰碰人国产在线观看| 成人香蕉视频| 国产精品久久久久免费a∨大胸 | 国产毛片久久| av无码精品一区二区三区| 另类人妖一区二区av| 免费不卡av网站| 成人免费三级在线| 成年人免费观看视频网站 | 亚洲美女精品成人在线视频| 九色国产在线观看| 日韩视频欧美视频| 麻豆福利在线观看| 欧洲成人在线视频| 欧美国产视频| 国产精品国产亚洲精品看不卡15| 免费一级在线观看| 狠狠狠色丁香婷婷综合激情 | 欧洲美女精品免费观看视频 | 丁香六月色婷婷| 亚洲精品视频二区| 老司机在线视频二区| 欧美黄色片在线观看| videos性欧美另类高清| 国产精品稀缺呦系列在线 | 五月天色一区| 欧美三级不卡| 韩国日本美国免费毛片| 国产精品亚洲一区二区三区在线| 亚洲国产精品自拍视频| 国产精品你懂的在线欣赏| 国产亚洲欧美久久久久| 在线视频欧美精品| 可以免费看毛片的网站| 中文字幕不卡av| 草美女在线观看| 国产欧美韩国高清| 欧美中文一区| 日韩中文在线字幕| 日韩国产高清在线| www.17c.com喷水少妇| 国产精品久久777777| 色网站在线播放| 91精品国产色综合久久久蜜香臀| 色av男人的天堂免费在线| 日韩在线观看免费av| 在线天堂资源www在线污| 97超级碰碰| 日韩在线不卡| av动漫免费看| 成a人片亚洲日本久久| 五月综合色婷婷| 一本大道综合伊人精品热热 | www.日本三级| 久久精品99国产精品日本| 国产男女猛烈无遮挡a片漫画| 夜夜爽夜夜爽精品视频| 97超碰国产在线| 亚洲三级 欧美三级| 2019中文字幕在线电影免费| 成人免费观看网址| 色婷婷色综合| 人妻无码视频一区二区三区| 波多野结衣在线aⅴ中文字幕不卡| 91香蕉视频污在线观看| 欧美在线短视频| 黄视频在线观看免费| 久久久久免费视频| 精品一区二区三区视频在线播放| 亚洲不卡1区| 夜夜嗨一区二区| 欧美熟妇精品一区二区蜜桃视频 | 黄色片网站在线免费观看| 欧美精品一区在线观看| 综合久久2019| 亚洲mm色国产网站| 亚洲女同一区| 日本77777| 椎名由奈av一区二区三区| 中文字幕一级片| 色多多国产成人永久免费网站| 欧美成人app| 亚洲欧洲一区二区福利| 麻豆91小视频| 小早川怜子一区二区的演员表| 欧美三级一区二区| 欧美尤物美女在线| 91综合免费在线| 欧美精选在线| 国产av一区二区三区传媒| 亚洲一区二区精品3399| 免费看av毛片| 青青草精品毛片| 精品av一区二区| 中文字幕成人在线视频| 亚洲视频一区二区在线| 国产99对白在线播放| 欧美激情日韩图片| 希岛爱理av免费一区二区| 国产黄色特级片| 中文字幕成人网| 国产免费黄色大片| 久久久久久久久久久免费精品| 国产精品22p| 日本女优爱爱视频| 中文字幕在线观看一区| 国产jzjzjz丝袜老师水多 | 法国空姐在线观看免费| 国产1区2区3区精品美女| 香蕉免费毛片视频| 在线观看国产精品日韩av| 国产在线观看免费播放| 亚洲一二三四区| 蜜桃视频在线观看视频| 国产精品无av码在线观看| 欧美激情第10页| 精品无码人妻一区| 欧美日产国产精品| 成av人片在线观看www| 日本成人三级| 国产精品一区二区在线播放 | 欧美性淫爽ww久久久久无| 成年人黄视频在线观看| 久久爱av电影| 国内精品自线一区二区三区视频| 亚洲国产精品午夜在线观看| 国产一区二区三区在线播放免费观看 | 久久久久久久久亚洲精品| 成人国产精品久久久久久亚洲| 亚洲一级影院| 成人小视频免费看| 精品999在线播放| 亚洲国产伊人| 免费观看日韩毛片| 亚洲免费在线电影| 黄色片在线播放| 肥熟一91porny丨九色丨| 日韩主播视频在线| www.天天色|