avatarJen-Hsuan Hsieh (Sean)

总结

本文主要介绍了如何使用React.js、Material-UI和React Router构建一个单页应用程序(SPA),包括创建子页面组件、实现前端路由以及如何使用Material-UI框架快速搭建美观的用户界面。

摘要

文章首先强调了前后端分离的重要性,以及如何通过前端路由来实现这一目标。作者继续介绍了如何使用Material-UI框架来创建子页面组件,例如注册和登录表单,并提供了具体的安装和使用示例。接着,文章详细解释了如何利用React Router来建立前端路由,包括安装react-burger-menu和react-router-dom库,以及如何在MainPage组件中定义路由和链接。作者还展示了如何在src/index.js中引入MainPage组件,并通过一系列的代码示例展示了项目的文件结构和运行效果。最后,作者总结了构建SPA的步骤,并提供了联系方式以供读者反馈。此外,文章还提到了SEO在SPA中的挑战,并推荐了相关的Golang构建简单Web服务的文章。

观点

  • 前后端分离:通过前端路由实现前后端分离,减少前后端的依赖性,提高应用程序的性能和可维护性。
  • Material-UI的使用:推荐使用Material-UI框架来快速开发高质量的用户界面,提高开发效率。
  • React Router的实现:详细介绍了如何使用React Router进行前端路由,以及如何配合react-burger-menu来创建导航栏。
  • SEO挑战:指出了单页应用程序在SEO方面的不足,即在切换页面时不会重新加载页面,可能会影响搜索引擎的索引。
  • 代码示例和项目结构:通过多个代码示例和项目结构图解,帮助读者更好地理解如何构建和组织SPA的代码。
  • 交流和反馈:鼓励读者在遇到问题时与作者联系,以便持续改进教程内容。

[React.js] Build An React App part.2- Material-UI, SPA and React Router

A journey of a thousand miles begins with single step

Copy right@A layman

Introduction

這篇的學習目標是要讓前後端分離,這有助於降低前後端的相依性,要完成這個目標,首先要讓前端的有獨立的route,讓前端可以不再依賴後端rendering每個頁面。

如同第一篇文章曾說明過的,我們只需要Node.js server為我們提供entry point,之後在切換頁面時不會再發出額外的request到server,這種方式稱之為SPA (Single Page Application),這篇則是記錄如何使用React Router來建立SPA。

以下範例將延續第一篇文章的專案做修改。

Use Material-UI to create sub-page components

以建立起一個表單當成子分頁作為例子,由於這次的重點不在於UI的設計, 推薦可以使用的UI framework為Material-UI,可以幫助快速建立還蠻美觀的UI,打開terminal輸入以下指令:

npm install @material-ui/core --save

在src資料夾下建立Register.js,這邊會用到的有ButtonGrid,及TextField

在src資料夾下建立Login.js

Use React Router to create front-end routing

在src資料夾下建立一個MainPage.js以作為front-end routing的entry point,在這裡會import所有sub page的component (本篇只有建立一個sub page)

MainPage基本上要有個side bar (或是NAV bar)及router component,這邊分別推薦react-burger-menu以及react-router-dom,打開terminal,輸入以下指令:

npm install react-burger-menu --save
npm install react-router-dom --save

react-router-dom的使用邏輯是先在Switch的區塊定義Route,Route的path即是URI,component會對應到一個sub page component;

react-burger-menu的Menu區段放置react-router-dom的Link,Link的to必須對應到Route的path;

另外在Link的OnClick event將state的menuOpen更改為false,MainPage.js的內容如下

修改src/index.js,import MainPage.js:

Wrap up

到目前為止的檔案結構應該會是像這個樣子:

Copy right@A layman

輸入npm run dev並打開瀏覽器查看http://localhost:8080/Login, 應該可以看到以下頁面,因為我們還沒有在submit後做任何事情,因此按下按鈕後還不會發生任何事:

Copy right@A layman

用side bar切換到Register page看看:

Copy right@A layman

Summary

謝謝你耐心地讀到Summary,我是Sean HS,是位軟體工程師。這段使我們可以建立分頁,利用front-end routing可以避免request到back-end,必且在切換頁面時不會跳閃,缺點則是這種做法的SEO很差。

若有錯誤之處,歡迎留言或是聯絡我: [email protected]

期待您的見解,與您交流討論,謝謝。

Related topics

[Golang] Build A Simple Web Service:

[React.js]Build An React App

Web Development
Software Development
React
Single Page Applications
Material Design
Recommended from ReadMedium