Created by Ironhee
Backend < Frontend
잦은 기획의 변경
3명
글로벌 플랫폼
DOM 직접 제어
View 복잡함
가독성 낮음
재사용성 낮음
협업 어려움
AMD 전용 코드
Dependencies Hell
복잡함
프론트 개발자: 백엔드 코드를 작성
백엔드 개발자: 프론트 코드를 작성
Context Switching Cost
프론트와 백엔드의 역할 분리 X
프론트 개발자: 백엔드의 구현에 의존
팀의 핵심역량 = 프론트
Client-Side Routing 필요
더 좋은 대안
Gulp
NPM scripts
ES7 Generator
View 단순함
가독성 높음
재사용성 높음
협업 쉬움
NPM 생태계
Chunk + Lazy Loading
Plugin + Loader (Babel, Sass, postCSS)
var _ = require('lodash'); // load node module
var path = require('path'); // load built-in module
function helloWorld() {
console.log('hello world!');
}
module.exports = helloWorld; // export like node module
/* webpack.config.js */
export default {
// configs...
plugins: [
new webpack.optimize.UglifyJsPlugin({
compress: {
warnings: VERBOSE,
},
}),
],
module: {
loaders: [
{
test: /\.(js|es6)$/,
include: path.join(__dirname, '../src'),
loaders: [...DEBUG ? ['react-hot'] : [], 'babel'],
},
{
test: /\.scss$/,
include: path.join(__dirname, '../src'),
loaders: ['style/useable', 'css', 'postcss', 'sass?sourceMap'],
},
{
test: /\.css$/,
loaders: ['style/useable', 'css', 'postcss'],
},
],
},
};
ES6 / ES7
JSX
import _ from 'lodash';
const helloWorld = () => {
console.log('hello world!');
}
const jsx = (
Hello world
'use strict';
Object.defineProperty(exports, '__esModule', {
value: true
});
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
var _lodash = require('lodash');
var _lodash2 = _interopRequireDefault(_lodash);
var helloWorld = function helloWorld() {
console.log('hello world!');
};
var jsx = React.createElement(
'div',
null,
React.createElement(
'h1',
null,
'Hello world'
)
);
exports['default'] = helloWorld;
module.exports = exports['default'];
프론트 개발자: 프론트 코드를 작성
백엔드 개발자: 백엔드 코드를 작성
단일 책임 원칙
백엔드라우팅 의존성 제거
추가적 Refresh X
Chunk + Lazy Loading
Just Javascript
유연함
단순함
'쿠폰 생성 페이지가 필요해요!'
Run Webpack Devserver
Dummy Component 작성
Router 에 Component 추가
Header 에 CouponPage Link 추가
Browser 에서 구현 확인
Component UI 구현
Style 적용
Store 및 Action 구현
Component 에서 Store & Action 이용하도록 변경
=>Browser 에서 구현 확인
=>다국어 (Intl) 적용
서버와 연동 (REST API)
http://ironhee.github.io/ironhee-frontend-boilerplate