[遊戲開發] 24點數學遊戲 - 網站製作篇(一)

更新於 發佈於 閱讀時間約 4 分鐘
raw-image

前言

大家好,這篇文章主要介紹整個網站的架構以及用到的開發工具與套件,也回頭看看自己寫過的程式,哪些地方可以重構與優化的地方,幫自己 Code Review,首先這個網站建構在 Next.js 框架上,用的是 14 以上的版本,Next.js 在 13 版本後開始推出了 App Router 的架構,跟以往的 Pages Router 也很大的不同,相似的地方在於不需要特別定義路由來指定頁面,只需設定好資料夾結構即可,那我們就開始介紹吧。

開發工具

  1. 原始碼編輯器 - Visual Studio Code
  2. 開發執行環境 - Node.js
  3. 開發框架 - Next.js
  4. CSS框架 - Tailwind CSS
  5. UI Library - shadcn/ui
  6. 動畫 Library - framer motion
  7. 多人連線套件 - socket.io
  8. 狀態管理工具 - zustand
  9. js 超集合語言 - Typescript
  10. 版本控制 - git

以上是主要是用到的套件與開發工具,其中比較重要的兩個套件是 Next.js 與 socket.io,為了解決 SEO 以及自己的技能樹是 React 所以選擇使用 Next.js 來開發,因為要做多人連線的功能,socket.io 是使用度很高的套件,網路上使用的人也很多,如果遇到問題的話很好找答案且使用起來非常簡單。

網站架構

首先在安裝完 VScode、Node.js、git 後可以在終端機下以下指令:

git clone https://github.com/JohnsonHuang555/math24master.git

把整個專案下載下來到根目錄下

npm install

安裝專案使用到的套件

npm run dev

把專案運行起來並跑在 http://localhost:3000,接著就可以在本地端進行開發與測試


網站架構

網站架構

上圖是整個網站架構,app 為 Next.js 13 以上的版本所推出的新頁面結構。

app router

app router

資料夾結構會對應到網址例如:

single-play => https://math24master.com/single-play

multiple-play => https://math24master.com/multiple-play

Page

每個資料夾下需要有 page.tsx 才會讀取到路徑,畫面呈現的程式碼會寫在這裡,在 app 底下的 page 就是首頁 https://math24master.com。

Layout

主要用來設計頁面的模板,可以把不會變動的區塊例如:header、footer 定義在這裡,當切換頁面的時候,Layout 不會 rerender,Template 則相反,詳細的用法可以到 Next.js 官方文件查看。

components

components

上圖為所有元件,把重複性的區塊抽成元件能夠幫助一樣的功能或區塊的程式碼重複利用,達到易維護、易測試、易閱讀的目的,把相同功能或類型的元件再分類會容易找到,一眼就會看出它的作用。

models

models

上圖是 models,因為使用了 Typescript 要定義各種類型,可以減少許多開發中的低級錯誤,例如打錯字😂,也可以明確知道物件中的屬性成員是哪種型別,方便在開發的時候發現問題。

public 是放 Asset 的地方,例如圖檔、字型等等,這邊就不放圖了。

Server

Server

上圖是 server 的入口點,Next.js 可以客製化自己的 server,我在 server 中初始化了 socket.io 並設定連線及所有事件。

在開發 node 時候每次啟動時都要下 node server/index.js 實在是很不方便,因此我使用了 nodemon 這個套件,它可以幫助我們自動重啟,增加開發上的效率。

nodemon

nodemon

上圖我們把用的的指令交給 nodemon 來執行,當儲存檔案後他會重新執行 exec 的指令,因為我們是 typescript 所以要用 ts-node 來啟動。

結語

這篇文章介紹了網站的架構以及用到的開發工具,每種套件就可以再寫幾篇文章來介紹了,需要動畫就上網找 github 星星最多最多人用且簡單好上手的,不想慢慢切版切元件,就上網找哪些適合自己網站的 UI Library,這都是開發上的樂趣,一步步把網站建構起來的過程,之後的文章會把每個大項切成小項介紹,或是各種套件的使用方式。

謝謝您的閱讀,我們下篇文章見 ^^

參考網站


留言
avatar-img
留言分享你的想法!
avatar-img
Johnson Huang的沙龍
7會員
10內容數
Johnson Huang的沙龍的其他內容
2025/01/09
這是一款休閒的記憶配對翻牌遊戲,遊戲總共超過 1000 個關卡等你來挑戰,玩家可以選擇各種不同的主題,例如可愛的動物、繽紛的顏色、超鬧的古人、路邊的樹木與草叢,不只是挑戰你的記憶力還要多一點觀察力才能闖關成功...
Thumbnail
2025/01/09
這是一款休閒的記憶配對翻牌遊戲,遊戲總共超過 1000 個關卡等你來挑戰,玩家可以選擇各種不同的主題,例如可愛的動物、繽紛的顏色、超鬧的古人、路邊的樹木與草叢,不只是挑戰你的記憶力還要多一點觀察力才能闖關成功...
Thumbnail
2024/08/28
大家好,要來介紹一款新開發的翻牌遊戲,可以訓練玩家的反應與記憶力。簡單易懂的遊戲規則以及有趣的題組設計。目前遊戲已經上線,歡迎玩家一起來挑戰!遊戲包含無限接關和排行榜機制,讓玩家能與朋友一較高下。下篇文章將探討遊戲開發技術及購買網域的流程。
Thumbnail
2024/08/28
大家好,要來介紹一款新開發的翻牌遊戲,可以訓練玩家的反應與記憶力。簡單易懂的遊戲規則以及有趣的題組設計。目前遊戲已經上線,歡迎玩家一起來挑戰!遊戲包含無限接關和排行榜機制,讓玩家能與朋友一較高下。下篇文章將探討遊戲開發技術及購買網域的流程。
Thumbnail
2024/08/18
文章介紹了遊戲的核心事件,包括選牌、出牌和計算分數的邏輯與實作。首先介紹遊戲開始時的選牌事件,接著解析出牌事件及算式計算的過程,最後詳述分數計算的邏輯。
Thumbnail
2024/08/18
文章介紹了遊戲的核心事件,包括選牌、出牌和計算分數的邏輯與實作。首先介紹遊戲開始時的選牌事件,接著解析出牌事件及算式計算的過程,最後詳述分數計算的邏輯。
Thumbnail
看更多
你可能也想看
Thumbnail
常常被朋友問「哪裡買的?」嗎?透過蝦皮分潤計畫,把日常購物的分享多加一個步驟,就能轉換成現金回饋。門檻低、申請簡單,特別適合學生與上班族,讓零碎時間也能創造小確幸。
Thumbnail
常常被朋友問「哪裡買的?」嗎?透過蝦皮分潤計畫,把日常購物的分享多加一個步驟,就能轉換成現金回饋。門檻低、申請簡單,特別適合學生與上班族,讓零碎時間也能創造小確幸。
Thumbnail
嗨!歡迎來到 vocus vocus 方格子是台灣最大的內容創作與知識變現平台,並且計畫持續拓展東南亞等等國際市場。我們致力於打造讓創作者能夠自由發表、累積影響力並獲得實質收益的創作生態圈!「創作至上」是我們的核心價值,我們致力於透過平台功能與服務,賦予創作者更多的可能。 vocus 平台匯聚了
Thumbnail
嗨!歡迎來到 vocus vocus 方格子是台灣最大的內容創作與知識變現平台,並且計畫持續拓展東南亞等等國際市場。我們致力於打造讓創作者能夠自由發表、累積影響力並獲得實質收益的創作生態圈!「創作至上」是我們的核心價值,我們致力於透過平台功能與服務,賦予創作者更多的可能。 vocus 平台匯聚了
Thumbnail
這篇文章介紹了網站的整體架構以及開發時所使用的工具和套件,包括 Next.js、Tailwind CSS 和 socket.io 等。文章回顧了程式碼的重構與優化,幫助開發者提高工作效率,適合希望深入瞭解前端開發和網站架構的讀者。
Thumbnail
這篇文章介紹了網站的整體架構以及開發時所使用的工具和套件,包括 Next.js、Tailwind CSS 和 socket.io 等。文章回顧了程式碼的重構與優化,幫助開發者提高工作效率,適合希望深入瞭解前端開發和網站架構的讀者。
Thumbnail
建立React專案-React白話文運動:前一篇文章介紹了三個名詞,分別是:Babel 是什麼?Webpack 是什麼?Npm 是什麼?這一篇則是會手把手建立 React 專案,包含:建置環境、建立 React 專案、啟動專案、如何使用 React 擴充套件。這邊也包含:官方 CRA 建置環境以及自
Thumbnail
建立React專案-React白話文運動:前一篇文章介紹了三個名詞,分別是:Babel 是什麼?Webpack 是什麼?Npm 是什麼?這一篇則是會手把手建立 React 專案,包含:建置環境、建立 React 專案、啟動專案、如何使用 React 擴充套件。這邊也包含:官方 CRA 建置環境以及自
Thumbnail
htmx前陣子還只是網路迷因,近期拿來搭配go的系列影片越來越多了,兩者都可以用很少量的程式實作出功能,很適合拿來做些簡單的project。
Thumbnail
htmx前陣子還只是網路迷因,近期拿來搭配go的系列影片越來越多了,兩者都可以用很少量的程式實作出功能,很適合拿來做些簡單的project。
Thumbnail
React 是開發網頁、手機前端最流行的 JavaScript 套件之一。React 由 Meta 開發。React 並不是一個框架。這是因為它只負責呈現 UI 的元件。不過,React 為 Angular 和 Vue 等框架提供了另一種解決方式,使我們可以與它一起完成覆雜的前端頁面功能。
Thumbnail
React 是開發網頁、手機前端最流行的 JavaScript 套件之一。React 由 Meta 開發。React 並不是一個框架。這是因為它只負責呈現 UI 的元件。不過,React 為 Angular 和 Vue 等框架提供了另一種解決方式,使我們可以與它一起完成覆雜的前端頁面功能。
Thumbnail
Vue 筆記,Nuxt 簡介
Thumbnail
Vue 筆記,Nuxt 簡介
Thumbnail
開始接觸網頁開發後,發現自己缺乏實作經驗, 於是老師推了 Frontend Mentor challenge , 免費的通常是獨立頁面,花錢則是可以挑戰多頁式網站, 初學還沒學到 javascript 或 API 也沒關係, 新手也有提供 HTML/CSS 的練習。 很適合用來增加自己寫網頁的經驗,
Thumbnail
開始接觸網頁開發後,發現自己缺乏實作經驗, 於是老師推了 Frontend Mentor challenge , 免費的通常是獨立頁面,花錢則是可以挑戰多頁式網站, 初學還沒學到 javascript 或 API 也沒關係, 新手也有提供 HTML/CSS 的練習。 很適合用來增加自己寫網頁的經驗,
Thumbnail
這篇想來寫,剛碰到js得時候,為了讓程式可以運作而安裝Node.js 。Node.js 是能夠在伺服器上面運行 JavaScript 的應用平台環境,透過 Node.js 提供的函式庫與執行環境能完成伺服器端服務。此篇幅就直接從純後端的角度切入摟(對不起拉我寫來寫去還是不知道怎麼順順的寫好文章開頭Q
Thumbnail
這篇想來寫,剛碰到js得時候,為了讓程式可以運作而安裝Node.js 。Node.js 是能夠在伺服器上面運行 JavaScript 的應用平台環境,透過 Node.js 提供的函式庫與執行環境能完成伺服器端服務。此篇幅就直接從純後端的角度切入摟(對不起拉我寫來寫去還是不知道怎麼順順的寫好文章開頭Q
Thumbnail
前言 Vue 在過去的一兩年內快速發展,寫法也一直改變,我在過去一年多也更改了兩次寫法,在這個系列中我將以最新的 composition api + typescript 寫法進行教學。 javascript 有兩大痛點,一個是異步問題,另一個是弱型別。要渲染畫面一定要多線程同時異步處理,不然真的一
Thumbnail
前言 Vue 在過去的一兩年內快速發展,寫法也一直改變,我在過去一年多也更改了兩次寫法,在這個系列中我將以最新的 composition api + typescript 寫法進行教學。 javascript 有兩大痛點,一個是異步問題,另一個是弱型別。要渲染畫面一定要多線程同時異步處理,不然真的一
Thumbnail
安裝設置: 安裝完成後,專案目錄結構如下: 執行$ npm run dev 可直接透過http://localhost:3000進入首頁,對應到pages/index.js。 Prod記得每次要先build再start: Example: SSG: 透過外部api取得資料建立靜態頁面 結論:
Thumbnail
安裝設置: 安裝完成後,專案目錄結構如下: 執行$ npm run dev 可直接透過http://localhost:3000進入首頁,對應到pages/index.js。 Prod記得每次要先build再start: Example: SSG: 透過外部api取得資料建立靜態頁面 結論:
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News