- (p17) HTML + CSS とJavaScriptの構成からJavaScriptメインへ
- (p18) Reactでのページ作成
- (p19) React要素とJSX
- (p22) Next.jsはSSRベースのフレームワークだがSGを取り込むこともできる
- (p23)
$ npx create-next-app@latest
- (p24)
$ npm run dev
- (p28) BLOG/public/ ブラウザからアクセス可能
- (p28) BLOG/pages/ Webページを追加する(動的ルーティング)
- (p29) BLOG/packege.json 設定を書く
- (p31) Homeコンポーネントを作る(書き換える)
- (p31) 最上位の要素は一つ
- (p34) React.Fragment
- (p35) 要素は閉じる
- (p35) classは予約語のため classNameで代替
- (p36) style属性は {{}} expression {} 複数行は () のなか
- (p38) Homeを記述 header, main, footer のシンプル構成
$ npm run dev
で表示を確認- この段階で git commit -m 'chap1 finished
- access token(repo)を作成する (Settings/Developer settings/Personal access token)
- $HOME/.netrcを作成する
machine github.com
login ログイン名
password アクセストークン
- GitHub上でrepositoryを作成する
- 作成したrepositoryにpushする
$ git remote add origin https://github.com/USER_NAME/REPOSITORY_NAME
$ git branch -M main
$ git push -u origin main
ここからブランチ(chapter2)を作成して,そのブランチにて開発を行う chapter2 終了後にmainブランチへのマージを行う
$ git branch chapter2
$ git checkout chapter2
$ git branch #確認用
- (p42) 関数コンポーネントとClassコンポーネント
- (p43) コンポーネント名は大文字から
props(オブジェクトになった引数)
- (p44) propsへの値の渡し方
- (p45) props.children 理解
- (p47) propsはReadOnly
- (p48) コンポーネントの分け方(共通のものや,構造が同じものに着目する)
- (p49) compornents ディレクトリを作成する
- (p49) Header, Hero, Footer コンポーネントを作成する
- (p50) Header, Hero, Footer コンポーネントをHomeコンポーネントで使用する
$ npm run dev
で確認し$ git commit -m '2.3 base'
- (p51) BLOG/jsconfig.jsonで絶対パスを記述
- (p54) Layoutコンポーネントを作成
- (p55) HomeコンポーネントでLayoutコンポーネントを使用
$ npm run dev
で確認しgit commit -m '2.5 layout'
pages直下に_app.jsというコンポーネントで全ページの共通設定を行う
- (p57) _app.jsを作成してLayoutコンポーネントでChildrenをWrapする
- (p57) Homeコンポーネントを編集しLayoutを削除する
$ npm run dev
で確認しgit commit -m '2.6 layout'
- (p58) pages直下にblogディレクトリを作成しindex.jsを作成
- (p58) about.jsを作成
$ npm run dev
で確認しgit commit -m '2.7 about, blog'
- (p58) hero.jsを編集し,propsから値を受け取る
- (p59) Home, About, Blogコンポーネントを編集
- (p63) hero.jsを編集してフラグ(imageOn)を受け取る
- (p62) Homeコンポーネントを編集,フラグ(imageOn)を渡す
- Homeページのみに画像の文字が出たことを確認
- git commit -m '2.9 propsから値を渡す'```
next13よりLinkコンポーネントが新しくなりaタグが使用禁止 aタグを使いたい場合はを使用
- (p67) logo.jsを作成
- (p68) nav.jsを作成
- (p69) Header, Footerコンポーネントを編集
- リンクが表示され,各リンクが活きていることを確認
- git commit -m 'chapter2 finished'
ここでマージを行う,まずmainブランチに移動してそこでマージを行う そして新たにchapter3を作成してその上で開発を行う
$ git checkout main
$ git branch #確認用
$ git merge chapter2
$ git push # githubと同期する
新しくブランチを切りその上で開発を進める
$ git branch chapter3
$ git checkout chapter3
$ git branch #確認用
- (p72) グローバルスタイル _app.jsにインポートして使用
- (p72) CSS Module コンポーネントごとに設定 拡張子を module.cssとする
- (p73) CSS-in-JS コンポーネント内にjavascriptとして記述 いくつかの種類がある
- (p73) インラインスタイル
- (p74) hero.module.cssを作成
- (p74) Heroコンポーネントに適用
- (p76) 個別にクラスを指定できないケース
- (p77) 個別のクラスが指定されているケース
- (p78) composesを用いて合成する
- (p82) _app.jsを編集,global.cssをimportする
- (p83-p87) global.cssを作成,編集する
- (p87) 表示が変わったことを確認して
- git commit -m '3.3 global style'
- 保守性や再利用のために見た目とレイアウトのスタイルを分けて作成する
- (p89) footer, header, hero, layout, logo, nav の CSS Modulesを作成
- (p91) hero.module.cssを記述
- (p90) Heroコンポーネントを編集してCSSを適用,確認
- commit する
- (p92) logo.module.cssを編集
- (p94) Logoコンポーネントを編集してCSSを適用
- (p93) Headerコンポーネントを編集してLogoコンポーネントに値を設定
- commit する
- (p97) nav.module.css を編集
- (p96) Navコンポーネントを編集しCSSを適用し確認
- (p99) nav.module.css を編集しホバー時の設定を追加
- (p100)表示確認
- commit
$ git checkout main
$ git branch #確認用
$ git merge chapter3
$ git push
新しくブランチを切りその上で開発する
$ git branch chapter4
$ git checkout chapter4
$ git branch #確認用
- (p104) 両端揃え -- レスポンシブでも変化なし
- (p104) 横並び(基本形)
- (p104) 横並び(中央揃え) -- モバイルは縦並びに
- (p105) util.module.cssを作成
- git commit -m '4.1 util.module.css'
- (p107) header.module.cssを編集 util.module.css のレイアウトをcomposeする
- (p106) HeaderコンポーネントにCSS適用
- git commit -m '4.2 header layout'
- (p109) hero.module.cssを編集 util.module.css のレイアウトをcomposeする
- (p108) HeroコンポーネントにCSS適用
- git commit -m '4.3 hero layout'
- (p111) footer.module.cssを編集 util.module.css のレイアウトをcomposeする
- (p110) footerコンポーネントにCSS適用
- git commit -m '4.4 footer layout'
- (p113) コンテナコンポーネント及びcontainer.module.cssを作成
- (p114) ヘッダー,フッターコンポーネントをコンテナコンポーネントでラップする
- (p116) container.module.cssを編集し,.largeクラスを追加
- (p116) コンテナコンポーネントのpropsを追加
- (p115) ヘッダーコンポーネンとからパラメータを渡す
- git commit -m '4.5 header,footerのwidth調整'
- (p117) Home, About, Blogをコンテナコンポーネントでラップする
- git commit -m '4.5 Home, About, Blogのwidth調整'
- (p118) Aboutコンポーネントに記事を追加
- git commit -m '4.5 記事を追加'
- (p121) post-body.module.cssを作成
- (p121) PostBodyコンポーネントを作成しCSSを適用
- (p122) PostBodyコンポーネントをAboutコンポーネントに適用
- git commit -m '4.6'
- (p126) contact.module.cssを作成する
- (p126) Contactコンポーネントを作成しCSSを適用
- (p127) コンタクトコンポーネントをAboutコンポーネントに追加
- git commit -m '4.7 Contact作成'
- (p132) two-column-module.cssを作成 sideBysideをcompose
- (p129 - 130) TwoColumn, TwoClolumnMain,TwoColumnSidebar コンポーネントを作成しCSS適用
- (p131) Aboutコンポーネントを上記コンポーネントで2段組みにする
- (p133) two-column-module.css 追記してサイドバーを右揃えにする
- (p134) two-column-module.css 追記してサイドバーを固定表示
- git commit -m '4.8 2段組レイアウト'
mainブランチにmergeしてpush
$ git checkout main
$ git branch #確認用
$ git merge chapter4
$ git push
ブランチの作成
$ git branch chapter5
$ git checkout chapter5
$ git branch #確認用
Next13よりImageコンポーネントが新しくなった,従来のImageは next/legacy/Image
- layout属性とobjectFit属性が削除
- fill属性が追加
- layout='responsive' は size指定の上 styleでautoにする
<Image
src="/rocket.jpg"
alt="空飛ぶロケット"
- layout="responsive"
width={1980}
height={1150}
+ sizes="100vw"
+ style={{
+ width: '100%',
+ height: 'auto',
+ }}
/>
- レスポンシブイメージのコード生成
- レイアウトシフト対応
- 遅延読み込み
- WebP対応
- SSGで使う場合は処理APIを外部に用意する
- 画像はpublicにおくか,任意の場所からimportして使うこともできる
- ディメンション属性でblurが使える
- layoutモードは現在 非推奨
- responsiveは style={{width: '100%',height: 'auto',}} を使用
- fillはfill属性と style={{objectFit: 'cover'}} を使用
- fixedはlayout属性を外すだけ
- quality, priority, unoptimaized
- placeholder='blur' blurの表示
- style cssを設定
- (p160) imageディレクトリを作成し,about.jpgを配置
- (p160) Aboutコンポーネントを編集して画像を追記
- (p160 - 161) Imageコンポーネントのプロパティを追記
- 画像を確認して commit
NEXT13でのresponsive Image
<Image
src={eyecatch}
alt=''
sizes='(min-width:1152px) 1152px, 100vw'
priority
placeholder='blur'
style={{
width: '100%',
height: 'auto',
transition:0.2s
}}
/>
- (p164) cube.jpgをimagesディレクトリに追加
- (p166) hero.module.cssを編集 imageクラスのwidthを設定
- (p165) Heroコンポーネントに画像を追加
- (p166) Heroコンポーネントにスタイルを追加
- (p168-p169) Imageコンポーネントにsize,priority, placeholderプロパティを追加
- 確認して git commit
<Image
src={cube}
alt=''
sizes='(min-width:1152px) 576px, (min-width:768px) 50vw, 100vw'
priority
placeholder='blur'
style={{
width: '100%',
height: 'auto',
}}
/>
- (p170 - 171)fontawesomeの各種パッケージをインストール
- 全体設定用の _app.jsへ設定を追加
- (p173) アイコンを個別にインポートして使用する
- (p175) アイコンをグローバルにインポートして使用する
- (p176) アイコンのサイズと色をカスタマイズすることができる
- (p177) sizeプロパティ,styleプロパティ
- (p180) social.module.css 作成する
- (p179) Socialコンポーネントを作成する
- (p180) Socialコンポーネントを,FooterとContactコンポーネントに追加
- 確認して commit
- (p183) social.module.cssを編集しfont-sizeに変数設定
- (p183) Socialコンポーネントのpropsを設定し外部から値を受け取る
- (p182) Contactコンポーネントを編集し値を送る
- 確認してcommit
- mainブランチにmerge