web-dev-qa-db-ja.com

React

ノードを持つ同型反応アプリがあります。一部のページをAMPページに変換したい。私は混乱しています!アプリの別のAMPバージョンを使用するか、AMPページのGoogleガイドラインに従って現在のアプリを変更しますか?アンプ互換バージョンを作成するには、現在のアプリに多くの変更を加える必要があることがわかります。どうすればいいですか?

19
Harsh Sarohi

AMPは、Accelerated Mobile Appsではなく、Accelerated Mobile Pagesの略です。動的なアプリ1:1をAMPに取り込むことは困難です。したがって、AMPマークアップ標準に従って静的なHTMLマークアップが必要であり、これらのページ(アプリのページ<=>異なる画面)間の遷移は、単純な古いHTMLリンクになります。おそらく、手頃な労力でアプリからカスタムテンプレートを使用して、このような種類のマークアップを生成できます。おそらく ampreact が役立ちます。

9
Bernhard Zürn

同様のアーキテクチャがあります。

落とし穴:

  1. Ampページを提供する新しいTechスタックを作成したくありません。

  2. コアとAMPスタックは、機能の点で同期している必要があります。

We solved it by doing two things: 1. Writing a new server.js file and added a new node job. 2. Components are organised in a way, where views are not connected components. 3. Developed a HOC and chose the template AMP vs React in the cases when your React template contains stuff which is not supported by AMP.

AMPページは純粋にサーバー側でレンダリングされます。そのため、server.jsは、renderメソッドで言及したルートコンポーネントを含む新しいファイル(index.html)を生成します。

これは内部で必要なコンポーネントを消費します。続行すると、CSSとHTMLの量に問題があり、Reactコンポーネントが生成します。

cSSをクリーンアップする機会と捉え、必要な場合にのみ別のAMPを作成しました。

Next.jsはAMPをサポートするようになりました。これらは、この問題を解決するための複数のアプローチ(AMPのみおよびAMPハイブリッド)を提供します。ページレベルでAMPを有効にできるため、ゆっくりと完全なAMP Webサイトに移行できます。

// pages/about.js
export const config = { amp: true }

export default function AboutPage(props) {
  return <h3>My AMP About Page!</h3>
}
})

この方法で、両方をサポートできます。 Reactクライアントレンダリングと純粋なAMP。

詳細

4
HaNdTriX

Ampreactを検討しました。しかし、AMPにreactを使用すると、複雑さが増します。最終的に、node + ejs + expressを使用することにしました。 AMPは、amp-list、amp-bind、amp-live-listなどの動的コンテンツを処理するためのコンポーネントも提供します

https://www.ampproject.org/docs/reference/components#dynamic-content

3
Harsh Sarohi