[譯] 正在消失的小型網站

[譯] 正在消失的小型網站

網站正在日益增大,JavaScript 也在飛速發展、升級,為了能跟上時代,你需要將你的代碼從最新的版本轉譯成瀏覽器兼容的模式(儘管這非常複雜,但相信 babel 能搞定)。此外,你也可以使用其他語言編寫網頁,比如 typescript。而在 typescript 之前,已經有過很多相關嘗試(1,2,3 等等),但一個重要的事實是,typescript 被建議要廣泛應用於專門處理大型應用的場景。

單頁面應用(SPA)之路

在歷史上,小型頁面是由靜態 HTML 和一些零散的 JavaScript 組成的。我敢打賭現在很多傳統的服務端渲染應用(比如 Django 或者 Ruby on Rails)還是這樣做的,但是這樣的方式一點也不酷了,所以就算還有人使用它們,可能也僅僅是 API。這些頁面(不管是靜態頁面或者服務端渲染頁面)都有很多特設腳本,它們看上去都一團糟。維護和測試就更像是噩夢,這些代碼要麼就是非常長,要麼就是以某種奇怪的方式連接起來。

而當這樣的腳本轉變成了單頁應用,這絕對是一件好事 —— 現在,至少我們的應用是部分可維護的了,使用了合適的模塊引入,以及許多允許開發者處理複雜接口,路由,多屏數據共享,跨應用甚至整個網站(例如開源組件)的 UI 元素複用的閃亮框架。但是,本篇文章並不是關於它們的 —— 我已經吐槽過現在人們已經將 SPA 作為所有項目的默認選項;這篇文章是關於

小型網站的。

jQuery 的興衰

在這之前,jQuery還是主宰,它有龐大的插件生態圈,提供滑動窗口,圖片展示以及豐富的動態效果等等。同時,它的集成簡單,通常只是用某些參數(甚至是默認值就可以)初始化一些插件,並提供元素 id。其他內容通常都在標記中指定(或需要特定的標記規則),HTML 作為一種聲明式語言,完全可以辨認出指定的內容。事實上,jQuery 使用範圍如此之廣,很多人們都很奇怪為什麼不把 jQuery 默認的加載到瀏覽器中。jQuery 也有很多很方便的功能(甚至可以稱為 DOM 缺失的標準庫),它讓已經簡單的交互變得極其簡單。

事實上,我相信 jQuery 依舊在被廣泛的使用著(我沒有任何數據,只是我自己的直覺),但是有了很重要的改變。如今,jQuery 已經不那麼讓人滿意,你也不會發現有很多教程,教你如何不用很瞭解 JavaScript 就快速寫出一個頁面小腳本。同時,大約五年前,庫的標準就是:

  • 在一些 CDN 上存儲最小化後的代碼
  • 把它提供的功能綁定在全局變量上(比如 window.Backbone)

現在一些庫依舊會打包構建全局模塊定義(UMD),它其實就是一個加載庫的全局變量版,但是很多庫已經不這樣做了。現在,出現了更多的新的框架,這些小插件都是專門服務於框架的了,而你不僅僅是需要它們(如果你需要 jQuery 插件,那麼你也需要 jQuery 這個庫),而是需要用這個框架來完成你所有的頁面!

現代解決方案

當然,這個問題已經解決,解決方法就是在已有基礎上提供啟動方式或者特定框架,然後你就可以使用這些小插件並編譯為一個靜態網站。此外,它們會在後臺使用上述工具加載模塊或者編譯代碼,所以你可以使用 JavaScript 的最新版本,並將邏輯拆分為最佳可複用的單元。這種方式的一個很好的例子就是 GatsbyJS 和 Nuxt.js。啟動方式通常是命令行,例如 create-react-app,它將繁瑣的步驟都隱藏了起來,並且僅僅需要給應用一個指令 —— “只管運行”,然後你就可以開始編寫組件了。

儘管如此,這種變化帶來了哪些問題呢?代碼的維護性更高了(這都多虧了模塊),你可以使用最新版的 JavaScript,還能保證所有不支持的功能都有可以替代的補丁,這在之前是很容易出現問題的地方。但是其實,問題有很多,在我看來:

  • 現在你必須非常瞭解 JavaScript(需要比之前更深的理解)
  • 不僅是 JavaScript,你可能還需要知道 webpack(為了處理靜態資源加載 —— 想象一下你忽然發現代碼中在引用圖像)
  • 現在,你的工作包括了使用大約 200MB 的文件構建應用(而不是編寫文檔)。
  • 讓你的小應用膨脹起來是像滑下坡那麼容易的事情。

我認為最後一部分是最值得關注的。很多教程都會建議你添加一些高級數據管理庫,用某些特定的,“更聲明式”的方法重構你的代碼(想想那些人經常試圖說服你重構 HTML 結構),然後很多人就會按照教程建議的做了!這些建議是好的,但是可能只適用於大型網站,而不是那種小型的,用 5 個 .html 文件就能完成的。是的,你不能複用這個菜單,但是你可以直接複製它們(同時 CSS 類讓它在某種形式上能複用了)。

總結

也許我是錯的,也許並沒有那麼糟糕。但是使用互聯網、閱讀博客、查看網頁時,我覺得這些曾經每個人只要有 HTML 的只是和極少的 JS 技術就能完成的小型網站,正在慢慢消失,現在更多的網站被替換為更加“可擴展”的應用了。

鏈接:https://juejin.im/post/5c81de696fb9a049e702e6ac


分享到:


相關文章: