const, let 리팩토링하고, 화살표 함수, Enhanced object literals, modules, export dafault
2022/09/10
지난시간에 babel을 사용하여 변수를 const와 let으로 지정하는 방법을 공부했다.
그렇다면 지난 작업인 투두리스트의 변수들을 어떻게 const와 let으로 깔끔하게 작업가능할까?
1.const와 let을 리팩토링하기!
기존 작업했던 파일에서 var 변수 확인하기!
-App.vue파일에서 var를 찾아 let이나 const(오버라이딩이 안됨~)로 바꿔주기
methods:{
addOneItem:function(todoItem){
var obj = {completed: false, item: todoItem};
localStorage.setItem(todoItem,JSON.stringify(obj));
this.todoItems.push(obj);
},
위의 코드에서 var obj를 const obj로 적어주면 된다!
-App.vue 파일에서 var를 찾아 let으로 바꿔주기
created: function(){
if(localStorage.length > 0){
for(var i =0; i <localStorage.length; i++){
if (localStorage.key(i) !== 'loglevel:webpack-dev-server') {
this.todoItems.push(JSON.parse(localStorage.getItem(localStorage.key(i))));
}
}
}
},
에서 for문에서 var = i 가 사용된걸 let i로 변경해주면 된다!
2. arrow function 화살표 함수
function 단어를 사용하지 않고 =>을 사용 (8글자가 아닌 2글자로! byte가 적어지는 효율을 높이자!)
-case1.Es5와 ES6는 어떻게 다를지?
**다른곳에서 아는 방식과 다른 표현식이 보여서 궁금했는데... ES6였구나...궁금증 매우해결!**
============ES5방식============
var add = function (a,b){
return a * b;
}
============ES6방식============
var add = (a,b) => {
return a * b;
}
===> 결과 값은 동일하다!
-case2.Es5와 ES6는 어떻게 다를지?
array를 사용하여, 변수의 각 값을 나열하기
============ES5방식============
var arr = ["apple", "banana", "orange"];
arr.forEach(function(value){
console.log(value);
});
===> apple, banana, orange가 각각 출력된다
============ES6방식============
var arr = ["apple", "banana", "orange"];
arr.forEach(value => console.log(value));
===> apple, banana, orange가 각각 출력된다
===> 결과 값은 동일하다!
-bable에서 확인해보기
3.향상된 객체 리터럴 enhanced object literals
-객체의 속성을 메소드로 쓴다면! :와 function을 생략할 수 있음!
var priceSearch = {
origin: 39900,
====== ES5 =====
lookup: function(){
console.log ("show origin")
}
===> lookup이라는 객체를 function을 사용하여 메소드를 만들때,
function을 써야함 ES6에서는 function을 생략할 수 있음!
====== ES6 =====
lookup: () {
console.log ("show origin")
}
===> function 생략가능!
};
priceSearch.lookup();
===> show origin이 나옴
-만든 todolist에 향샹된 객체 리터럴 사용하기
App.vue 파일에서 메소드의 메소드명:fucntion(){};에서 :function을 전부 제거해도 OK
methods:{
addOneItem:function(todoItem){
const obj = {completed: false, item: todoItem};
localStorage.setItem(todoItem,JSON.stringify(obj));
this.todoItems.push(obj);
},
===> 여기의 :function을 제외해도 가능
-script상의 모든 :function을 제거한다.
-다른 vue파일도 동일하게 제거한다!
export default {
data(){
return{
todoItems:[]
}
},
4.속성명 축약과 리팩토링
-콤포넌트 한 단어로 축약 가능! 모달의 객체이름과 콤포넌트의 이름이 동일하여 가능!
components:{
'TodoHeader' : TodoHeader,
'TodoInput' : TodoInput,
'TodoList' : TodoList,
'TodoFooter' : TodoFooter,
}
중복되는 'TodoHeader' 등을 삭제가능
components:{
TodoHeader,
TodoInput,
TodoList,
TodoFooter,
=> 속성명을 짧게 축약해도 동일하게 구동이 됨!
=>다른 vue파일에서도 콤포넌트 동일한 이름 합치기 가능!
5.modules - 자바스크립트를 모듈화하기!
-모듈: 한 단위, 필요한 기능을 모듈화하여서 필요한 곳에 반복하여 쓰도록
-ES5까지는 모듈화가 없어서 자바스크립트 모듈로더 라이브러리가 필요했음! 예를들면 AMD나 Commons JS와 같은
=>모듈 라이브러리가 없으니, 호출하지 않으면 동작 X
-import로 각 파일의 모듈을 가져오고,
import TodoHeader from './components/TodoHeader.vue'
import TodoInput from './components/TodoInput.vue'
import TodoList from './components/TodoList.vue'
import TodoFooter from './components/TodoFooter.vue'
-그 모듈을 콤포넌트로 사용! (해당 콤포넌트는 위에서 축약된 콤포넌트)
components:{
TodoHeader,
TodoInput,
TodoList,
TodoFooter,
}
6.export default 에서 default란? 한가지만 가져올수 있음!
-확실하게 원하는 기능만 export하기 위해서 default 사용
export default {
data(){
return{
todoItems:[]
}
},
'괴발개발' 카테고리의 다른 글
Vuex로 todolist를 mutation과 action으로 리팩토링하기! (0) | 2022.09.11 |
---|---|
Vuex로 어플의 복잡한 콤포넌트 관리하기 (Vuex설치, state, getter!) (0) | 2022.09.11 |
Vue.js에서 ES6사용하기! - babel, const와let (0) | 2022.09.08 |
Vue.js 투두리스트 - props와 event로 리팩토링하기 (0) | 2022.06.06 |
Vue.js 투두리스트 - 완료 상태로 전환하기, 데이터 삭제하기 (0) | 2022.06.05 |