搜尋
首頁web前端js教程從零到店面:我的電子商務網站建立之旅

內容

  1. 簡介
  2. 技術堆疊
  3. 快速概述
  4. API
  5. 前端
  6. 管理儀表板
  7. 資源

原始碼:https://github.com/aelassas/wexcommerce

示範:https://wexcommerce.dynv6.net:8002

介紹

對於重視創意自由和技術控制的開發者來說,Shopify 等傳統電子商務平台可能會感到受限。雖然 Shopify 的模板提供了快速設置,並且其 Storefront API 提供了一定的靈活性,但這兩種解決方案都沒有提供現代開發人員渴望的完整架構自由。

這個想法源自於建立無邊界的願望 - 一個完全可自訂的電子商務網站,其中每個方面都在您的控制之下:

  • 擁有 UI/UX:設計獨特的客戶體驗,而無需克服模板限制
  • 控制後端:實現完美匹配需求的自訂業務邏輯和資料結構
  • 掌握 DevOps:使用首選工具和工作流程部署、擴展和監控應用程式
  • 自由擴充:增加新功能和集成,無需平台限製或額外費用

技術堆疊

這是使其成為可能的技術堆疊:

  • Node.js
  • Next.js
  • MongoDB
  • MUI
  • 打字稿
  • 條紋
  • 碼頭工人

由於 TypeScript 具有眾多優點,因此做出了使用 TypeScript 的關鍵設計決定。 TypeScript 提供強大的類型、工具和集成,從而產生高品質、可擴展、更具可讀性和可維護性的程式碼,並且易於調試和測試。

我選擇Next.js是因為它強大的渲染功能,MongoDB是為了靈活的資料建模,而Stripe是為了安全的支付處理。

選擇此堆疊,您不僅僅是在建立一個商店 - 您正在投資一個可以根據您的需求不斷發展的基礎,並得到強大的開源技術和不斷發展的開發者社群的支持。

使用 Next.js 建立網站為擴展業務奠定了堅實的基礎。專注於效能、安全性和使用者體驗,同時維護程式碼品質和文件。定期更新和監控將確保平台保持競爭力和可靠性。

Next.js 因其以下優點而成為絕佳選擇:

  • 卓越效能:內建最佳化,可實現快速頁面載入和無縫使用者體驗
  • SEO 優勢:伺服器端渲染功能,確保您的產品易於被發現
  • 可擴充性:隨您的業務一起成長的企業就緒架構
  • 豐富的生態系統:用於快速開發的大量程式庫和工具
  • 開發者體驗:直覺的開發工作流程,具有熱重載和自動路由

快速概覽

前端

從前端,使用者可以搜尋可用產品、將產品加入購物車並結帳。

以下是前端的登陸頁:

From Zero to Storefront: My Journey Building an E-commerce Site

以下是前端的搜尋頁面:

From Zero to Storefront: My Journey Building an E-commerce Site

以下是範例產品頁面:

From Zero to Storefront: My Journey Building an E-commerce Site

以下是產品圖片的全螢幕視圖:

From Zero to Storefront: My Journey Building an E-commerce Site

以下是購物車頁面:

From Zero to Storefront: My Journey Building an E-commerce Site

以下是結帳頁:

From Zero to Storefront: My Journey Building an E-commerce Site

以下是登入頁面:

From Zero to Storefront: My Journey Building an E-commerce Site

以下是註冊頁面:

From Zero to Storefront: My Journey Building an E-commerce Site

以下是使用者可以看到他的訂單的頁面:

From Zero to Storefront: My Journey Building an E-commerce Site

就是這樣!這些是前端的主要頁面。

管理儀表板

透過管理儀表板,管理員可以管理類別、產品、使用者和訂單。

管理員也可以管理以下設定:

  • 區域設定:平台語言(英語或法語)和貨幣
  • 配送設定:啟用的配送方式以及每種方式的費用
  • 付款設定:啟用付款方式(信用卡、貨到付款或電匯)
  • 銀行設定:電匯的銀行資訊(IBAN 和其他資訊)

以下是登入頁面:

From Zero to Storefront: My Journey Building an E-commerce Site

以下是管理員可以查看和管理訂單的儀表板頁面:

From Zero to Storefront: My Journey Building an E-commerce Site

以下是管理員管理類別的頁面:

From Zero to Storefront: My Journey Building an E-commerce Site

以下是管理員可以檢視和管理產品的頁面:

From Zero to Storefront: My Journey Building an E-commerce Site

以下是管理員編輯產品的頁面:

From Zero to Storefront: My Journey Building an E-commerce Site

以下是產品圖片的全螢幕視圖:

From Zero to Storefront: My Journey Building an E-commerce Site

以下是設定頁:

From Zero to Storefront: My Journey Building an E-commerce Site

就是這樣。這些是管理儀表板的主要頁面。

應用程式介面

From Zero to Storefront: My Journey Building an E-commerce Site

API 是一個 Node.js 伺服器應用程序,它使用 Express 公開 RESTful API,從而可以存取 MongoDB 資料庫。

API 由前端、管理儀表板使用,也將由行動應用程式使用。

API 公開了管理儀表板和前端所需的所有功能。該API遵循MVC設計模式。 JWT 用於身份驗證。有些功能需要身份驗證,例如與管理產品和訂單相關的功能,而其他功能則不需要身份驗證,例如為未經過身份驗證的用戶檢索類別和可用產品:

  • ./api/src/models/ 資料夾包含 MongoDB 模型。
  • ./api/src/routes/ 資料夾包含 Express 路線。
  • ./api/src/controllers/ 資料夾包含控制器。
  • ./api/src/middlewares/ 資料夾包含中間件。
  • ./api/src/app.ts 是載入路由的主伺服器。
  • ./api/src/index.ts 是 api 的主要入口點。

index.ts 在主伺服器中:

這是一個使用 Node.js 和 Express 啟動伺服器的 TypeScript 檔案。它導入了多個模組,包括 dotenv、process、fs、http、https、mongoose 和 app。然後它與 MongoDB 資料庫建立連接。然後,它檢查 HTTPS 環境變數是否設為 true,如果是,則使用 https 模組以及提供的私密金鑰和憑證建立 HTTPS 伺服器。否則,它使用 http 模組建立一個 HTTP 伺服器。伺服器監聽 PORT 環境變數中指定的連接埠。

close 函數被定義為在收到終止訊號時優雅地停止伺服器。它關閉伺服器和 MongoDB 連接,然後以狀態碼 0 退出進程。最後,它註冊當進程收到 SIGINT、SIGTERM 或 SIGQUIT 訊號時要呼叫的 close 函數。

app.ts 是 api 的主要入口點:

首先,我們建立一個 Express 應用並載入 cors、compression、helmet 和 nocache 等中間件。我們使用頭盔中間件庫設置了各種安全措施。我們也為應用程式的不同部分匯入各種路由文件,例如productRoutes、orderRoutes、categoryRoutes、notificationRoutes、userRoutes。最後,我們載入 Express 路線並匯出應用程式。

api中有11條路由。每條路線都有自己的控制器,遵循 MVC 設計模式和 SOLID 原則。主要路線如下:

  • userRoutes:提供與使用者相關的REST功能
  • categoryRoutes:提供與類別相關的REST函數
  • productRoutes:提供與產品相關的REST功能
  • cartRoutes:提供與購物車相關的REST功能
  • wishlistRoutes:提供與願望清單相關的REST功能
  • deliveryTypeRoutes:提供與配送方式相關的REST功能
  • paymentTypeRoutes:提供與支付方式相關的REST函數
  • orderRoutes:提供與訂單相關的REST函數
  • notificationRoutes:提供與通知相關的REST功能
  • settingRoutes:提供與設定相關的REST功能
  • stripeRoutes:提供與Stripe支付網關相關的REST功能

我們不會一一解釋每條路線。我們將以categoryRoutes為例,看看它是如何製作的:

首先,我們建立一個 Express Router。然後,我們使用它的名稱、方法、中間件和控制器來建立路由。

routeNames 包含categoryRoutes 路線名稱:

categoryController 包含有關類別的主要業務邏輯。我們不會看到控制器的所有原始程式碼,因為它相當大,但我們將以創建控制器函數為例。

以下是類別模型:

一個類別有多個值。每種語言一個值。預設支援英語和法語。

以下是價值模型:

值具有語言代碼 (ISO 639-1) 和字串值。

以下是建立控制器函數:

在此函數中,我們檢索請求的正文,迭代正文中提供的值(每種語言一個值)並建立一個值。最後,我們根據建立的值和圖像檔案建立類別。

前端

前端是一個使用 Next.js 和 MUI 建立的 Web 應用程式。從前端,用戶可以搜尋可用產品,將其添加到購物車,然後根據可用的交付和付款方式繼續結帳。

  • ./frontend/public/ 資料夾包含公共資源。
  • ./frontend/src/styles/ 資料夾包含 CSS 樣式。
  • ./frontend/src/components/ 資料夾包含 React 元件。
  • ./frontend/src/lang/ 包含語言環境檔案。
  • ./frontend/src/app/ 資料夾包含 Next.js 頁面。
  • ./frontend/src/lib/ 包含伺服器操作。
  • ./frontend/next.config.ts 是前端的主要設定檔。

前端是使用 create-next-app 建立的:

在Next.js中,頁面是從pages目錄中的.js、.jsx、.ts或.tsx檔案匯出的React元件。每個頁面都根據其檔案名稱與一條路徑相關聯。

預設情況下,Next.js 預先渲染每個頁面。這意味著 Next.js 提前為每個頁面產生 HTML,而不是全部由客戶端 JavaScript 完成。預渲染可以帶來更好的效能和 SEO。

每個產生的 HTML 都與該頁面所需的最少 JavaScript 程式碼相關聯。當瀏覽器載入頁面時,其 JavaScript 程式碼就會運作並使頁面完全互動。 (這個過程稱為水合作用。)

前端使用伺服器端渲染進行SEO最佳化,以便產品可以被搜尋引擎索引。

管理儀表板

管理儀表板是一個使用 Next.js 和 MUI 建立的 Web 應用程式。透過管理儀表板,管理員可以管理類別、產品、訂單和使用者。建立新訂單時,管理員使用者會收到通知並收到電子郵件。

  • ./backend/public/ 資料夾包含公共資產。
  • ./backend/src/styles/ 資料夾包含 CSS 樣式。
  • ./backend/src/components/ 資料夾包含 React 元件。
  • ./backend/src/lang/ 包含語言環境檔案。
  • ./backend/src/app/ 資料夾包含 Next.js 頁面。
  • ./backend/src/lib/ 包含伺服器操作。
  • ./backend/next.config.ts 是後端的主要設定檔。

管理儀表板也是使用 create-next-app 建立的:

資源

  1. 概述
  2. 安裝(自架)
  3. 安裝(Docker)
    1. Docker 映像
    2. SSL
  4. 設定條紋
  5. 從源頭運行
  6. 演示資料庫
    1. Windows、Linux 和 macOS
    2. 碼頭工人
  7. 更改語言和貨幣
  8. 新增語言
  9. 單元測試和覆蓋率
  10. 日誌

就是這樣!我希望你喜歡閱讀。

以上是從零到店面:我的電子商務網站建立之旅的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
JavaScript的角色:使網絡交互和動態JavaScript的角色:使網絡交互和動態Apr 24, 2025 am 12:12 AM

JavaScript是現代網站的核心,因為它增強了網頁的交互性和動態性。 1)它允許在不刷新頁面的情況下改變內容,2)通過DOMAPI操作網頁,3)支持複雜的交互效果如動畫和拖放,4)優化性能和最佳實踐提高用戶體驗。

C和JavaScript:連接解釋C和JavaScript:連接解釋Apr 23, 2025 am 12:07 AM

C 和JavaScript通過WebAssembly實現互操作性。 1)C 代碼編譯成WebAssembly模塊,引入到JavaScript環境中,增強計算能力。 2)在遊戲開發中,C 處理物理引擎和圖形渲染,JavaScript負責遊戲邏輯和用戶界面。

從網站到應用程序:JavaScript的不同應用從網站到應用程序:JavaScript的不同應用Apr 22, 2025 am 12:02 AM

JavaScript在網站、移動應用、桌面應用和服務器端編程中均有廣泛應用。 1)在網站開發中,JavaScript與HTML、CSS一起操作DOM,實現動態效果,並支持如jQuery、React等框架。 2)通過ReactNative和Ionic,JavaScript用於開發跨平台移動應用。 3)Electron框架使JavaScript能構建桌面應用。 4)Node.js讓JavaScript在服務器端運行,支持高並發請求。

Python vs. JavaScript:比較用例和應用程序Python vs. JavaScript:比較用例和應用程序Apr 21, 2025 am 12:01 AM

Python更適合數據科學和自動化,JavaScript更適合前端和全棧開發。 1.Python在數據科學和機器學習中表現出色,使用NumPy、Pandas等庫進行數據處理和建模。 2.Python在自動化和腳本編寫方面簡潔高效。 3.JavaScript在前端開發中不可或缺,用於構建動態網頁和單頁面應用。 4.JavaScript通過Node.js在後端開發中發揮作用,支持全棧開發。

C/C在JavaScript口譯員和編譯器中的作用C/C在JavaScript口譯員和編譯器中的作用Apr 20, 2025 am 12:01 AM

C和C 在JavaScript引擎中扮演了至关重要的角色,主要用于实现解释器和JIT编译器。1)C 用于解析JavaScript源码并生成抽象语法树。2)C 负责生成和执行字节码。3)C 实现JIT编译器,在运行时优化和编译热点代码,显著提高JavaScript的执行效率。

JavaScript在行動中:現實世界中的示例和項目JavaScript在行動中:現實世界中的示例和項目Apr 19, 2025 am 12:13 AM

JavaScript在現實世界中的應用包括前端和後端開發。 1)通過構建TODO列表應用展示前端應用,涉及DOM操作和事件處理。 2)通過Node.js和Express構建RESTfulAPI展示後端應用。

JavaScript和Web:核心功能和用例JavaScript和Web:核心功能和用例Apr 18, 2025 am 12:19 AM

JavaScript在Web開發中的主要用途包括客戶端交互、表單驗證和異步通信。 1)通過DOM操作實現動態內容更新和用戶交互;2)在用戶提交數據前進行客戶端驗證,提高用戶體驗;3)通過AJAX技術實現與服務器的無刷新通信。

了解JavaScript引擎:實施詳細信息了解JavaScript引擎:實施詳細信息Apr 17, 2025 am 12:05 AM

理解JavaScript引擎內部工作原理對開發者重要,因為它能幫助編寫更高效的代碼並理解性能瓶頸和優化策略。 1)引擎的工作流程包括解析、編譯和執行三個階段;2)執行過程中,引擎會進行動態優化,如內聯緩存和隱藏類;3)最佳實踐包括避免全局變量、優化循環、使用const和let,以及避免過度使用閉包。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

VSCode Windows 64位元 下載

VSCode Windows 64位元 下載

微軟推出的免費、功能強大的一款IDE編輯器

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強大的PHP整合開發環境

MantisBT

MantisBT

Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

mPDF

mPDF

mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),