VulcanJS 특징
GraphQL 스키마 생성
Vulcan은 SimpleSchema JSON 스키마를 기반으로 컬렉션의 GraphQL 스키마를 자동으로 생성합니다.이렇게하면 두 가지 형식으로 스키마를 두 번 지정할 필요가 없습니다. 이 기능은 완전히 선택적이며 필요에 따라 수동으로 스키마를 지정할 수도 있습니다.
자동 생성 폼
Vulcan은 스키마를 사용하여 클라이언트 측 폼을 생성하고 적절한 Apollo Mutation을 통해 제출을 처리합니다.예를 들어 하나의 동영상을 편집하기위한 양식을 표시하는 방법은 다음과 같습니다.
<VulcanFormqueryName 옵션은 작업이 완료되면 자동으로 업데이트되는 쿼리를 VulcanForm에 통지하는 한편, showRemove 옵션은 "Delete Movie' 버튼을 폼에 추가합니다.
collection={Movies}
documentId={props.documentId}
queryName="moviesListQuery"
showRemove={true}
/>
VulcanForm 클라이언트 저장소에 아직 로드되지 않은 경우 수정할 문서를 읽어오기도 합니다.
쉬운 데이터 적재
Vulcan에는 Apollo 데이터를 쉽게 로드할 수 있도록 데이터 로딩 헬퍼 세트로 withList (복수 문서용)와 withDocument (단일 문서용)를 제공합니다.예를 들어, withList를 사용하여 MoviesList 구성 요소에 모든 동영상을 포함하는 결과를 prop에 전달하는 방법은 다음과 같습니다.
const listOptions = {Fragment를 전달하여 각 문서에 로드되는 데이터를 제어할 수 있습니다.
collection: Movies,
queryName: 'moviesListQuery',
fragment: fragment,
};
export default withList(listOptions)(MoviesList);
Schema 기반 보안과 검증
Vulcan 보안 및 검증은 모든 컬렉션의 스키마를 기반으로합니다. 스키마의 각 필드는 다음의 함수를 정의할 수 있습니다.- viewableBy
- insertableBy
- editableBy
이들은 모두 현재 사용자를 인자(선택적으로 영향을 받는 문서)로 사용하고 사용자가 주어진 작업을 수행 할 수 있는지 확인합니다.
그룹과 허가
Vulcan에는 사용자 그룹과 권한을 다루는 간단한 시스템이 있습니다. 아래의 예를 들면, 모든 사용자는 새로운 동영상을 만들고 스스로 편집/삭제할 수 있지만, 관리자만이 다른 사용자의 동영상을 편집하거나 삭제할 수 있습니다.const defaultActions = [그런 다음 mutation 검사에서 이러한 작업을 참조 할 수 있습니다.
"movies.new",
"movies.edit.own",
"movies.remove.own",
];
Users.groups.default.can(defaultActions);
const adminActions = [
"movies.edit.all",
"movies.remove.all"
];
Users.groups.admins.can(adminActions);
그외 특징들
Vulcan에는 다음과 같이 즉시 사용할 수 있으며 시간 절약할 수 있는 많은 기능이 있습니다.- 다국어 지원(i18n)
- 서버 측 렌더링
- 테마를 만들거나 컴포넌트를 확장하는 도구들
- 이메일과 이메일 템플릿 기능
- 미리 만들어 놓은 mutation들
물론 Vulcan을 사용하면 vulcan 코어 뿐만 아니라 vulcan:posts나 vulcan:comments, vulcan:newsletter, vulcan:search 등에도 접근 가능합니다.
댓글
댓글 쓰기