11---
22title : next.js の AMP mode を使って静的サイトを作る
33created : 1588760362771
4- tags : [next, mdxx ]
4+ tags : [next, amdx ]
55---
66
7- この記事は mdxx-ssg を作りながら, next.js で AMP に対応したときにやったことです。
7+ この記事は amdxg を作りながら, next.js で AMP に対応したときにやったことです。
88
9- コードはこちらです [ mdxx /packages/ssg at master · mizchi/mdxx ] ( https://github.com/mizchi/mdxx /tree/master/packages/ssg )
9+ コードはこちらです [ amdx /packages/ssg at master · mizchi/amdx ] ( https://github.com/mizchi/amdx /tree/master/packages/ssg )
1010
1111## AMP について
1212
@@ -96,11 +96,11 @@ export default () => {
9696
9797[ ページが検出されるようにする \- amp\. dev] ( https://amp.dev/ja/documentation/guides-and-tutorials/optimize-and-measure/discovery/ )
9898
99- mdxx-ssg での記事のボイラープレートでは、Full AMP を採用していますが、必要に応じて通常ページのレンダリングもできるようにしています。
99+ amdxg での記事のボイラープレートでは、Full AMP を採用していますが、必要に応じて通常ページのレンダリングもできるようにしています。
100100
101101### Hybrid AMP
102102
103- mdxx-ssg では採用してませんが、 next.js ではモバイルと Google へのインデックスのために AMP を生成しつつ、PC 用には通常の AMP のレンダリングを行うモードがあります。こっちのほうが一般的な AMP かも。
103+ amdxg では採用してませんが、 next.js ではモバイルと Google へのインデックスのために AMP を生成しつつ、PC 用には通常の AMP のレンダリングを行うモードがあります。こっちのほうが一般的な AMP かも。
104104
105105``` js
106106// pages/index.tsx
@@ -145,7 +145,7 @@ import prismCss from "!!raw-loader!../styles/prism.css";
145145// @ts-ignore
146146import custom from " !!raw-loader!../styles/styles.css" ;
147147import { ServerStyleSheet } from " styled-components" ;
148- import ssgConfig from " ../mdxx-ssg.json " ;
148+ import ssgConfig from " ../amdxg.config " ;
149149
150150export default class MyDocument extends Document {
151151 static async getInitialProps(ctx : any ) {
@@ -230,29 +230,29 @@ amp では 普通の JS を動かすことはできませんが、 WebWorker 環
230230
231231[ AMP で任意の JS を実行できる amp\- script を試してみた \- Qiita] ( https://qiita.com/mizchi/items/c7d648eafb03d4c5378a )
232232
233- mdxx-ssg では、これを next.js+webpack と連携してシームレスに組み込める仕組みを、なにか用意しようと考えています。
233+ amdxg では、これを next.js+webpack と連携してシームレスに組み込める仕組みを、なにか用意しようと考えています。
234234
235235今はこういう PR を出しています。
236236
237237[ \[ RFC\] Add npm library mode by mizchi · Pull Request \# 855 · ampproject/worker\- dom] ( https://github.com/ampproject/worker-dom/pull/855 )
238238
239- ## mdxx でやったこと
239+ ## amdx でやったこと
240240
241- ### mdxx-parser での code syntax highlighter の実装
241+ ### amdx での code syntax highlighter の実装
242242
243243amp 制約下では、JS が実行できないので、プログラミング言語のランタイムでの構文解析を実行することはできません。なので、markdown のコードブロックの中身を、事前にトークンに落とすところまで行っています。
244244
245- [ mdxx /highlighter\. ts at master · mizchi/mdxx ] ( https://github.com/mizchi/mdxx /blob/master/packages/parser/src/highlighter.ts )
245+ [ amdx /highlighter\. ts at master · mizchi/amdx ] ( https://github.com/mizchi/amdx /blob/master/packages/parser/src/highlighter.ts )
246246
247247パース後は言語非依存のトークンに変換されているので、あとは CSS を当てるだけです。
248248
249249https://github.com/PrismJS/prism-themes/tree/master/themes
250250
251- ### mdxx-compiler での amp-img 対応
251+ ### amdx-runner での amp-img 対応
252252
253253amp ではレイアウト最適化のために img を直接使うのではなく、 ` amp-img ` を使う必要があります。
254254
255- mdxx-ssg 用の mdxx-compiler では、AMP フラグを付けると、 `  ` の link 構文を、次のようなコードと HTML 要素に変換します。
255+ amdxg 用の amdx-runner では、AMP フラグを付けると、 `  ` の link 構文を、次のようなコードと HTML 要素に変換します。
256256
257257こういう alt を使った構文を想定
258258
@@ -265,7 +265,7 @@ mdxx-ssg 用の mdxx-compiler では、AMP フラグを付けると、 `![alt](i
265265展開コード
266266
267267``` tsx
268- import Doc from " ./doc.mdx" ; // mdxx -loader で変換される
268+ import Doc from " ./doc.mdx" ; // amdx -loader で変換される
269269<Doc amp />; // AMP フラグを立てると img を amp-img に変換する
270270```
271271
0 commit comments