HTML
형태의 HTTP 응답 하는 방식새로고침
하면 전체 페이지를 다시 렌더링한다.크롤링
할 때 매우 적합한 형태웹 브라우저
에서 웹 서버 쪽으로 REST API 방식의 요청을 하면, 웹 서버
는 JSON 포맷의 데이터만 웹 브라우저 쪽에 전송하는 방식(API 서버라는 용어 사 )으로 동작하지만 모든 SPA가 CSR 방식으로 구현되는 것은 아니다.
- 자바 스크립트 파일을 번들링해서 한 번에 받아야 하기 때문에 초기 속도 문제는 해결 : (
webpack code splitting
해결)- 검색 엔진 최적화(SEO) ⇒ SSR 해결
- 보안이슈(토큰을 이용 해결)
iex "& {$(irm get.scoop.sh)} -RunAsAdmin"
scoop install nodjs-lts
node -v
npm -v
npm i -g typescript ts-node
cd \
mkdir react/project1/src
touch react/project1/src/index.ts
module.exports = {
bracketSpacing: false,
jsxBracketSameLine: true,
singleQuote: true,
trailingComma: 'none',
arrowParens: 'avoid',
semi: false,
printWidth: 90
};
⇒ ctrl + shift + P
console.log('Hello World')
npx create-react-app reactapp1 --template typescript
const root = ReactDOM.createRoot(
document.getElementById("root") as HTMLElement
);
root.render(
<React.StrictMode>
<App />
</React.StrictMode>
);
reportWebVitals();
npm run build
npm -i (install)
npm --save--dev //개발에 필요한 패키지 설치
export const makeArray = (length: number) => new Array(length).fill(null)
export const range = (min: number, max: number): number[] =>
makeArray(max - min).map((notUsed, index) => index + min)
export const random = (min: number, max: number): number =>
Math.floor(Math.random() * (max - min)) + min
🔗 이미지 가져오는 링크 : https://picsum.photos/
import * as U from './util'
export const picsumUrl = (width: number, height: number): string =>
`https://picsum.photos/${width}/${height}`
export const randomImage = (
w: number = 1000,
h: number = 800,
delta: number = 200
): string => picsumUrl(U.random(w, w + delta), U.random(h, h + delta))
export const randomAvatar = () => {
const size = U.random(200, 400)
return picsumUrl(size, size)
}
import Chance from 'chance'
const chance = new Chance()
export const randomUUID = () => chance.guid()
export const randomName = () => chance.name()
export const randomEmail = () => chance.email()
export const randomId = () => chance.fbid() // facebook id
export const randomJobTitle = () => chance.profession()
export const randomCompanyName = () => chance.company()
export const randomSentence = (words = 5) => chance.sentence({words})
export const randomTitleText = (words = 3) => chance.sentence({words})
export const randomParagraphs = (sentences = 3) => chance.paragraph({sentences})
import {DateTime} from 'luxon'
export const makeRandomPastDate = () => {
const value = new Date().valueOf()
const n = 100000
return new Date(value - Math.floor(Math.random() * n * n))
}
export const makeRelativeDate = (date: Date) =>
DateTime.fromJSDate(date).startOf('day').toRelative()
export const randomRelativeDate = () => makeRelativeDate(makeRandomPastDate())
export const makeDayMonthYear = (date: Date) =>
DateTime.fromJSDate(date).toLocaleString(DateTime.DATE_FULL)
export const randomDayMonthYear = () => makeDayMonthYear(makeRandomPastDate())
index.ts
에서 마지막으로 모두의 컴포넌트를 결합해서 내보냄export * from './chance'
export * from './date'
export * from './image'
export * from './util'
App.tsx
import * as D from './data'
import React from 'react'
export default function App() {
return (
<div>
<p>
{D.randomName()},{D.randomJobTitle()}, {D.randomDayMonthYear()}
</p>
<img src={D.randomAvatar()} height="50" />
<img src={D.randomImage()} height="60" />
</div>
)
}
이거 되다가 안돼서… 처음부터 다시 만들어봤다.. 뭐가 문제였을까… index랑 app 연동이 자꾸안됐는데… 처음 생성때부터 index.tsx가 문제 생겼는데 다시 만들 때는 안생긴 거 보니 생성 때 뭐가 꼬인 것 같다.
npm install -D typescript ts-node @types/node
🔗 참고 사이트 : https://bny9164.tistory.com/46
mongodb://localhost:27017
)
import {Db, MongoClient} from 'mongodb'
export type MongoDB = Db
export type ConnectCallback = (db: MongoDB) => void
export const connectAndUseDB = async (
callback: ConnectCallback,
dbName: string,
mongoUrl: string = 'mongodb://127.0.0.1:27017'
) => {
let connection
try {
connection = await MongoClient.connect(mongoUrl) //몽고 db와 연결
const db: Db = connection.db(dbName) // 몽고 쉘의 'use dbName'에 해당
callback(db) //얻어진 db 객체를 callback 함수의 매개변수로 하여 호출
} catch (e) {
//타입스크립트의 타입 가드 구문 필요
if (e instanceof Error) {
console.log(e.message)
}
}
}
export * from './connectAndUseDB'
import * as M from '../mongodb'
const connectCB = (db: M.MongoDB) => {
console.log('db', db)
}
const connectTest = () => {
M.connectAndUseDB(connectCB, 'ch07')
}
connectTest()
이번주 내내 피곤하다.. 축축 처지는 기분 오늘 마지막에는 팀별로 해서 안되는 거 서로 공유해서 했다. 노션으로 정리한 것도 팀원 분 도와주고 오류현상들 같이 공유하고 공유받고 너무 좋았다. 어제 멘토링 신청한 것도 디스코드로 질문하고 답변받았는데 좋은말도 듣고 질문에 대한 상세 답변도 얻어서 좋았다. 질문을 먼저 보내서 정리해서 답변 적어주신 노션까지 ㅜㅜㅜ후기글 작성해야지!!!