iT邦幫忙

2024 iThome 鐵人賽

DAY 14
0
Modern Web

前後端整合,用Spring boot 與React 開發屬於自己的記帳網頁系列 第 14

Day14 引用bootstrap並設置Header 跟 Footer

  • 分享至 

  • xImage
  •  

前言

在創建我們第一個專案後,我們接下來就要開始寫網頁了。React本身是一個靈活度很高的框架,可以把你寫好的網頁單獨成呈現,也可以合併呈現。

匯入BootStrap

在開發網頁前,我們需要先匯入BootStrap來幫我們設置CSS的樣式,方法很簡單,打開終端機,確定自己是在Account-frontend資料夾,然後輸入

npm install bootstrap

https://ithelp.ithome.com.tw/upload/images/20240924/20152864xUJn2pRxOm.png

安裝完成後我們可以到package.json中看到我們新建的bootstrap
https://ithelp.ithome.com.tw/upload/images/20240924/20152864mA8YFc4Oqf.png
之後要到main.jsx中,import以下內容

import 'bootstrap/dist/css/bootstrap.min.css'

https://ithelp.ithome.com.tw/upload/images/20240924/20152864rUJ9WvIscl.png
在我們匯入好了之後,我們要去修改原本的React內建的CSS,如果不去修改CSS的話,React雖然兩個都會引用,代會優先引用index.CSS的內容,導致結果不是我們想要的,打開index.css就會發現React已經針對許多格式宣告了樣式
index.css
https://ithelp.ithome.com.tw/upload/images/20240924/20152864xEFMhdT343.png
我們可以修改body跟Root的內容,這樣這些CSS就不會影響到bootstrap。如果遇到問題,也可以直接把全部刪掉。

body {
  margin: 0;
  display: flex;
  place-items: center;
  min-width: 320px;
  min-height: 100vh;
}

#root {
  max-width: 1280px;
  margin: 0 auto;
  padding: 2rem;
  text-align: center;
}

這樣就算是完成bootstrap的引入了

創建Hello World

我們可以先開發一個Hello World來測試這個項目
首先,我們先在Src創建一個Component這個資料夾
https://ithelp.ithome.com.tw/upload/images/20240924/20152864lsFCegZTsT.png
然後在Componet底下創建一個檔案,稱為Hello Word
然後寫下以下程式碼
https://ithelp.ithome.com.tw/upload/images/20240924/20152864wSc8k7YdZq.png
用Bootstrap將文字置中

export default function HelloWorld(){
    return <h1 className="text-center">Hello world Component!</h1>
}

在React中,export的意思是我們可以把這個程式給外部使用,整個React起始的網頁會從main.jsx打開,從這裡引入App.jsx,所以我們可以從App.jsx裡呼叫我們的funciton,React就可以呼叫這個function來使用。
原始的App.jsx如下
原始App

import { useState } from 'react'
import reactLogo from './assets/react.svg'
import viteLogo from '/vite.svg'
import './App.css'

function App() {
  const [count, setCount] = useState(0)

  return (
    <>
      <div>
        <a href="https://vitejs.dev" target="_blank">
          <img src={viteLogo} className="logo" alt="Vite logo" />
        </a>
        <a href="https://react.dev" target="_blank">
          <img src={reactLogo} className="logo react" alt="React logo" />
        </a>
      </div>
      <h1>Vite + React</h1>
      <div className="card">
        <button onClick={() => setCount((count) => count + 1)}>
          count is {count}
        </button>
        <p>
          Edit <code>src/App.jsx</code> and save to test HMR
        </p>
      </div>
      <p className="read-the-docs">
        Click on the Vite and React logos to learn more
      </p>
    </>
  )
}

export default App

這裡可以注意的是,Jsx本身是一個可以使用html語法的格式,所以我們可以從return中直接回傳html格式。
寫好之後我們去到App.jsx,修改中間的程式碼,改成HelloWorld

import { StrictMode } from 'react'
import { createRoot } from 'react-dom/client'
import App from './App.jsx'
import './index.css'
import HelloWorld from './Helloworld.jsx'

createRoot(document.getElementById('root')).render(
  <StrictMode>
    <HelloWorld />
  </StrictMode>,
)

這個時候再回到畫面中,就會看到這個
https://ithelp.ithome.com.tw/upload/images/20240924/20152864iizOs3pTOl.png
到了這裡,你就會開發網頁了!

建置網頁Header

接下來,我們要開發網頁的Header跟Footer
同樣的,我們去到Component資料夾中,然後創建一個名為HeaderComponent.jsx的資料夾
https://ithelp.ithome.com.tw/upload/images/20240924/20152864ZzDnXVQcqv.pnghttps://ithelp.ithome.com.tw/upload/images/20240924/20152864aQslKYnQbj.png

/* eslint-disable no-unused-vars */
import React, { useState } from 'react'
import { NavLink } from 'react-router-dom'
const HeaderComponent = () => {
  return (
    <div>
        <header>
            <nav className='navbar navbar-expand-md navbar-dark bg-dark'>
            <div>
                    <a href='http://localhost:5173/' className='navbar-brand'>
                    Account Manager Application</a>
            </div>
            </nav>
        </header>
    </div>
  )
}
export default HeaderComponent

然後回到App.jsx,在Helloword上方加上HeaderComponent

import { StrictMode } from 'react'
import { createRoot } from 'react-dom/client'
import App from './App.jsx'
import './index.css'
import HelloWorld from './Helloworld.jsx'

createRoot(document.getElementById('root')).render(
  <HeaderComponent />
    <HelloWorld />
  </>,
)

然後再次點回網頁,就會看到上面出現了Header
https://ithelp.ithome.com.tw/upload/images/20240924/201528649nG4PV6Vr0.png

建置Footer component

接下來用同地的方式到Componet創建FooterComponent.jsx
https://ithelp.ithome.com.tw/upload/images/20240924/20152864BtnAumHZcf.png
在這個底下輸入以下程式碼

import React from 'react'
const FooterComponent = () => {
  return (
    <div>
        <footer className='footer'>
            <p className='text-center align-text-center'>All rights reserved at 2024-08-01 by Eric Hsu</p>
        </footer>
    </div>
  )
}
export default FooterComponent

然後回到之前index.css,然後調整一下footer

.footer{
  position:absolute;
  bottom:0;
  width:100%;
  height:50px;
  background-color: black;
  text-align: center;
  color: white;
}

https://ithelp.ithome.com.tw/upload/images/20240924/20152864JmLAoGIW2y.png
調整完成後底下就會出現以下內容
https://ithelp.ithome.com.tw/upload/images/20240924/201528643v04Oo2WyN.png
到這裡,我們就成功建置了第一個網頁,並且設置了Footer跟Header了!


上一篇
Day13 React & Vite介紹與啟動第一個前端專案
下一篇
Day15 用React開發前端新增帳目畫面
系列文
前後端整合,用Spring boot 與React 開發屬於自己的記帳網頁30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言