PointRee 프로젝트 2 - front 개발환경 셋팅과 전체적인 디자인

mkdir pointRee
cd pointRee
mkdir front
cd front
npm init -y
npm install react-create-app

가장 먼저 vscode를 통해 wsl2에 접속하고 wsl2에 폴더를 만들어 주고 react-create-app으로 간단하게 react프로젝트를 시작했다. 그리고 npm run start로 시작해보면 정상적으로 프로젝트가 실행되는 것을 확인 할 수 있다.

이때 나처럼 wsl2로 실행시킨 사람이라면 window의 브라우저에 localhost:3060을 타이핑해서 들어간다면 접속이 되지 않을 것이다.

wsl2는 별도의 ip를 가지고 있기 때문인데, wsl2의 ip:3060으로 접속하거나 실행시킨 console창의 링크를 클릭하면 window의 브라우저에 포트번호가 변경되며 열릴 것이다.



1. index.js 와 기본 route 구성

1) index.js

import ReactDOM from "react-dom";
import { BrowserRouter } from "react-router-dom";
import * as serviceWorker from "./serviceWorker";
import App from "./App";

ReactDOM.render(
  <BrowserRouter>{<App />}</BrowserRouter>,
  document.getElementById("root"),
);

serviceWorker.unregister();

2) route.js

import { Navigate } from "react-router-dom";
import DashboardLayout from "src/components/layout/DashboardLayout";
import Account from "src/pages/Account";
import Customers from "src/pages/Customers";
import Points from "src/pages/Points";
import Dashboard from "src/pages/Dashboard";
import Login from "src/pages/Login";
import LogOut from "src/pages/LogOut";
import NotFound from "src/pages/NotFound";
import Register from "src/pages/Register";
import Introduce from "src/pages/Introduce";

const routes = [
  {
    path: "/",
    element: <DashboardLayout />,
    children: [
      { path: "404", element: <NotFound /> },
      { path: "/", element: <Navigate to="/pointree" /> },
      { path: "*", element: <Navigate to="/404" /> },
    ],
  },
  {
    path: "pointree",
    element: <DashboardLayout />,
    children: [
      { path: "/", element: <Introduce /> },
      { path: "account", element: <Account /> },
      { path: "logout", element: <LogOut /> },
      { path: "points", element: <Points /> },
      { path: "dashboard", element: <Dashboard /> },
      { path: "customers", element: <Customers /> },
      { path: "*", element: <Navigate to="/404" /> },
      { path: "login", element: <Login /> },
      { path: "register", element: <Register /> },
    ],
  },
];

export default routes;

3) App.js

import { useRoutes } from "react-router-dom";
import routes from "src/routes";

const App = () => {
  const routing = useRoutes(routes);

  return { routing };
};

export default App;

앞에서 계획한 기능에 따라 대략적으로 예상한 url경로마다 render할 컴포넌트를 설정해놓은 router를 따로 폴더에 설정을 해주었고, 후에 material-ui, recoil등 componenet depth가 늘어날텐데 index.js에 한번에 작성하는 것보다 별도의 app.js 를 작성하는 것이 보기 좋을 것이라고 생각되어 위와같이 별도로 작성을 해주었다.



2. 각 컴포넌트 디자인 해주기

모든 page에서 사용할 header와 Sidebar등을 Materail-Ui를 이용해 디자인 해주었고, main page에는 사이트를 간단하게 소개하는 page로 작성하고 로그인page까지 작성을 해주었습니다.

이 과정은 이렇다할 건 없고 material-ui의 docs를 살펴보면서 했고 생각보다 시간과 코드가 길어서 간단하게 완성된 모습만 기록을 남기려고 합니다.

alter-text
Tags :

Related Posts

오브젝트: 코드로 이해하는 객체지향 설계

오브젝트: 코드로 이해하는 객체지향 설계

  • Books
  • 2021년 11월 12일

1. 객체지향 설계 설계란 코드를 배치하는 것이다. 좋은 설계란 오늘 요구하는 기능을 온전히 수행하면서 내일의 변경을 매끄럽게 수용할 수 있는 설계 요구사항은 항상 변하기 마련이다. 2. 객체지향 프로그래밍 부모 클래스에 기본적인 알고리즘의 흐름을 구현하고 중간에 필요한 처리를 자식 클래스에게 위임하는 디자인 패턴을 TEMPLATE METHOD 패턴 이라고 한다. 자식 클래스가 부모 클래스를 대신 하는 것이 업캐스팅 다형성이란 동일한 메시지를 수신했을 때 객체의 타입에 따라 다르게 응답할 수 있는 능력 상속은 구현 상속이 아니라 인터페이스 상속을 위해 사용해야 한다. 대부분의 사람들은 코드 재사용을 상속의 주된 목적이라고 생각하지만 이것은 오해다. 인터페이스를 재사용할 목적이 아니라 구현을 재사용할 목적으로 상속을 사용하면 변경에 취약한 코드를 낳게 될 확률이 높다. 상속의 가장 큰 문제점은 캡슐화를 위반한다는 것. 상속의 두번째 단점은 설계가 유연하지 않다는 것 3. 역할, 책임, 협력 코드를 재사용하는 경우에는 상속보다 합성을 선호하는 것이 옳지만 다형성을 위해 인터페이스를 재사용하는 경우에는 상속과 합성을 함께 조합해서 사용할 수 밖에 없다. 객체지향 패러다임의 관점에서 핵심은 역할, 책임, 협력이다. 객체지향 설계에서 가장 중요한 것은 책임이다. 객체에게 얼마나 적절한 책임을 할당하느냐가 설계의 전체적인 품질을 결정한다. 역할을 구현하는 가장 일반적인 방법은 추상 클래스와 인터페이스를 사용하는 것 협력의 관점에서 추상 클래스와 인터페이스는 구체 클래스들이 따라야 하는 책임의 집합을 서술한 것이다. 추상 클래스는 책임의 일부를 구현해 놓은 것이고 인터페이스는 일체의 구현 없이 책임의 집합만을 나열해 놓았다는 차이가 있지만 협력의 관점에서는 둘 모두 역할을 정의할 수 있는 구현 방법이라는 공통점을 공유한다. 4. 메시지와 인터페이스 강조하고 싶은 것은 소프트웨어 설계에 법칙이란 존재하지 않는다 라는 것이다. 원칙을 맹신하지 마라. 원칙이 적절한 상황과 부적절한 상황을 판단할 수 있는 안목을 길러라. 설계는 트레이드오프의 산물이다. 소프트웨어 설계에 존재하는 몇 안되는 법칙 중 하나는 경우에 따라 다르다 라는 사실을 명심해라. 프로시저는 부수효과를 발생시킬 수 있지만 반환할 수 없다. 함수는 값을 반환할 수 있지만 부수효과는 발생시킬 수 없다. 5. 객체 분해 하향식은 이미 완전히 이해된 사실을 서술하기에 적합한 방법이다. 그러나 하향식은 새로운 것을 개발하고, 설계하고, 발견하는 데는 적합한 방법이 아니다. 이것은 수학과 아주 유사하다. 수학 교과서는 계산의 과정을 논리적인 순서로 서술한다. 공인되고 증명된 이론이 뒤이은 이론을 증명하기 위해 사용된다....

Read More
도메인 주도 설계로 시작하는 마이크로 서비스 개발

도메인 주도 설계로 시작하는 마이크로 서비스 개발

  • Books
  • 2021년 12월 27일

1. 마이크로서비스를 위한 조건 1) 업무 기능 중심의 팀 기술별로 팀이 나눠지게 되면 서비스 한개를 개발하는데 많은 의사소통이 필요하고 의사결정이 느려진다. 업무기능을 중심으로 다양한 기술을 가진 사람들이 하나의 팀이 되어 서비스를 만들어야 한다. 2) 폴리글랏 프로그래밍 각각의 서비스에 맞는 효율적인 방법론과 도구, 기술을 찾아 적용. 3) 개발 생명주기는 프로젝트단위가 아닌 제품 중심 초기에 모든 일정을 계획하고 요구사항 정의, 설계, 개발을 진행하는 것은 변경이나 새로운 아이디어를 포용하기 힘들다. 제품중심의 애자일 개방 방식을 채용하여 단기간의 스프린트로 계속한 개발/피드백으로 제품을 지속적으로 변화, 개선하는 것이 마이크로서비스이다....

Read More
연산자

연산자

1. 산술 연산자 구분 연산자 연산 피연산자 타입 사칙 연산과 나머지 + 덧셈 정수, 실수, 복소수, 문자열 - 뺄셈 정수, 실수, 복소수 * 곱셈 정수, 실수, 복소수 / 나눗셈 정수, 실수, 복소수 % 나머지 정수, 실수, 복소수 비트 연산 &amp; AND 비트연산 정수 | OR비트 연산 정수 ^ XOR비트 연산 정수 &amp;^ 비트 클리어 정수 시프트 연산 &laquo; 왼쪽 시프트 정수 &laquo; 양의 정수 &raquo; 오른쪽 시프트 정수 &raquo; 양의 정수 산술 연산은 다른 언어의 연산과 별로 다를 것이 없으며 go는 강타입 언어이기 때문에 반드시 피연산자들끼리의 타입이 같아야만 에러가 발생하지 않는다....

Read More