Vanilla Javascript Boilerplate
router의 routes 배열에 다음 형식으로 추가하면, 해당 url에 접속시 설정한 미들웨어를 실행한 뒤 컴포넌트를 렌더링한다.
ex)
// client/src/core/router.js
const routes = [
{ path: '/', view: Main },
{ path: '/profile', view: Profile },
{ path: '/middleware', view: Profile, middleware: [auth] },
];
core의 Component를 확장해 컴포넌트를 만들 수 있다.
import Component from '_core/Component';
class Example extends Component {}
구독하기
import { subscribe } from '_store';
subscribe("구독할 상태 string", "콜백함수(바뀐 값)");
// ex)
subscribe('subscribingValue', (newValue) => this.setState({ myValue: newValue }));
dispatch하기
(대응하는 type, action, reducer 필요)
import { dispatch } from '_store';
import { changeValue } from '_actions';
dispatch(changeValue("newValue")));
type,과 action을 만든다.
// client/src/store/actions
import * as type from '../types';
export const requestLogin = (payload) => ({ type: type.REQUEST_LOGIN, payload });
sagas에서 action에 대응한다.
// client/src/store/sagas
const login = () => {
// 비동기 로직
}
export default (action) => {
switch (action.type) {
case REQUEST_LOGIN:
login(action);
break;
}
};
미들웨어 dispatch하기
import { requestLogin } from '_actions';
dispatch(requestLogin())
- babel (ie11 지원)
- eslint (standard 적용)
- scss 적용
- minify 적용
- 이미지 파일 처리
- resolve alias 적용
const { CustomError } = require("../utils");
throw CustomError(400, "error message");