Vue/Vue 2023
Vue 001 설치
salalsksjwnn
2023. 1. 27. 13:44
728x90
설치
- 폴더 생성, 폴더에서 터미널 열기
- 설치가 됐는지 확인
vue --version
//@vue/cli 5.0.8
//설치되어있네??
- 설치 명령
npm install -g vue
//-g 는 글로벌로 설치한다는 것을 의미
- vue cli 설치
npm install -g @vue/cli
//cli?
//vue 프로젝트를 빠르게 생성할 수 있게 도와준다.
//다양한 설정파일, 폴더 구성을 위해 만들어야하는데 일일히 만들지 않게 도와줌
//누가 만들더라도 기본적으로 같은 form을 사용할 수 있음
//create react app??????
- 뭐만 설치할라하면 Cannot read properties of null (reading 'pickAlgorithm') 이녀석은 계속 뜬다
npm cache clear --force
//이거 해주고 다시 설치하면 된다.
- 유용한 확장 프로그램 하나만 설치하면 된다고 한다? Vetur
프로젝트 생성 방법01(Default)
반드시 프로젝트 설치할 폴더안에서 할 것
- 설치( vue create (프로젝트 이름) )
vue create project01
- 어떤 방식으로 설치할 것인지 제시된다.(키보드를 이용해서 선택한다)
- 순서대로
- 최신 버젼인 Vue3으로 설치할건데 기본 옵션만 갖는 프로젝트를 설치할 것
- Vue2 기본옵션만 갖는 프로젝트 설치(아직Vue3이 나온지 얼마 안돼서 Vue2로 개발된 오픈소스들이 많아서)
- 내가 직접 옵션을 선택해서 설치하기
- Dafault Vue3 을 선택해서 설치한다. yarn을하든 npm하든 상관 없음
- 정상적으로 설치됐을 시
짜잔 Vue Cli를 사용해 설치하니 알아서 나온다
(react create app 사용한 입장에서 익숙하다)
- 프로젝트 폴더로 이동하기
cd project01
- 프로젝트 실행
yarn serve
//npm으로 설치했으면
//npm run serve
//이렇게 나옴
- 실행
구성
- package.json
- 프로젝트에 대한 정보가 다 들어가 있다.
{
"name": "project01",
"version": "0.1.0",
"private": true, //내가 만든 프로젝트가 만약에 등록이 된다면 아무나 접근하게 할지 안할지 정하는 곳
// scripts 아까 뷰를 실행시킬때 serve를 했는데 아래 보이는 serve이다. 저 명령어가 실행되는 것.
//등록해서 사용할 수 있다. 단축키같은 명령어 같은 느낌
"scripts": {
"serve": "vue-cli-service serve",
"build": "vue-cli-service build",
"lint": "vue-cli-service lint"
},
// dependencies 뷰 프로젝트를 만들면서 많은 모듈을 설치하는데
// 운영환경으로 배포할때 가져갈 모듈들이 보이게 됨
"dependencies": {
"core-js": "^3.8.3",
"vue": "^3.2.13"
},
// devDependencies 개발하는 순간에 사용해야하는 순간에 가져갈 모듈들이 보임
// 근데 모듈이 별로 없다?
// 아래 있는 모듈들은 누가 만들어 놓은건데 그곳에 다른 모듈들이 포함되어 있다.
// package0lock.json에 가면 볼 수 있다.
"devDependencies": {
"@babel/core": "^7.12.16",
"@babel/eslint-parser": "^7.12.16",
"@vue/cli-plugin-babel": "~5.0.0",
"@vue/cli-plugin-eslint": "~5.0.0",
"@vue/cli-service": "~5.0.0",
"eslint": "^7.32.0",
"eslint-plugin-vue": "^8.0.3"
},
//
"eslintConfig": {
"root": true,
"env": {
"node": true
},
"extends": [
"plugin:vue/vue3-essential",
"eslint:recommended"
],
"parserOptions": {
"parser": "@babel/eslint-parser"
},
"rules": {}
},
"browserslist": [
"> 1%", // 전세계 1%이상 사용하고 있는 브라우져만 지원
"last 2 versions", // 최근 두개의 버젼만 지원한다. 안정적으로
"not dead", //
"not ie 11" // 고인은 지원 안한다.
]
}
- main.js
- serve를 한 순간 제일 먼저 실행되는 파일 (리액트의 index.js라고 보면 되는건가)
import { createApp } from 'vue'
import App from './App.vue'
createApp(App).mount('#app')
//App.vue를 가지고 createApp을 하겠다 라는 의미
// mount를 하면서 #app을 호출한다는건 index.html에 있는 id가 app을 찾아서
// 그 안에 App.vue를 마운트 시키겠다는 의미
//index.html
.
.
.
<div id="app"></div>
<!-- built files will be auto injected -->
</body>
</html>
- App.vue
<template>
<img alt="Vue logo" src="./assets/logo.png">
<HelloWorld msg="Welcome to Your Vue.js App"/>
</template>
<script>
import HelloWorld from './components/HelloWorld.vue' //이게 위에 template 있는곳으로 불려감
export default {
name: 'App',
components: {
HelloWorld
}
}
</script>
<style>
#app {
font-family: Avenir, Helvetica, Arial, sans-serif;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
text-align: center;
color: #2c3e50;
margin-top: 60px;
}
</style>
프로젝트 생성 방법02(Manually)
- 설치
vue create project
- 세번째 선택지 Manually를 선택하면 아래와 같이 나온다
- 프로젝트에 필요한 친구들을 선택하면되는데
- 엔터키를 눌러서 선택하는게 아니라 스페이스를 눌러서 선택해야한다.
- 정보
- Babel
최신 문법으로 자바스크립트를 짤건데 구 브라우저에서는 동작하지 않을 수도 있다.
Babel이 구 브라우저용으로 컴파일을 해 준다. - PWA
모바일처럼 웹을 만들어주는 기능 - Router
vue에서 메뉴를 클릭했을 때 화면을 이동할 수 있게 해주는 것 - Vuex
모든 컴포넌트내에서 저장소를 만들어서 데이터를 저장하고 상태관리 할 수 있게 해주는 것 - Linter/Formatter
js문법 체크해주고, 팀내에서 모두 동일한 규칙을 가질 수 있게 해주는 모듈
코딩컨벤션 - Unit Testing
단위 테스트 하게 해주는거 - E2E Testing
전체 테스트 하게 해줌
- Babel
나는 Babel, Router, Vuex, Linter/Formatter만 사용할 것
- 선택 했으면 Enter눌러준다.
- 버전은 최신 3.x로 선택
- 라우터에 히스토리모드 사용? Y
- EsLint
- js문법 체크해줌 일단은 standard로 간다.
- 설명
- Airbnb config - Airbnb팀에서 만든 코딩컨벤션을 사용한다.
- Standard config - js에서 기본적으로 가지고 있는 코딩 컨벤션 사용
- Prettier - Prettier포메터를 사용한다.
- Lint는 저장시점에 하는걸로 선택
- Babel이나 Eslint를 별도로 관리할래? package.json에서 관리할래?
- 방금 결정한 것들을 즐겨찾기에 추가하쉴?
- 즐찾 이름까지 설정해주면 프로젝트가 만들어진다.
- src안에 더 많은 폴더들이 생긴다
- Router도 설치했으니 실행시에 사용예가 나온다 Home/About
구성(추가)
- package.json에 vue-router와 vuex가 추가되었다.
- main.js에는 router와 store가 임포드 되었다.
- App.js
<template>
<nav>
<router-link to="/">Home</router-link> |
<router-link to="/about">About</router-link>
</nav> //라우터로 추가된 Home과 About을 볼 수 있다.
<router-view/> //라우터에서 선택된 페이지가 표현되는 곳
</template>
...
아 빨간거 열받아
- router/index.js
import { createRouter, createWebHistory } from 'vue-router'
import HomeView from '../views/HomeView.vue'
const routes = [
{ //path 가 / 면 HomeView컴포넌트를 가져와라
path: '/',
name: 'home',
component: HomeView
},
{ //path가 /about이면 /views/AboutView.vue컴포넌트를 가져와라
path: '/about',
name: 'about',
// route level code-splitting
// this generates a separate chunk (about.[hash].js) for this route
// which is lazy-loaded when the route is visited.
component: () => import(/* webpackChunkName: "about" */ '../views/AboutView.vue')
}
]
const router = createRouter({
history: createWebHistory(process.env.BASE_URL),
routes
})
export default router
라우터를 사용하면서 spa에 대한 이해가 깊어질 수 있을 것이다!
내일은 라우터에 대해 더 깊이 공부해보자
vue에서 @는 src 폴더를 찾아가라는 의미이다.
728x90