# 名詞說明 ###### tags: `react` ### 什麼是Node? Node (或者說Node.js) 是一個開源、跨平台和允許開發者使用Javascript創造伺服器端工具和應用的執行環境。運行的目的是為了能在瀏覽器外使用,例如:直接執行在電腦或伺服器上。所以該環境捨棄了瀏覽器限定的JavaScript APIs並增加更多傳統OS APIs的支援,例如:HTTP和檔案系統的程式庫。 ### DOM是什麼? 文件物件模型(Document Object Model, DOM)是 HTML、XML 和 SVG 文件的程式介面。它提供了一個文件(樹)的結構化表示法,並定義讓程式可以存取並改變文件架構、風格和內容的方法。(擷取MDN的部分說明 ![](https://i.imgur.com/miXuYuP.png) ### BrowserRouter 使用的是 History API 紀錄位置 ### StaticRouter 是做 React 伺服器渲染用的吧 因为伺服器是請求->回應 這種結構,根據不同的url返回不同的html回應,可以理解成纯函數。有狀態,根本就没有意義。靜態路由就是為了方便開發者,實際上自己做路由也完全可行。看官方的例子的意思就是,當路由到了<Redirect>元件的時候,這個时候伺服器理應發出一個重定向的信號,這個時候在渲染<Redirect>元件的邏輯中就會判斷是否有staticContext這個prop,如果有就會给這個prop添加一個屬性,當渲染的函數執行完之後,外部的context就會出现之前添加的属性,表示路由到了<Redirect>组件,需要將回應碼變為301。