iT邦幫忙

2021 iThome 鐵人賽

DAY 28
1
自我挑戰組

Re: 從 Next.js 開始的 React 生活系列 第 28

[Day28] 又回到最初的起點 ~ Next.js

  • 分享至 

  • xImage
  •  

前言

終於在 Day28 的文章提到標題的 Next.js 了XD
這也是本系列文的源頭,我開始學前端框架 Bootstrap, React 的起點。
今天的文章沒有教學,(結果發完文回過頭來看發現自己這句話好像有點打臉XD?)
想帶大家體驗我 Day1 說的,
在我都還沒學 Bootstrap, React 之前就用 Next.js 當起手式是什麼感覺XD
對 Next.js 有興趣的還可以參考之前大大在鐵人賽寫的文章→ Next.js 功能及介紹

本日正文

先直接帶大家在 local 端安裝佈署 Next.js 的環境。

前置作業:initial Github

建議搭配 Github 環境進行後續安裝,
因此這邊我先在 local 端 initial Github 環境。
(其實 Codesandbox 也有 Next.js 的 project template 啦,
但想帶一次從零開始的完整流程,
所以我選擇在 local 端操作)

(註:如果之後沒有要跟別人遠端協作,下面第 2-4 步驟不用做)

  1. local 端 initial Git 環境
    先在 local 端開好資料夾,
    到 Git 視窗移到該目錄底下執行以下指令:
git init

https://ithelp.ithome.com.tw/upload/images/20210930/20129873iir8HFlgaQ.png

  1. 到 Github 新增 Repository
    https://ithelp.ithome.com.tw/upload/images/20210930/20129873pt1xYjf01C.png

  2. 將 Github 跟 Git 連結起來
    到 Git 視窗執行以下指令:

git remote add origin https://github.com/Misado/這邊看你的網址是什麼.git

https://ithelp.ithome.com.tw/upload/images/20210930/201298736AimXaQVRM.png

  1. 測試丟一個檔案看看,有沒有連結成功
$ touch test.txt
$ git add .
$ git commit -m "test"
$ git push origin master

https://ithelp.ithome.com.tw/upload/images/20210930/201298732jjWLsueNi.png

在 local 端丟的檔案在 Github 有出現了~~~
https://ithelp.ithome.com.tw/upload/images/20210930/20129873ZwybZ97X7U.png

正式作業:initial Next.js

其實 Next.js 的教學文件滿佛心的,
直接跟著一步一步做即可。
Create a Next.js App

  1. Create a Next.js app
    到前面 local 端開好的資料夾(例如我剛剛開的是test0930)執行以下指令:
npx create-next-app nextjs-blog --use-npm --example "https://github.com/vercel/next-learn/tree/master/basics/learn-starter"

https://ithelp.ithome.com.tw/upload/images/20210930/20129873pt2Rv0whCM.png

這時候你會發現 test0930 目錄底下多出了一些東西:
https://ithelp.ithome.com.tw/upload/images/20210930/20129873fmNqlE2Gm4.png

這就是你第一個 Next.js 的服務哦XD

  1. 開啟服務
    然後接著按照文件所說移到 nextjs-blog 目錄後,再執行 npm run dev 命令開啟服務吧!
cd nextjs-blog
npm run dev

https://ithelp.ithome.com.tw/upload/images/20210930/20129873pp7tRfSfdm.png

這時候你會發現視窗出現了一些訊息,
看起來服務似乎在運作囉!

  1. 到瀏覽器看看成果吧!
    Next.js 開啟的服務預設在 3000 port,
    所以打開瀏覽器輸入 http://localhost:3000 來看看成果吧!
    https://ithelp.ithome.com.tw/upload/images/20210930/20129873NJUJukBQXl.png

哇,看起來好像很容易就把一個網頁服務架起來了~~~ (歡呼)

那我們打開 nextjs-blog/pages 底下的 index.js 看看程式長什麼樣子吧~
(PS. 頁面都會在 pages 目錄底下)

https://ithelp.ithome.com.tw/upload/images/20210930/20129873Aob2XXphki.png

舉凡 importexportreturnclassName......
有沒有覺得這根本就是我們前幾天一直看到的 React 寫法!
是的沒錯,
Next.js 是以 React 為基底的套件框架,
所以 React 的語法放在 Next.js 框架裡面當然是沒有問題。

額外挑戰:把之前寫過的程式放到 Next.js APP 裡面

不過今天文章如果光只是把 Next.js 的環境架起來這樣好像太容易了,
我想把之前寫過的 code 試著放上來看看!

先在 pages 目錄底下新增一個 0930.jsx 的檔案,
把昨天 Day27 的程式原封不動貼進去 0930.jsx 的檔案,
像這樣:
https://ithelp.ithome.com.tw/upload/images/20210930/20129873cd2J6zftVc.png

然後再到瀏覽器輸入 http://localhost:3000/0930
發現有錯誤,

Error: The default export is not a React Component in page: "/0930"

https://ithelp.ithome.com.tw/upload/images/20210930/201298738XQUkIn5xd.png

這是因為我們之前的寫法都是把這些頁面寫成 component export 出去,
然後在 App.js 裡 import 使用,
我們如果要直接在這裡渲染頁面,
稍微改一下語法就好,

export const Game = () => {

把這行直接改成:

export default function Game() {

再讓我們看一次成果吧!
https://ithelp.ithome.com.tw/upload/images/20210930/20129873FwxDK3Q67v.png
可以了!!!

那我們現在打開 nextjs-blog/pages 底下的 0930.jsx 看一下整個程式的樣子吧~
https://ithelp.ithome.com.tw/upload/images/20211001/201298732Xz7zArChm.png

我剛開始接觸 Next.js 時看到的程式就大概是長這種樣子,
就在我連 React 不會的情況下,
看到這些程式根本黑人問號啊XDDDDDDDDD
我搞不清楚這些語法到底是 Next.js 獨有的還是什麼XD
(那時候我連 React 也不知道,所以我連它是不是 React 語法的這個疑問都沒有XD)

我記得當時的我只覺得「天啊,好難,這什麼!!!!!!」XD
而且那時候我連 Bootstrap 也還不會,
所以我還記得當時的我就算要查資料,
我也不知道到底該查 Next.js? React? React.js? Bootstrap? Reactstrap?
傻傻分不清楚XD
(當然現在終於搞懂了啦orz)

因為我跌跌撞撞走過這些流程,
所以我強烈建議大家要碰 Next.js 之前,
拜託先去學 React,
還有 Bootstrap XD

後記

很多人在 1 號就準時開賽,
所以今天很多人就完賽了XD
我還有兩天,加油!!!!!!!!!!!!!


上一篇
[Day27] 在 Codecademy 學 React ~ 用 useEffect 為遊戲加上計時功能吧!
下一篇
[Day29] 倒數第二天~集大成!Next.js + React + Bootstrap + Reactstrap 十八般武藝(?)樣樣來,勇敢的上吧!
系列文
Re: 從 Next.js 開始的 React 生活31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言