1

大規模なプロジェクトで KeystoneJS を使用することを検討しており、管理パネルをカスタマイズできるようにしたいと考えています。ここにそれを行う方法の良い例があり、私はこのPR をプロジェクトに見直してきました。この例は私たちにとってうまくいくように見えますが、その背後にあるロジック、つまり、それを機能させるために実装する必要があるもの、可能性と制約が何であるかを理解していません。

Keystone NextJS アプリ (これは私たちにとっては良いことです) を使用している場合、フォルダーを追加すると/admin/pages、Keystone アプリはそこを検索し、通常の管理ページではなく、それらのカスタム管理ページを使用しますか? これらのページから、アプリの残りの部分、コントローラー、DB にも完全にアクセスできると仮定しています....

また、JedWatson がhttps://github.com/keystonejs/keystone/pull/1019で次のように述べていることにも気付きました。

これには SSR サポートがないことに注意してください。私は例にあまり力を入れていませんが、それ以外の点では (私が思うに) 機能は同じです。

管理部分だけに SSR サポートが欠けているのでしょうか、それともカスタム管理ページを追加すると、アプリの残りの部分での SSR サポートに何らかの影響がありますか? (SSRが次に使う理由です)

情報をありがとう。

4

1 に答える 1

1

カスタム ページには 2 つの API があります。1 つはアプリ コンストラクターpagesのオプションで、 2 つ目はキーストーン コンストラクターの API の一部です。admin-uihooks

  1. pages: これはレガシーで、カスタム ページを追加するだけで、admin-ui の既存のリスト ページを上書きせず、適切に構成されていない場合に非表示にするだけです。通常、Dashboardが表示され、すべてのリストがそこに一覧表示されます。
  2. hooks: これは新しいものであり、カスタマイズ オプションがさらに追加される予定です。残念ながら、私の PR は古く、キーストーン コア チームが追加したい仕様ではありません。これもページを削除しません。

admin ui は、webpack 構成を使用してビルドまたはロードされた反応アプリとして実行されます。そのため、ssr サポートはありません。この例ではカスタム管理ディレクトリを使用していますが、nextjsコンポーネントによってロードされていませんが、admin-ui 反応アプリをマウントする webpack サーバーを使用して動的にロードされます。

本当に ssr が必要な場合は、ずっと前に POC として使用されたクローズド PR からの学習を使用できます。しかし、admin-ui にはその後さらに多くの更新があるため、それはやり過ぎです。

フック/ページは、アクセスのコア制限セットにアクセスできます。React コンテキスト、プロバイダー、およびコンシューマー フックに基づくいくつかのアクセスがあります。反応コンテキストのルートにプロバイダーが既にラップされているため、react-apollo フックを使用できます。また、react ルーター フックを利用することもできます。それらは最新バージョンにアップグレードされます。サーバー側のコンテキストまたはコントローラーにはアクセスできません。(コントローラーの意味がわからない)

于 2020-02-19T18:03:33.033 に答える