Published in Dcard Tech Blog·PinnedNx vs Turborepo,怎麼在大型 Monorepo 優化開發體驗?隨著前端的程式碼規模在 Dcard 越來越大,其中一個遇到的狀況就是,CI 的執行速度、local 的開發體驗都開始受到影響。 考慮到 monorepo 整體還是利大於弊,而且我們很重視迭代速度,於是決定投入更多來改善這個環節。剛好去年年底 Turborepo 的發佈吸引了我們的目光,就決定來好好分析一下該怎麼改善我們現行的架構與流程。 我們的 Monorepo 為了方便大家 …Nx10 min read
Jun 16淺談 GraphQL @defer @stream因為 GraphQL Working Group 近期的推動,GraphQL 的 @defer/@stream directive 提案又重新回到了開發者的視野。 目前對應的 RFC 仍為 Stage 1,但已經投入相當大量的規格制定工作與討論,應該蠻有機會持續推進。 GraphQL specification RFC 分成四個階段: - Stage …Graph QL9 min read
Jan 5初窺 Shopify Hydrogen 框架以及 React Server ComponentsHydrogen 是 Shopify 打造的一個基於 React 的 Framework,可以用來製作客製化的店面網站,其最大的賣點是支援 React Server Components(RSC),這應該算是全球走在最前沿的 RSC 大型實驗。 Hydrogen 依賴在一些蠻知名的套件/技術之上,包括:Vite、GraphQL、React Rout …React9 min read
Nov 19, 2021React 的未來:18 以及在那之後前一陣子在 JSDC 給了「The Future of React: 18 and Beyond」的演講,為了濃縮成適合聽眾的 20 分鐘內容,並適當補充一些需要先備的知識,導致會有相當多內容變成遺珠之憾無法提及,所以決定另外來寫一篇文章記錄一下。 這篇文章將會依序介紹到以下的項目: 先備知識 — Suspense、Hydration 升級成 React …React22 min read
Nov 10, 2021深入淺出 JavaScript 軟體測試 — #3 Test Runner — Jest上一篇介紹了如何自行寫出能執行的測試,不過實際上大部分時候我們都不該這樣做,我們應該使用開源軟體,輕鬆地站在巨人的肩膀上。 後面的 JavaScript 相關測試與我個人的 Best Practices 都會搭配著 Jest 介紹,不過熟知各種不同的 runner 還是有其必要性,畢竟有時候專案用什麼你就得跟著去使用。JavaScript 比較常見的 …Java Script7 min read
Nov 8, 2021JavaScript 開發者用 napi-rs 初學 Rust為什麼學習 Rust 最近 JavaScript/TypeScript 的生態系有不少專案都底層都轉往使用 Rust 開發,包括像是 Deno、Next.js 最近用來取代 Babel 的 swc 或是 Babel 原作者的新專案 Rome。 這現象並不是說 Rust 要來取代 JavaScript/TypeScript 了,實際上更像是取代原本必須使用 C/C++ 來完成 …Java Script14 min read
Nov 2, 2021在 2021 可以使用 ESModule 了嗎?隨著今年沒有完整支援 ESModule 的 Node 10 達到 EOL(End-of-life),推行 ESModule 的運動再次興起。其中 JavaScript 領域的知名開發者 Sindre Sorhus 更是吹起了號角,發了許多文章強烈表示他轉向 ESM 的決心: https://github.com/sindresorhus/meta/d …Java Script10 min read
Oct 28, 2021深入淺出 JavaScript 軟體測試 — #2 測試的原理與細節上一篇介紹了測試時的 Mindset 跟一些好處,這篇要來講講測試的原理,已經比較熟測試的人可以考慮直接跳過這篇,去看之後幾篇針對一些狀況的寫法。 在 JavaScript test runner 這塊,我自己是 Facebook 的 Jest 的忠實擁護者,因為它包含了許多厲害的設計模式,給了充足彈性,是超過 50 個以上套件模組化的成果,包括 …Java Script6 min read
Oct 26, 2021深入淺出 JavaScript 軟體測試 — #1 撰寫測試的 Mindset最近在回顧一些四五年前寫的測試程式碼,其中有一部分還堪用,有一部分的可維護性跟保護力卻是有點堪憂,自己的階段也從「我不太會寫測試」到「追求極高的測試涵蓋率」再到「撰寫適合專案/產品的測試」,感受頗深。 於是這篇文章就誕生啦。 希望接下來能撥出一些時間,慢慢寫完這系列。這系列應該要包括: 面對測試的正確心態,以及談一些常見迷思 測試的原理與細節 Jest 的 …Java Script6 min read
Aug 29, 2021TypeScript:infer 的強大功用在 TypeScript 的 Conditional Types 中加入 infer 來推斷,可以讓型別變得更加精準及泛用。 這篇文章希望能簡單的介紹一下 infer 的用處,首先必須先介紹一下什麼是 Conditional Types(條件類型)。 什麼是 Conditional Types T extends U ? X : Y 使用 extends 關鍵字的這個看起來像是三元運算子的寫法, …Typescript4 min read