悟空は、「ドラゴンボール」の主人公、孫悟空です。彼は優れた超能力を持っており、世界の問題を解決することができます。同様に、フロントエンドとバックエンドを分離しようとすることで、フロントエンド開発における現在の問題点を解決することも期待されています。
全体として MVC アーキテクチャを使用すると、Angular (双方向バインディング) とは異なり、一方向のデータ フローには次の利点があります。予測可能性、ビュー層の変更はモデルから来る必要があります
view: ビュー層のレンダリングとして React を使用し、ここでのレンダリングはノードに分割されます側、ブラウザ側のReact の仮想 DOM、UI への重点、および一方向フローは、ページのパフォーマンスを解決するための強力なツールです。
3. 詳細な説明
3.1 ブラウザ
ページが初期化されると、最初の画面データがレンダリングされて表示されます。
最初の画面データは、JSON.stringify(datat) を通じてページに渡す必要があります
url リクエストはノード サーバーに均一に分散され、そこからフロントエンドの静的リソースが取得されます。
フロントエンドの静的リソースの管理
アイデア: リクエストされた URL + React Router のルーター設定情報に従って、一致するコンポーネントを取得します
import { match, RoutingContext } from 'react-router';import routes from './routes';serve((req, res) => { match({ routes, location: req.url }, (err, rediction, renderProps) => { if (...) { res.status(200).send(htmlStr); } })})
アイデア: 各 URL はすべて指定されたファースト スクリーン データを持ち、すべてのデータが取得されると、コールバック関数が実行されます
Promise.all([promise1, promise2, ..., promisen], (vals)=> { ... const initialState = val; const store = createStore(reducer, initialState);})
アイデア:静的データを取得するには、react の renderToString を使用します
Promise.all([promise1, promise2, ..., promisen], (vals)=> { ... const initialState = val; const store = createStore(reducer, initialState); ... const props = { store, ... }; str = React.renderToString(App, props);});
3.3.5 完全な HTML に戻る