【Next.js】實作Issue Tracker Project

更新於 2024/11/24閱讀時間約 4 分鐘

前言

趁著過年這段集中的時間,好好的從頭到尾跟完Mosh Hamedani的Next.js課程。實作Issue tracker的項目在Part 2,進入實作之前,已經先順過一輪Part 1的理論內容,最後成品算是勉強跟完了70%左右的內容,花了3~4個半天的時間,一邊照教學影片作業,一邊看文件研究吸收,畢竟本來就是做前後端都碰的工作,底層概念上尚且需要花點時間轉換跟熟悉。


綜覽

架構示意圖

架構示意圖

首先,Next.js是一個基於React.js的全端框架,而React.js是一個前端的函式庫。

基本上頁面是由各個react component(組件)所組成,和純前端的react差異在於預設所有的組件都是在後端渲染,即SSR(Server-Side Rendering 伺服器端渲染),需要畫面元件動態互動的話,要在組件頂端多加上use client,組件就會改以CSR(Client-Side Rendering)處理。


預設的路由會以專案資料夾的階層進行查找,資料夾為該頁面命名,頁面的呈現需要一個page.tsx做處理(用的是TypeScript)。如果網址列請求需要查詢參數,則須建立一層資料夾命名在中括號中,例如[id]代表使用id作為查詢參數。


而要建立api而不是頁面的話,資料夾內建立route.ts的檔案,裡面實作GET、POST、PUT、DELETE等邏輯,就可以完成了。


專案綜覽

專案綜覽


資料庫方面使用MySQL,以Prisma進行ORM(Object Relational Mapping)的對應處理。這裡原本懶得另外安裝圖形化介面工具,只透過安裝時一併加入的Command Line Client進行處理,為了效率最後找了vscode內的插件(Database Client JDBC)幫助開發。

資料表

資料表


API測試方面,還是用我使用上順手的thunderClient。

raw-image


成果

進入頁面進行google帳號登入後,可看到現有的議題,沒登入的話僅能進行檢視。

raw-image


點擊議題連結,可個別編輯內容或刪除

刪除

刪除


可將議題更換指派的人員

指派人員

指派人員


編輯議題,透過SimpleMDE跟react-markdown,進行編輯跟呈現markdown撰寫的內容

編輯頁面

編輯頁面

總結

雖然沒有跟完全部內容,主要想從中學習的大方向也都有碰到,例如:

  1. 從零開始建立起一個產品等級的應用程式
  2. 重構技巧
  3. 專案架構分層
  4. 新增/刪除/查詢/修改、session及異常處理
  5. 授權認證機制(GCP、OAuth2.0)
  6. git commit點的顆粒度切分
  7. 手機/平板顯示結果,以及使用devtool進行問題除錯
  8. 自行看官網文件找使用方式跟問題處理
  9. cache機制及衍生問題
    - Data cache
    - Full route cache (cache on the server)
    - Router cache client-side cache)


後面的圖表、Vercel佈署上正式、sentry進行監控追蹤等,暫時還沒時間研究
至少在這短短幾天的精神時光屋中,學會不少維護性的設計考量。


avatar-img
13會員
64內容數
遇到的坑、解過的題、新知識的探索、舊時代的遺毒!? 工作後我發現,文件更新往往跟不上新需求的更迭,犯錯的歷史總是不斷重演。因此,我改變了方式,蒐集從程式上、系統上的每一次異常處理過程,好讓再次遇到相同的問題時能快速應變。此專題就是我的錯題本,期待日後不管在工作上或交流上遇到難題,都能輕鬆地應答:有什麼難的,我都踩過。
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
Err500 的其他內容
巨集(Macro)是什麼? 第一次聽到這個詞是出現在excel,按下錄製鍵後,畫面上進行的操作會被記錄下來,可以重複回放執行前述操作。之後接觸C語言的#define,巨集又跟函數類似...
專案產生大量又瑣碎的作業做處理,眼下要從iReport的設定檔(jrxml)擷取每一項套印參數出來,提供給別人做Excel公式的資料表進行作業。
htmx前陣子還只是網路迷因,近期拿來搭配go的系列影片越來越多了,兩者都可以用很少量的程式實作出功能,很適合拿來做些簡單的project。
作為程式開發人員,一路從Notepad++、VSCode、Eclipse,或多或少都有機會聽過vim,只為了追求極致的開發效率。看看國外直播主ThePrimeagen邊寫程式邊直播,行雲流水的編輯速度,我覺得...我的問題是出在英打。
相信很多初學者學python的原因,不外乎語法簡單、好上手、重點是有很多現成的套件可以玩。那麼,Java呢?有!當然有!而且還多到你不知道該選哪個好! 今天的文章主要示範如何在vscode新建立Java 的maven專案,並且透過maven安裝這些額外的套件(依賴)
最近配合公司政策換了新電腦,重新回想起從頭建環境的惡夢。本篇文就來記錄一下如何開始踏入Java的第一步,方便起見也使用相對Eclipse、IntelliJ來說輕量不少的VScode作為編輯器。
巨集(Macro)是什麼? 第一次聽到這個詞是出現在excel,按下錄製鍵後,畫面上進行的操作會被記錄下來,可以重複回放執行前述操作。之後接觸C語言的#define,巨集又跟函數類似...
專案產生大量又瑣碎的作業做處理,眼下要從iReport的設定檔(jrxml)擷取每一項套印參數出來,提供給別人做Excel公式的資料表進行作業。
htmx前陣子還只是網路迷因,近期拿來搭配go的系列影片越來越多了,兩者都可以用很少量的程式實作出功能,很適合拿來做些簡單的project。
作為程式開發人員,一路從Notepad++、VSCode、Eclipse,或多或少都有機會聽過vim,只為了追求極致的開發效率。看看國外直播主ThePrimeagen邊寫程式邊直播,行雲流水的編輯速度,我覺得...我的問題是出在英打。
相信很多初學者學python的原因,不外乎語法簡單、好上手、重點是有很多現成的套件可以玩。那麼,Java呢?有!當然有!而且還多到你不知道該選哪個好! 今天的文章主要示範如何在vscode新建立Java 的maven專案,並且透過maven安裝這些額外的套件(依賴)
最近配合公司政策換了新電腦,重新回想起從頭建環境的惡夢。本篇文就來記錄一下如何開始踏入Java的第一步,方便起見也使用相對Eclipse、IntelliJ來說輕量不少的VScode作為編輯器。
你可能也想看
Google News 追蹤
Thumbnail
徵的就是你 🫵 超ㄅㄧㄤˋ 獎品搭配超瞎趴的四大主題,等你踹共啦!還有機會獲得經典的「偉士牌樂高」喔!馬上來參加本次的活動吧!
Thumbnail
隨著理財資訊的普及,越來越多台灣人不再將資產侷限於台股,而是將視野拓展到國際市場。特別是美國市場,其豐富的理財選擇,讓不少人開始思考將資金配置於海外市場的可能性。 然而,要參與美國市場並不只是盲目跟隨標的這麼簡單,而是需要策略和方式,尤其對新手而言,除了選股以外還會遇到語言、開戶流程、Ap
Thumbnail
當你做好你的網站後,教大家把你的網站部署到雲端伺服器Vercel
Thumbnail
這集介紹Next Image Module模組和CSS3如何定位在Next.js Framework
Thumbnail
Next.js 架構是怎麼構成的呢?這次教學視頻和文章來帶大家了解_app.js or layout.js
Thumbnail
當你有客製化的字型在Google Font裡面,但是又不知道如何導入到Next.js嗎? 這一集教大家如何從Google Font導入Next.js和做一個導覽列
Thumbnail
這集跟大家初步介紹Next.js和如何安裝與設置最後製作一個作品集(Portfolio) 如果對設計有興趣的朋友們可以看以下連結文章來學習Figma設計軟件 https://vocus.cc/article/645c733dfd89780001ffe890
Thumbnail
1. 安裝node.js 2. 建立專案: 接著會詢問一些初始化設定的東西,按照需求選擇即可: 3. 執行 打開http://localhost:3000/ 即可看到畫面。 pages Nuxt.js會自動配置pages中每一個.vue檔案的route。 假設在pages資料夾下新增一個如下內容的a
Thumbnail
說是開發過程的筆記,應該是撞牆心血錄,因為各式各樣的原因,所以為前後端串接困擾了很久⋯⋯
Thumbnail
安裝設置: 安裝完成後,專案目錄結構如下: 執行$ npm run dev 可直接透過http://localhost:3000進入首頁,對應到pages/index.js。 Prod記得每次要先build再start: Example: SSG: 透過外部api取得資料建立靜態頁面 結論:
現在您已經安裝了 WooCommerce 的 WordPress 網站,是時候配置 WooCommerce 並開始添加一些要銷售的產品了! 配置 WooCommerce 設置 在您的 WordPress 站點中,單擊 WooCommerce 菜單選項並轉到Settings。在設置頁面中,將在不同選項
Thumbnail
好久沒看這麼讓人舒心的實境秀了,服裝設計師們的比拚真是讓人眼花撩亂讚嘆不已。沒有太多不必要、讓人頭疼的Drama要素,大部分的設計師專注於作品上而且相處和睦愉快,互相欣賞,情誼真摯,讓人感動。 一開始兩兩一組對一個創作者來說是一大挑戰,溝通與妥協似乎本質上和藝術有所偏差,看著他們合作有的順利有的不斷
Thumbnail
徵的就是你 🫵 超ㄅㄧㄤˋ 獎品搭配超瞎趴的四大主題,等你踹共啦!還有機會獲得經典的「偉士牌樂高」喔!馬上來參加本次的活動吧!
Thumbnail
隨著理財資訊的普及,越來越多台灣人不再將資產侷限於台股,而是將視野拓展到國際市場。特別是美國市場,其豐富的理財選擇,讓不少人開始思考將資金配置於海外市場的可能性。 然而,要參與美國市場並不只是盲目跟隨標的這麼簡單,而是需要策略和方式,尤其對新手而言,除了選股以外還會遇到語言、開戶流程、Ap
Thumbnail
當你做好你的網站後,教大家把你的網站部署到雲端伺服器Vercel
Thumbnail
這集介紹Next Image Module模組和CSS3如何定位在Next.js Framework
Thumbnail
Next.js 架構是怎麼構成的呢?這次教學視頻和文章來帶大家了解_app.js or layout.js
Thumbnail
當你有客製化的字型在Google Font裡面,但是又不知道如何導入到Next.js嗎? 這一集教大家如何從Google Font導入Next.js和做一個導覽列
Thumbnail
這集跟大家初步介紹Next.js和如何安裝與設置最後製作一個作品集(Portfolio) 如果對設計有興趣的朋友們可以看以下連結文章來學習Figma設計軟件 https://vocus.cc/article/645c733dfd89780001ffe890
Thumbnail
1. 安裝node.js 2. 建立專案: 接著會詢問一些初始化設定的東西,按照需求選擇即可: 3. 執行 打開http://localhost:3000/ 即可看到畫面。 pages Nuxt.js會自動配置pages中每一個.vue檔案的route。 假設在pages資料夾下新增一個如下內容的a
Thumbnail
說是開發過程的筆記,應該是撞牆心血錄,因為各式各樣的原因,所以為前後端串接困擾了很久⋯⋯
Thumbnail
安裝設置: 安裝完成後,專案目錄結構如下: 執行$ npm run dev 可直接透過http://localhost:3000進入首頁,對應到pages/index.js。 Prod記得每次要先build再start: Example: SSG: 透過外部api取得資料建立靜態頁面 結論:
現在您已經安裝了 WooCommerce 的 WordPress 網站,是時候配置 WooCommerce 並開始添加一些要銷售的產品了! 配置 WooCommerce 設置 在您的 WordPress 站點中,單擊 WooCommerce 菜單選項並轉到Settings。在設置頁面中,將在不同選項
Thumbnail
好久沒看這麼讓人舒心的實境秀了,服裝設計師們的比拚真是讓人眼花撩亂讚嘆不已。沒有太多不必要、讓人頭疼的Drama要素,大部分的設計師專注於作品上而且相處和睦愉快,互相欣賞,情誼真摯,讓人感動。 一開始兩兩一組對一個創作者來說是一大挑戰,溝通與妥協似乎本質上和藝術有所偏差,看著他們合作有的順利有的不斷