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

51精品秘密在线观看| 中文文精品字幕一区二区| 97久久精品人人澡人人爽缅北| 男男做爰猛烈叫床爽爽小说| 色在线中文字幕| 亚洲国产激情av| 成人黄色在线免费观看| 亚洲天堂av片| 婷婷久久国产对白刺激五月99| 精品女同一区二区| 成人黄色一区二区| av在线导航| 91网站最新网址| 91九色视频导航| 久久中文字幕免费| 欧美国产专区| 在线观看久久久久久| 欧美久久久久久久久久久| 日本精品在线一区| 午夜亚洲国产au精品一区二区| 日韩欧美视频一区二区| 免费观看黄色av| 久久99九九99精品| 亲子乱一区二区三区电影| 少妇影院在线观看| 成人写真视频| 日韩精品视频在线免费观看| 992tv人人草| 欧洲精品一区二区三区| 亚洲成a天堂v人片| 久久久99精品视频| 色网站免费在线观看| www国产精品av| 成人黄动漫网站免费| 国产熟女一区二区丰满| 奇米777欧美一区二区| 欧美在线视频网| 日韩av综合在线| 66国产精品| 色综合影院在线| a毛片毛片av永久免费| 国产精品毛片视频| 日韩欧美一级在线播放| 国产福利精品一区二区三区| 国产韩日精品| 欧美专区亚洲专区| www.国产区| a日韩av网址| 欧美性20hd另类| 精品久久一二三| av老司机免费在线| 亚洲国产精品久久久久秋霞影院 | 欧美一区二区三区免费视| 国产又黄又爽又无遮挡| 91精品一区二区三区综合在线爱| 日韩最新中文字幕电影免费看| 免费人成又黄又爽又色| 伊人春色精品| 国产一区二区三区欧美| 亚洲最大成人综合网| 精品国产91乱码一区二区三区四区 | 成人激情黄色小说| 国产精品久久久久久久免费大片 | 国产一区二区在线影院| 91久久精品美女| 国产999久久久| 国产成人三级在线观看| 99在线影院| 欧美天堂在线视频| 26uuu国产日韩综合| 欧美日韩精品免费看| 国产在线观看网站| 国产精品夫妻自拍| 国产1区2区3区中文字幕| 暧暧视频在线免费观看| 欧美日韩亚洲天堂| 日本激情视频在线| 4438五月综合| 精品国产三级电影在线观看| 亚洲中文字幕无码av| 免费看成人哺乳视频网站| 亚洲免费视频网站| www成人啪啪18软件| 亚洲精品成人无限看| 97福利一区二区| 无码人妻精品一区二| 极品少妇xxxx精品少妇偷拍| 国产高清精品一区| 青青九九免费视频在线| 国产精品麻豆一区二区| 日韩一区二区高清视频| 三妻四妾完整版在线观看电视剧| 欧美在线播放高清精品| 免费欧美一级片| 欧美日韩导航| xxxxx成人.com| 久草视频精品在线| 青青草一区二区三区| 51国产成人精品午夜福中文下载| 五月婷中文字幕| 国产精品二三区| 草草久久久无码国产专区| 国产成+人+综合+亚洲欧美| 日韩精品一区二区三区蜜臀| 久久久久亚洲av成人无码电影| 婷婷综合在线| 国产91色在线|| 成人爽a毛片一区二区| 久久久99免费| av免费看网址| 在线观看亚洲精品福利片| 日韩精品中文字幕在线观看| 人人澡人人澡人人看| 国产精品日本欧美一区二区三区| 成人日韩av在线| 日本免费一区二区三区最新| 一区二区三区在线影院| 亚洲欧美在线精品| 亚洲视频分类| 欧美精品电影免费在线观看| 亚洲图片欧美在线| 久久久久久97三级| 水蜜桃色314在线观看| 精品午夜视频| 最近2019年中文视频免费在线观看| 久久狠狠高潮亚洲精品| 国产高清成人在线| 宅男噜噜99国产精品观看免费| 一区二区精品伦理...| 日韩一区二区三区电影在线观看| 中文字幕黄色网址| 久久字幕精品一区| 久久精品magnetxturnbtih| 任你弄在线视频免费观看| 欧美日韩国产高清一区二区| xxx在线播放| 国产亚洲精品自拍| 久久精品国产一区二区三区不卡| 在线观看中文字幕的网站| 欧美日韩aaaaaa| 日本污视频网站| 可以免费看不卡的av网站| 蜜桃欧美视频| 巨茎人妖videos另类| 日韩成人中文字幕在线观看| 激情五月色婷婷| 成人深夜在线观看| 欧美图片激情小说| aiss精品大尺度系列| 欧美国产日韩中文字幕在线| 99草在线视频| 亚洲麻豆国产自偷在线| gogogo高清免费观看在线视频| 国产精品一国产精品| 国产精品草莓在线免费观看 | 久久黄色av网站| 五月激情丁香网| 国产日韩欧美电影| 五月婷婷激情久久| 欧美3p在线观看| 成人午夜激情免费视频| www红色一片_亚洲成a人片在线观看_| 777午夜精品视频在线播放| 最新一区二区三区| 国产大陆a不卡| 美女扒开大腿让男人桶| 老牛精品亚洲成av人片| 欧美专区第一页| 国产免费av高清在线| 欧美日韩午夜在线视频| 男女性高潮免费网站| 国产mv日韩mv欧美| 久久国产成人精品国产成人亚洲| 久久av综合| 国产日本欧美一区二区三区| av网站大全在线| 亚洲激情电影中文字幕| 91黑人精品一区二区三区| 国产精品视频免费看| 潘金莲一级淫片aaaaa| 亚洲精选91| 日韩精品久久久免费观看 | 欧美性受xxxx黑人xyx性爽| 国产白丝一区二区三区| 国产suv一区二区三区88区| 日本三级免费观看| 久久在线视频| 国产精品加勒比| 伊人久久高清| 欧美精品www| 成人午夜电影在线观看| 日韩亚洲国产中文字幕欧美| 日本一二三区视频| 国产精品久久久久一区 | 天天射天天干天天| 亚洲日本在线天堂| 91精品国产自产| 精品在线免费观看| www.99热这里只有精品| 色小子综合网| 精品午夜一区二区| 91麻豆精品国产综合久久久| 91国内产香蕉| 黄色成人影院| 亚洲欧美成人网| 中文字幕第99页| 亚洲成人精品影院| 国产91在线播放九色| av不卡一区二区三区| 五月天视频在线观看| 免费日韩一区二区| 国产精品视频一二三四区| 精品一区二区三| 国产日韩欧美综合精品| 日韩黄色三级| 国产999在线观看| av福利在线导航| 欧美精品在线第一页| jyzzz在线观看视频| 日韩电影中文字幕av| www.国产视频| 欧美高清视频在线高清观看mv色露露十八 | 精品人妻aV中文字幕乱码色欲| 91国内精品野花午夜精品| 福利一区二区三区四区| 亚洲黄色性网站| 成人18视频免费69| 欧美激情中文不卡| 色婷婷在线影院| 99久久99久久精品免费观看| 国内自拍偷拍视频| 激情av综合网| 中文字幕免费高清在线| 免费看日韩精品| caopor在线视频| 久久久噜噜噜久久狠狠50岁| 欧美亚洲精品一区二区| 精品福利av| 亚洲精品久久久久久久蜜桃臀| 天天综合精品| 亚洲综合激情五月| 国产韩日影视精品| 亚洲一区在线免费| 日韩黄色大片| 亚洲欧洲另类精品久久综合| 精品日韩一区| 亚洲国产另类久久久精品极度| 国产在线观看91一区二区三区| 鲁丝一区鲁丝二区鲁丝三区| 亚州国产精品| 欧美久久久久久| av影片在线一区| 亚洲精品在线观看免费| 91一区二区三区四区| 欧美少妇一级片| 综合激情一区| 日韩一级性生活片| 亚洲一区二区三区四区五区午夜 | 日韩视频一区二区三区| 亚洲第一页在线观看| 精品区一区二区| 手机在线观看免费av| 亚洲精品日韩在线| 搞黄视频免费在线观看| 日韩在线视频免费观看高清中文| 男人影院在线观看| 欧美区在线播放| 国产在线美女| 国产精品成熟老女人| 久久亚洲精品人成综合网| 成人免费淫片视频软件| 91成人精品在线| 免费观看成人高| 欧美亚洲国产激情| 热久久最新地址| 国产手机视频一区二区| 性生活免费在线观看| 国产精品资源在线看| 欧美大片免费播放器| 欧美激情一区二区三区在线| 天天爽天天爽天天爽| 亚洲超碰精品一区二区| 69视频免费看| 日韩一区二区在线观看视频播放| 蜜桃av鲁一鲁一鲁一鲁俄罗斯的| 亚洲免费av网址| 最新日本在线观看| 欧美中文字幕视频在线观看| 97精品国产99久久久久久免费| 3d精品h动漫啪啪一区二区 | 国产中文字幕一区| 好吊色视频一区二区三区| 国产欧美精品日韩区二区麻豆天美| 日韩福利小视频| 偷拍亚洲欧洲综合| 中文字幕一区二区在线视频 | 亚洲国产综合网| 亚洲色图18p| 手机在线免费av| 国产精品视频久久久久| 国产福利资源一区| 色一情一乱一伦一区二区三区丨| 午夜激情一区| 中文字幕在线导航| 成人aa视频在线观看| 99成人在线观看| 欧美性猛xxx| 亚洲精品中文字幕成人片| 伊人久久五月天| 美女高潮视频在线看| 97国产超碰| 国产精品99一区二区三| 日本一区二区黄色| 国产成人免费在线观看| 色www亚洲国产阿娇yao| 色中色一区二区| 色婷婷视频在线| 欧美成人精品一区二区三区| 韩日精品一区| 久久天堂国产精品| 亚洲电影在线| 久久久久亚洲av无码专区首jn| 亚洲国产精华液网站w| av黄色在线看| 亚洲精品白浆高清久久久久久| 在线黄色网页| 亚洲精品免费网站| 91影院成人| 欧美伦理片在线观看| 国产欧美一区二区精品忘忧草| 日韩精品一区二区在线播放| 日韩一级视频免费观看在线| 人人干在线视频| 国产精品人成电影在线观看| 久久不见久久见中文字幕免费| 精品无码一区二区三区在线| 成人精品国产免费网站| 久久久精品人妻一区二区三区四 | 综合久久久久久| 一区二区三区免费在线| 中文精品99久久国产香蕉| 国产不卡网站| 欧美三级电影在线播放| 免费欧美在线| 毛片网站免费观看| 色综合亚洲欧洲| 免费在线观看一级毛片| 国产a级全部精品| 国产成人调教视频在线观看| 毛片av免费在线观看| 国产婷婷色一区二区三区四区 | 欧美亚洲视频| 中国毛片在线观看| 色狠狠色狠狠综合| 第三区美女视频在线| 国产精品一区二区三区成人| 久久国产成人精品| 国产农村妇女精品久久| 亚洲最新在线观看| 色呦呦中文字幕| 青草青草久热精品视频在线观看| 极品美女一区二区三区| 天堂在线资源视频| 一区在线播放视频| www久久久久久| 91国偷自产一区二区三区的观看方式| 噜噜噜狠狠夜夜躁精品仙踪林| 无码aⅴ精品一区二区三区浪潮 | 久久亚洲欧美| 日本一二三不卡视频| 7878成人国产在线观看| av白虎一区| 日本在线观看不卡| 国产在线视频一区二区三区| 国产在线一区视频| 亚洲精品之草原avav久久| 欧美xnxx| 成人手机在线播放| 99久久精品国产一区| 真实的国产乱xxxx在线91| 欧美成人网在线| 日韩在线你懂的| 在线黄色免费观看| 一区二区三区不卡视频| 欧美色图另类| 91在线免费网站| 亚洲在线网站| 久久国产高清视频| 日韩高清不卡av| 最新亚洲国产| 丰满少妇被猛烈进入高清播放| 国产精品传媒视频| 天堂av手机版| 国产欧美中文字幕| 模特精品在线| 久久r这里只有精品| 一本久久综合亚洲鲁鲁| 亚洲综合色婷婷在线观看| 嫩草影院国产精品| 午夜免费久久看|