728x90

이거 완전 꿀팁입니다! 마비노기 모바일 플레이하시는 분들, Mabinogi Helper 꼭 사용해 보세요!

혹시 마비노기 모바일 플레이하시면서 매일, 매주 해야 할 것들을 자주 잊으시거나, 복잡한 성장 목표 때문에 무엇을 먼저 해야 할지 헷갈리시는 분들 계신가요? 저도 그랬었는데, 얼마 전에 정말 유용한 사이트를 하나 발견했습니다. 바로 Mabinogi Helper 라는 곳인데, 사용해 보니 정말 편리했습니다!

 

https://mabinogihelper.org

🎮 어떤 점이 좋았는지 알려드리겠습니다!

✨ 나만의 맞춤형 Todo 리스트 (할 일 목록)

매일 해야 하는 퀘스트나 던전, 주간 숙제 같은 것을 일일이 기억하기 어려우셨을 텐데요. Mabinogi Helper에서는 캐릭터별로 해야 할 일들을 정리해서 보여줍니다! 진행 상황도 체크할 수 있고, 원하시는 할 일을 추가하여 관리하실 수도 있습니다. 게다가 매일 자동으로 초기화되어서 정말 편리합니다.

메인 화면에서 오늘, 이번 주에 무엇을 해야 하는지 쉽게 확인할 수 있고, 완료되면 체크하거나 횟수도 수정할 수 있습니다. 순서도 원하는 대로 변경 가능합니다! 새로운 할 일을 추가하는 것도 매우 간단합니다. 제목을 쓰고, 몇 번 해야 하는지, 언제 초기화할 것인지, 어떤 캐릭터로 할 것인지까지 설정할 수 있습니다.

🛒 놓치지 않는 ToBuy 리스트 (구매 목록)

期間限定 아이템이나 캐시샵에 새로 나온 것을 깜빡하고 놓치는 경우가 많으셨을 텐데요. 이제 Mabinogi Helper에 사고 싶은 아이템을 적어두고 관리하시면 됩니다! 실제로 구매했는지 안 했는지 체크도 할 수 있고, 아이템 정보도 바로 확인할 수 있습니다. 심지어 그 아이템을 구매하려면 무엇이 필요한지, 현재 얼마나 가지고 있는지까지 한눈에 보여주고, 부족한 재료는 바로 제작 화면으로 이동할 수도 있습니다! 정말 유용하지 않나요?

구매할 아이템을 선택하여 정보를 확인하신 후, '구매목록만 보기'에서 실제로 구매했는지 체크하시면 됩니다! 필요한 재료와 현재 보유한 재료를 비교해서 보여주고, 부족하면 바로 제작하러 갈 수 있도록 링크까지 제공합니다.

⚔️ 다이스 진행률 관리 (Equip Achievement)

다이스 장비 레벨을 올리려면 똑같은 장비를 계속 모아야 하는데, 얼마나 모았는지, 최고 수치까지 얼마나 남았는지 확인하기 어려우셨을 겁니다. 하지만 여기서는 부위별, 레벨별로 획득한 최대 수치를 기록해서 보여줍니다! 이제 얼마나 더 파밍해야 할지 쉽게 알 수 있습니다.

획득한 장비의 최고 수치를 입력해 두면, 최고치(MAX) 달성 여부도 알려주므로 다음 목표를 설정하는 데 도움이 됩니다.

✨ 유용한 추가 기능들

캐릭터 관리: 여러 개의 캐릭터를 육성하시는 분들이 많으실 텐데요. Mabinogi Helper에서는 모든 캐릭터 정보를 등록하고 관리할 수 있습니다. 캐릭터를 추가하거나 수정하는 것도 매우 간단합니다.

퀘스트 아이템 위치 지도: 퀘스트를 진행하다 보면 특정 아이템을 어디에서 구해야 하는지 막막할 때가 있습니다. 예를 들어 임프 구슬이나 새 둥지 같은 것 말입니다! 하지만 여기 유틸 탭에 있는 퀘스트 지도를 보면 그러한 주요 아이템 위치를 정확하게 알려줍니다! 지도 확대/축소도 가능하고, 다른 마을 지도도 볼 수 있어서 정말 편리합니다.

아이템 제작 재료 계산기: 복잡한 제작 레시피 때문에 어려움을 느끼셨다면, Mabinogi Helper에 있는 제작 재료 계산기를 이용해 보세요! 만들고 싶은 아이템을 검색하면 1차 재료부터 최종 재료까지 모두 보여주고, 현재 얼마나 가지고 있는지 체크까지 할 수 있습니다!

마비노기 모바일 플레이하시는 분이라면 Mabinogi Helper를 꼭 한번 이용해 보시기를 추천드립니다! 에린에서의 생활이 훨씬 더 편하고 즐거워질 것입니다!

 

https://mabinogihelper.org

728x90

열거형 : 정수 숫자 형식의 상수 집합에 멤버 이름을 지정할 수 있다. 

enum Menu
{
	Info, // 0
	Status // 1
}

 

열거된 멤버들은 첫 멤버부터 0으로 시작하는 정수를 상수로 가지고 다음 멤버들은 1씩 증가하는 정수를 상수로 가진다.

 

enum Menu
{
	Candy=1,
    	Chocolate=3,
    	Snack // 4
}

. 상수를 명시적으로 지정해 줄 수도 있고 지정하지 않은 멤버는 이전 멤버의 +1 값을 가진다.

 

열거형의 사용

Menu candy = Menu.Candy;
var choco = (Menu)3;

Console.WriteLine(candy); // Candy 
Console.WriteLine((int)Candy); // 1
Console.WriteLine(choco); // Chocolate
Console.WriteLIne((int)choco); // 3
Console.WriteLine((Menu)10); // 10

 

Enum.IsDefined : 멤버 존재 여부 확인 

IsDefined(Type enumType, object value);



Enum.IsDefined(typeof(Menu),1); // true
Enum.IsDefined(typeof(Menu),2); // false

 

'C#' 카테고리의 다른 글

C# 기초 문법  (0) 2024.04.11
728x90

함수 형식

returnType FunctionName ( parameterType parameter1, parameterType parameter2 = "default" )
{
  print(parameter1);
  print(parameter2);
  print("FunctionName 첫글자는 대문자");
  print("디폴트 값을 가지는 파라메터는 맨 뒤에 위치한다.");
  
  return data;
}

 

 

접근제한자 

 

[ private, public, protected ] 

default : private 

 

public :  모든 레벨에서 접근 가능 

private : 동일한 Class에서만 접근 가능

protected : 동일 Class 또는 상속받는 Class에서만 접근 가능 

 

반복문 

 

int i;
int j = 3;
for (i = 0, Console.WriteLine($"Start: i={i}, j={j}"); i < j; i++, j--, Console.WriteLine($"Step: i={i}, j={j}"))
{
    //...
}
// Output:
// Start: i=0, j=3
// Step: i=1, j=2
// Step: i=2, j=1

initializer에서 loop 변수를 선언하지 않는 경우 initializer 섹션에서 0개 이상의 식을 사용할 수 있다. 


int j = 3;
for (int i = 0; i < j; i++, j--, Console.WriteLine($"Step: i={i}, j={j}"))
{
    //...
}
// Output:
// Step: i=1, j=2
// Step: i=2, j=1


i와 j 두가지 변수 모두 값을 변경할 수 있다.

 

foreach

int[,] numbers = {{1, 2, 3, 4, 5},{0, 1, 2, 3, 4}};
foreach (int number in numbers)
{
    Console.Write(number+" ");
}
// Output:
// 1 2 3 4 5 0 1 2 3 4

 

 

컬렉션 

 

ArrayList

ArrayList 콜렉션은 non generic collection으로 타입을 정해두지 않고 여러 타입의 데이터를 동시에 담을 수 있다.

ArrayList arrayList = new ArrayList();
arrayList.Add("stringValue");
arrayList.Add(1);
arrayList.Add(false);

print(arrayList[0]);

// Output:
// stringValue

 

 

List<T> 

List<T> 콜렉션은 타입을 지정하여 동일한 타입의 데이터들을 담을 수 있다. 

 

ArrayList보다는 List<T> 클래스를 사용할 것을 권장하고 있다. 

 

 

HashTable / Dictionary<K, V>

Key Value 형식으로 데이터를 저장하며 Key와 Value의 타입은 동일하지 않을 수 있다.

HashTable hashTable = new HashTable();
hashTable.Add("일",1);
hashTable.Add(2,"이");

print(hashTable["일"]);
print(hashTable[2]);

 

Dictionary도 HashTable과 같지만 제네릭 지정하여 사용하기 때문에 List<T>와 마찬가지로 성능이 더 좋다.

 

Queue<T> / Stack<T>

선입선출 FIFO / 후입선출 LIFO

Queue<int> q = new Queue<int>();
q.Enqueue(1);
q.Enqueue(2);

for (; q.Count != 0; q.Dequeue())
{
    Console.WriteLine(q.Peek());
}
// Output:
// 1 2

Stack<int> st = new Stack<int>();
st.Push(1);
st.Push(2);

for(; st.Count != 0;)
{
    Console.WriteLine(st.Pop());
 }
 // Output:
 // 2 1

 

 

namespace

namespace 키워드를 사용하여 관련 파일 혹은 다른 namespace 등을 포함하는 범위를 선언할 수 있다. 

 

선언한 namespace는 using 키워드를 통해 사용할 수 있고

namespace에 alias 를 부여하여 사용할 수 있다.

 

namespace Utils
{
    struct UtilStruct { }

    enum UtilEnum { a, b }

    delegate void UtilDelegate(int i);

    namespace Calendar
    {
        static class MicroTimer { }

        interface Timer { }
    }
}

global using <fully-qualified-Utils>;
using Alias = Utils.Calendar;

 

global using 키워드는 프로젝트내의 모든 파일에서 using 이 적용된다는 것을 의미한다.

'C#' 카테고리의 다른 글

C# 열거형  (0) 2024.04.16
728x90

Spring Initializer에서 Spring Project를 생성한다.

https://start.spring.io/

Generate버튼을 클릭하면 프로젝트를 다운로드 받는다. 

 

다운로드 받은 프로젝트는압축해제하여 워크스페이스에 옮기고 IntelliJ를 실행한다.

 

Open

demo 폴더의 pom.xml을 선택

 

Open as project 

Spring 구조의 기본 프로젝트가 생성되었다.

외부 라이브러리에 initializer에서 추가한 Spring web, dev tools 가 추가되었다. 

pom.xml에도 dependency에 추가된 것을 확인할 수 있다. 

 

maven의 spring-boot:run을 실행하면 spring에 내장된 톰캣을 통해 서버를 실행시킬 수 있다. 

*터미널에서 mvn spring-boot:run 명령어를 사용해도 된다. 

728x90

개발한 웹 애플리케이션을  Apache Tomcat을 이용해 배포하고 서버를 운영하는 환경을 구축하는 방법 

 

-Application Packaging

 

mvn clean compile package

gradlew build

명령어 혹은 task 도구를 이용해 패키징한다. 

 

package를 완료하면 war 파일이 모듈의 target 폴더에 생성된다. 

 

-startup.bat 사용하기 

(windows는 배치파일, linux기반 os는 쉘스크립트)

tomcat-webapps폴더에 패키징한 war파일을 복사하여 옮겨준다.

tomcat\bin\startup.bat 파일을 실행하면 webapps의 war 파일들 압축해제하여 실행시켜준다. 

 

tomcat\webapps 폴더에 war파일이 압축해제되어 maven_begin 폴더가 생성되었다.

서버를 종료할 때는shutdown  배치파일을 실행하면된다. 

  

-Tomcat Manager 사용하기 

 

tomcat\conf\tomcat-users.xml 파일에 관리자 계정 권한 부여하기 

<tomcat-users>
  <role rolename="manager-gui"/>
  <role rolename="manager-script"/>
  <role rolename="manager-jmx"/>
  <role rolename="manager-status"/>

  <user username="admin" password="admin" roles="manager-gui,manager-script,manager-jmx,manager-status"/>
</tomcat-users>

*터미널에서 code 명령어를 사용하면 파일을 vscode로 편집할 수 있다.

 

startup.bat로 서버를 실행하고 

localhost/manager로 접속하면 

로그인할 수 있는 창이 뜨는데 여기에 아까 만들어주었던 어드민 계정으로 로그인한다.

manager에서는 톰캣이 실행중인 웹 애플리케이션들을 관리할 수 있는 gui를 제공하공하고 있다.  

 

 배치할 war파일에서 파일을 업로드하여 배치할수 있다. 

 

파일을 선택학고 배치를 클릭하면 

 maven_begin 애플리케이션이 배치되었다 .

728x90

Eclipse 와 IntelliJ 의 차이

 

Eclipse IntelliJ
Workspace Project
Project Module
Facet
Library
JRE SDK
Classpath variable Path variable

 

 

 

IntelliJ 다운로드 

https://www.jetbrains.com/ko-kr/idea/download/?section=windows

 

최고의 Java 및 Kotlin IDE인 IntelliJ IDEA를 다운로드하세요

 

www.jetbrains.com

Community Edition을 다운로드하면 제한적으로 무료로 사용할수 있다.

 

Community Edition 사용시 필요한 플러그인

- Smart Tomcat 

 

 

Maven을 이용한 Web Project 생성

-Maven Archetype(Project Template):maven-archetype-webapp

 

 

 

IntelliJ IDEA 설정

 

프로젝트에 관한 설 

 

++파일 검색

 

Shift키 두번

 

 

 

maven으로 web project를 생성하면 maven 도구를 이용해 프로젝트 작업을 수행할 수 있다.

 

IntelliJ의 터미널을 이용해 프로젝트의 작업을 수행할 수도 있다. 

 

Windows의 터미널을 가져와 사용하기 때문에 터미널이 작동하지 않는다면 다른 터미널 프로그램을 사용하면 된다.  

 

maven 명령어를 실행할 위치는 pom.xml 파일이 존재해야한다.

maven을 설치하고 환경변수를 제대로 설정해줬다면 mvn 명령어를 통해 작업을 수행할 수 있다.   

 

아래 화살표를 클릭하면 사용할 터미널을 선택하거나 터미널을 설정할 수 있다. 

Git Bash 터미널이 있기 때문에 바로 Git 명령어를 입력할 수도 있다.    

 

 

Web Project를 Tomcat Server에 실행하려면 

 메뉴바의 실행버튼 옆에 톰캣을 클릭해 Edit Configuration을 클릭하여 설정하고 실행하면 된다.     

 

실행버튼을 클릭하면

 서버를 실행하고 웹 브라우저에서 확인할 수 있다.

 

JSP 프로젝트 

pom.xml 파일에 servlet dependency 추가  

 

main의 java 폴더에 servlet 클래스 생성 

HttpServlet 을 상속한 HelloServlet 클래스에 필요한 메소드를 구현해준다. 

 

web.xml파일에서 

servlet 클래스를 등록하고 맵핑해줘야 한다.

 

<servlet> 태그 안에 name과 그 name에 해당하는 class의 주소를 등록하고 

<servlet-mapping> 태그 안에 servlet name에 url pattern을 등록해준다. 

web.xml 파일에 mapping하는 방법 이외에 어노테이션을 이용하는 방법도 있다. 

    

@WebServlet 어노테이션과 그 안에 url pattern을 입력하면 mapping을 간단하게 처리할 수 있다. 

 

JSP 파일 생성하기 

webapp폴더 안에 .jsp 파일을 생성한다. 

index.jsp 파일은 기본으로 생성된다.  

내용을 입력하고 /index.jsp url로 확인할 수 있다. 

728x90

Vue.js에서 회원가입 폼을 만들어 실습하면서 form을 통해 데이터를 전송하는 법을 알아보자

 

<template>
    <form action="" @submit.prevent="submitForm">
        <div>
            <label for="userId">아이디</label>
            <input id="userId" type="text" v-model="username">
        </div>
        <div>
            <label for="password">패스워드</label>
            <input id="password" type="password" v-model="password"> 
        </div>
        <button type="submit">회원가입</button>
    </form>
</template>

form을 만들고 input:text, label로 아이디와 패스워드를 입력 받을 폼을 만든다. 

 

submit 버튼은 디폴트로 submit 이벤트가 발생하고 페이지가 새로고침되기 때문에 새로고침을 막아야한다. 

 

새로고침을 막기 위해서 @submit 이벤트 핸들러에 .prevent를 붙여 preventDefault를 한다. 

그리고 submit 이벤트가 발생하면 폼의 input을 전송할 함수인 submitForm을 등록한다. 

 

            <input id="userId" type="text" v-model="username">

 input 태그에 v-model이라는 속성이 붙어있다. 

v-model은 input 태그의 value를 바인딩 해주는 디렉티브이다. 

만약 v-model을 사용하지 않는다면

input 태그에 input 이벤트가 발생할 때 input 태그의 value값을 가져와 v-bind: 바인딩해주는 작업을 해야한다. 

<input
  :username="text"
  @input="event => text = event.target.value">

 

data(){
	return {
    	username: '',
        password: '',
    }
}

 

그리고 data에 username과 password를 정의해준다. 

 

다음으로 비밀번호를 표시할지 password 타입으로 **처리할지 선택할 수 있는 체크박스를 만들어보자 

 <input type="checkbox" id="show" v-model="checked" @change="showPassword"> 
 
 data(){
 	return {
    	username: '',
        password: '',
        checked: '',
    }
 }
 methods:{
            showPassword(){
                if(this.checked){
                    document.querySelector('#password').type='text';
                }else{
                    document.querySelector('#password').type = 'password';
                }
            }
        }

template의 password input 태그 아래 checkbox를 추가하고 

change이벤트 핸들러에 showPassword 함수를 등록한다. 

showPassword 함수는 v-model로 받은 checked의 값에 따라 #password 태그의 type을 text와 password로 바꿔준다. 

여기서 this.checked는 data의 checked를 의미한다. 

체크박스가 해제 되었을 땐 password 타입

checked 상태에선 text 타입인 것을 확인할 수 있다. 

 

다중 checkbox, radio, select 를 사용한 input 태그를 작성

<template>
    <form action="" @submit.prevent="submitForm">
        <div>
            <label for="userId">아이디</label>
            <input id="userId" type="text" v-model="username">
        </div>
        <div>
            <label for="password">패스워드</label>
            <input id="password" type="password" v-model="password">
            <input type="checkbox" id="show" v-model="checked" @change="showPassword"> 
        </div>
        <div>
            <h3>성별</h3>
            <input type="radio" name="gender" id="M" value="남자" v-model="picked">
            <label for="M">M</label>
            <input type="radio" name="gender" id="F" value="여자" v-model="picked">
            <label for="F">M</label>
        </div>
        <div>
            <h3>기술스택</h3>
            <input type="checkbox" id="springboot" value="springboot" v-model="checkedNames">
            <label for="springboot">SpringBoot</label>
            <input type="checkbox" id="jpa" value="jpa" v-model="checkedNames">
            <label for="jpa">JPA</label>
            <input type="checkbox" id="mybatis" value="mybatis" v-model="checkedNames">
            <label for="mybatis">MyBatis</label>
            <input type="checkbox" id="vue" value="vue" v-model="checkedNames">
            <label for="vue">Vue</label>
            <input type="checkbox" id="react" value="react" v-model="checkedNames">
            <label for="react">React</label>
        </div>
        <div>
            <h3>주소</h3>
            <select name="address" id="address" v-model="selected">
                <option disabled value="">선택</option>
                <option value="서초구">서초구</option>
                <option value="관악구">관악구</option>
            </select>
        </div><br>
        <button type="submit">회원가입</button>
    </form>
</template>

 

input data를 전송하기 위한 submitForm 함수 작성 

 submitForm(){
                axios.post('https://jsonplaceholder.typicode.com/users/',{
                    username:this.username,
                    password:this.password,
                    checked:this.checked,
                    checkedNames:this.checkedNames,
                    picked:this.picked,
                    selected:this.selected
                }).then(response=>{
                    console.log(response);
                });
            },

 

axios는 비동기 요청방식 api이다. 

데이터를 서버로 전송하고 응답을 받아 처리할 수 있다. 

 

axios를 사용하기 위해 axios를 다운로드

https://github.com/axios/axios

 

GitHub - axios/axios: Promise based HTTP client for the browser and node.js

Promise based HTTP client for the browser and node.js - GitHub - axios/axios: Promise based HTTP client for the browser and node.js

github.com

 

사이트의 installing package manager에서 본인이 사용하는 패키지 매니저에 따라 명령어를 카피하고

프로젝트 디렉터리의 터미널에서 명령어를 실행한다. 

 

정상적으로 다운로드되면 package.json의 dependencies에 axios가 추가된다. 

import axios from 'axios'

App.vue에서 axios를 사용하기 위해 import 해준다. 

 

axios.post('url','data')으로 post 요청을 한다. 

 

이때 가상 서버 역할을 해줄 api가 필요하다면 

https://jsonplaceholder.typicode.com/users/를 이용할 수 있다. 

 

 data() {
            return {
                username: '',
                password: '',
                checked: '',
                checkedNames: [],
                picked: '',
                selected: ''
            }
        },
        
        
        
 axios.post('https://jsonplaceholder.typicode.com/users/',{
                    username:this.username,
                    password:this.password,
                    checked:this.checked,
                    checkedNames:this.checkedNames,
                    picked:this.picked,
                    selected:this.selected
                }).then(response=>{
                    console.log(response);
                });

 

 

data는 {객체형식으로 넘겨주면 된다.}

다중 checkbox는 배열로 넘겨주었다. 

input태그에 값을 입력하고 회원가입을 클릭하면 

users/ 요청이 날아가고 

payload를 클릭하면 요청할 때 보낸 data를 확인할 수 있다. 

 

.then은 서버로부터 응답을 받은 후의 로직을 작성할 수 있다. 

console.log(response) 에 의해 

response가 console창에 찍혔다. 

 

https://ko.vuejs.org/guide/essentials/forms.html

 

Form 입력 바인딩 | Vue.js

 

ko.vuejs.org

 

'Vue.js' 카테고리의 다른 글

Vue.js 프로젝트 생성하기  (0) 2023.11.29
Vue.js 기초 문법  (2) 2023.11.28
Vue.js Intro  (0) 2023.11.28
728x90

#vue-cli 

 

폴더구조, 라이브러리, build 등 기본 vue 개발 환경을 설정해주는 cli 도구 

 

#vue-cli 설치하기 

npm install -g @vue/cli

 

#vue 프로젝트 생성하기 

vue create projectName

vue create 명령어로 프로젝트 생성

 

* vs code terminal에서 실행되지 않는다면 windows powershell 문제로 

 

preset을 선택하면 프로젝트를 생성한다.

vue3 기본 환경으로 프로젝트를 생성하고 싶다면 vue3를 

vue2 기본 환경으로 프로젝트를 생성하고 싶다면 vue2를 

직접 라이브러리, build 등의 환경을 수동으로 설정하고 싶다면 manually를 선택하면 된다.

프로젝트가 생성되면 cd projectName, npm run serve로 프로젝트를 시작하라고 한다. 

프로젝트 디렉터리로 이동해서 서버를 실행하고 8080 포트로 접속하면 아래와 같은 화면이 나온다. 

 

**서버를 종료할 때는 ctrl+c 

 

vue-cli 로 생성된 프로젝트로 돌아가면 

workspace 안에 vue3-cli 프로젝트가 생성되어있다. 

 

먼저 package.json에는 프로젝트 정보, 프로젝트에 설치된 라이브러리 등이 있고 

package.json에 설정된 라이브러리는 node_module에 설치된 것을 확인할 수 있다. 

여기서 dependencies와 devDependencies 두가지가 있는데 

dependencies는 배포용, dev는 개발용이다. 

개발용 dependencies는 설치할 때 npm install library -D 로 설치하면 된다. 

그리고 scripts 의 serve, build, lint는 custom cli 명령어이다. 

 

 

public의 index.html 파일을 확인하면 

 

#app div가 있다. 

이 태그 안에 createApp 으로 만들어진 app 컴포넌트가 들어갈 것을 예상할 수 있다. 

그런데 index.html 파일에는 vue cdn, createApp을 하는 script등이 보이지 않는다. 

대신 주석을 보면 빌드된 파일을 자동으로 주입된다는 것을 볼 수 있다. 

 

localhost:8080 에서 개발자도구를 확인해본다. 

localhost는 index.html document이다. 

head에 app.js를 가져오는 태그가 자동으로 생성되었고 좌측에 app.js를 다운로드하였다. 

app.js는 main.js를 가져오는것을 알 수 있다. 

 

프로젝트의 main.js

package의 dependencies의 vue라이브러리의 vue로부터 createApp을 가져오고 

App.vue에서 App을 가져와 createApp(App)을 #app에 마운트하고 있다. 

 

App.vue파일은 

app(root)컴포넌트를 정의하는 파일이다. 

component패키지에 정의된 Helloworld.vue 컴포넌트를 import 하여 root 컴포넌트의 자식 컴포넌트로 정의하고 있다. 

이처럼 하위 컴포넌트들은 component 패키지에 분리하여 정의하고 root 컴포넌트를 main.js에서 import 함으로써 

main에는 큰 관심사만 모듈로서 정의하고 하위 컴포넌트들을 분리하여 유지보수와 확장성에 유리한 구조가 되었다. 

 

#Vue SFC (Single File Component)

 

싱글 파일 컴포넌트는 vue 컴포넌트의 템플릿, 스크립트, 스타일을 하나의 파일로 묶어낸 .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'

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>

 

앞서 보았던 App.vue도 싱글 파일 컴포넌트이고 <template>, <script>, <style>로 구성된 것을 확인할 수 있다. 

 

이전 html 파일에서는 카멜케이스 사용에 관한 문제가 있었는데 

SFC 에서는 파스칼 케이스를 사용하는 것을 알 수 있다. 

물론, 카멜케이스로도 사용할 수 있지만 통일성을 위해 파스칼 케이스로 통일해주도록 한다. 

 

** vue vscode snippet 플러그인 shortcut

vbc(v-base with css) + tab : sfc 기본 구조 template, script, style 생성

vdata + tab : data() {return {}} 생성

 

 

 

https://cli.vuejs.org/

 

Vue CLI

 

cli.vuejs.org

 

'Vue.js' 카테고리의 다른 글

Vue.js form submit  (0) 2023.11.30
Vue.js 기초 문법  (2) 2023.11.28
Vue.js Intro  (0) 2023.11.28

+ Recent posts