什麼是JAMstack?
JAMstack是指使用JavaScript、API和Markup構建的技術堆疊,JAM是JavaScript、API和Markup的簡稱,前面第一個字母縮寫,JAMstack一種基於客戶端JavaScript,可重用API和預構建Markup的現代Web開發架構,需要符合下面三個標準:
- JavaScript:請求/響應週期中的任何動態程式設計都由JavaScript處理,完全在客戶端上執行。這可以是任何前端框架,庫,甚至是輕量JavaScript。
- API:所有伺服器端程序或資料庫操作都被抽象為可重用的API,使用JavaScript通過HTTPS訪問。這些可以是定製的或利用第三方服務。
- Markup:模板化標記應該在部署時預先構建,通常使用內容站點的站點生成器或Web應用程式的構建工具。
當我們談論“堆疊”時,我們不再談論作業系統,特定Web伺服器,後端程式語言或資料庫。JAMstack與特定技術無關。這是一種構建網站和應用程式的新方法,可提供更好的效能,更高的安全性,更低的擴充套件成本以及更好的開發人員體驗。
什麼不是JAMstack?
依賴於客戶端和伺服器之間緊密耦合的任何專案都不是使用JAMstack構建的。包括:
- 使用伺服器端CMS構建的站點,如WordPress,Drupal,Joomla或Squarespace。
- 一個單片伺服器執行的Web應用程式,它依賴於Ruby,Node或其他後端語言。
- 單頁應用程式,使用同構呈現在執行時在伺服器上構建檢視。
為何選擇JAMstack?
- 更好的效能:為什麼要在部署時生成頁面時等待頁面動態構建?當談到最小化第一個位元組的時間時,沒有什麼能比通過CDN提供的預構建檔案更好。
- 安全性更高:將伺服器端程序抽象為微服務API,可以減少攻擊的表面區域。您還可以利用專業第三方服務的專業知識。
- 更便宜,更容易擴充套件:當您的部署相當於可以在任何地方提供服務的一堆檔案時,擴充套件就是在更多地方提供這些檔案的問題。CDN是完美的,通常包括擴充套件他們的所有計劃。
- 更好的開發者體驗:鬆散耦合和控制分離允許更有針對性的開發和除錯,並且為站點生成器擴充套件選擇CMS選項消除了為內容和營銷維護單獨堆疊的需要。
最佳實踐
在構建JAMstack專案時,如果您堅持一些最佳實踐,您可以真正獲得最大的收益。
1. 整個專案放在CDN上
因為JAMstack專案不依賴於伺服器端程式碼,所以可以分發它們而不是儲存在單個伺服器上。直接從CDN服務可以解鎖無法超越的速度和效能。您可以推送到邊緣的應用程式越多,使用者體驗就越好。
2.一切都在Git中
使用JAMstack專案,任何人都應該能夠使用git clone標準過程(如npm install)安裝任何所需的依賴項,並準備好在本地執行整個專案。沒有要克隆的資料庫,沒有複雜的安裝。這減少了貢獻者的摩擦,並且還簡化了分段和測試工作流程。
3. 現代構建工具
充分利用現代構建工具的世界。它可以成為一個面向叢林的叢林,它是一個快速移動的空間,但你希望今天能夠使用明天的網路標準,而無需等待明天的瀏覽器。目前這意味著Babel,PostCSS,Webpack是朋友。
4. 自動構建
由於JAMstack標記是預先構建的,因此在執行其他構建之前,內容更改不會生效。自動化此過程將為您節省很多挫折感。您可以使用webhook自行完成此操作,也可以使用自動包含該服務的釋出平臺。
5. 原子部署
隨著JAMstack專案變得非常龐大,新的更改可能需要重新部署數百個檔案。一次上載這些一個可能會在程序完成時導致不一致的狀態。您可以使用允許您執行“原子部署”的系統來避免這種情況,在上傳所有已更改的檔案之前,不會進行任何更改。
6. 即時快取失效
當構建到部署週期變得經常發生時,您需要知道當部署上線時,它真的會上線。通過確保您的CDN可以處理即時快取清除來消除任何疑問。