Gulp is a task runner.
Webpack is an asset bundler.
Gulp operates on a more general level.
Webpack cares just about making those bundles.
js 및 다양한 asset module들을 bundling하여 미리 정의해놓은 한 개 혹은 그 이상의 파일로 출력할 수 있습니다
다양한 플러그인들을 지원하여 모던 프론트엔드 개발 환경을 용이하게 해줍니다.
(구)프로젝트를 Webpack을 사용하도록 바꿔기보기
1. git clone
https://github.com/paulsoh/fastcampus_webpack_tutorial.git
2. git checkout Starting-Point
Keywords: babel-loader, css-loader, style-loader
Keywords: url-loader, file-loader, data url
import _ from 'lodash';
var users = [
{ 'user': 'fred', 'age': 48 },
{ 'user': 'barney', 'age': 36 },
{ 'user': 'fred', 'age': 40 },
{ 'user': 'barney', 'age': 34 }
];
_.sortBy(users, [function(o) { return o.user; }]);
// => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]
_.sortBy(users, ['user', 'age']);
// => objects for [['barney', 34], ['barney', 36], ['fred', 40], ['fred', 48]]_.sortBy(collection, [iteratees=[_.identity]])ES7: async, await
1. Promise를 이용하여 Async 기능을 만드는 법
2. Promise API를 사용하는 법
const functionOne = (a, b) => {
return a + b;
}
const functionTwo = (a, b) => {
let c;
// Async action!
setTimeout(() => {
c = a + b;
}, 1000)
return c;
}
결과를 당장 알 수 없는 경우, Promise를 Return
const asyncFunction = () => {
return new Promise((resolve /* 성공시 실행할 함수 */, reject/* 실패시 성공할 함수*/) => {
// 비동기 코드 수행부
if (성공) resolve();
else reject();
})
}결과를 당장 알 수 없는 경우, Promise를 Return
const functionTwo = (a, b) => {
let c;
return new Promise((resolve, reject) => {
// Async action!
setTimeout(() => {
c = a + b;
if (c) resolve(c);
else reject('error');
}, 1000)
})
}
.then(), .catch()
const functionTwo = (a, b) => {
let c;
return new Promise((resolve, reject) => {
// Async action!
setTimeout(() => {
c = a + b;
if (c) resolve(c);
else reject('error');
}, 1000)
})
}
functionTwo(1, 2)
.then(/* resolve 된 값이 들어와서 호출되는 함수 */)
.catch(/* reject 된 값이 들어와서 호출되는 함수 */).then(), .catch()
const functionTwo = (a, b) => {
let c;
return new Promise((resolve, reject) => {
// Async action!
setTimeout(() => {
c = a + b;
if (c) resolve(c);
else reject('error');
}, 1000)
})
}
functionTwo(1, 2)
.then((resolvedValue) => {
console.log('The answer is ' + resolvedValue);
})
.catch(/* reject 된 값이 들어와서 호출되는 함수 */)Promise API를 사용할 수 있는 좋은 기회
fetch(url /* string */, options /* Object */)
.then((response) => {
// 요청 성공시 Response Object로 resolve!
})
.catch((err) => {
console.error(err);
})fetch('https://jsonplaceholder.typicode.com/posts')
.then((response) => {
if (response.ok) return response.json();
else return new Error('Failed');
})
.then(data => {
console.log(data);
})
.catch((err) => {
console.error(err);
})insertImageToHtml.js를 참고하여 todoapp하단에 FakeAPI로부터 fetch해온 comments들이 보이게 해보자