---
# System prepended metadata

title: 名詞說明
tags: [react]

---

# 名詞說明
###### 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。