Iodine.js는 마이크로 클라이언트 측 유효성 검사 라이브러리입니다. 종속성이 없으며 단독으로 사용하거나 프레임워크의 일부로 사용할 수 있습니다. 요오드는 또한 연결 가능한 규칙을 지원하므로 데이터 조각이 여러 기준을 충족하는지 확인할 수 있습니다.
Iodine 버전 8+에는 수많은 주요 변경 사항이 포함되어 대대적으로 재작성되었습니다. 따라서 기존 프로젝트에서는 버전 7(또는 그 이하)을 계속 사용하고, 버전 8(또는 그 이상)은 최신 프로젝트용으로 남겨두는 것이 좋습니다.
프로젝트에 요오드를 가져오는 가장 쉬운 방법은 CDN을 이용하는 것입니다(빌드 번호를 업데이트해야 합니다).
< script src =" https://cdn.jsdelivr.net/npm/@caneara/[email protected]/dist/iodine.min.umd.js " defer > script >
NPM을 통해 프로젝트에 요오드를 가져올 수도 있습니다.
npm i @ caneara / iodine
요오드는 window
네임스페이스에 자동으로 추가되어 어디서나 사용할 수 있습니다. 프로젝트에 컴파일이나 가져오기가 포함되지 않은 경우 요오드를 사용하는 권장 방법입니다. 프로젝트에 컴파일이 포함되어 있더라도 window
네임스페이스에 추가된 인스턴스를 사용하는 것이 더 쉬운 경우가 많습니다.
또는 가져오기 사용에 익숙하거나 자신만의 인스턴스를 만들고 싶다면 다음과 같이 Iodine을 가져올 수 있습니다.
import Iodine from '@caneara/iodine' ;
const instance = new Iodine ( ) ;
요오드에는 관련 방법을 통해 접근할 수 있는 여러 가지 검증 규칙이 포함되어 있습니다. 이를 통해 항목이 정수인지 날짜인지 빠르고 쉽게 확인할 수 있습니다.
요오드의 규칙에는 assert
접두사가 붙습니다. 따라서 항목이 integer
인지 확인하려면 다음 코드를 사용합니다.
let item_1 = 7 ;
let item_2 = 'string' ;
Iodine . assertInteger ( item_1 ) ; // true
Iodine . assertInteger ( item_2 ) ; // false
요오드에 포함된 검증 규칙의 전체 목록은 아래를 참조하세요.
항목이 개별 유효성 검사 규칙을 준수하는지 확인하는 것이 유용할 수 있지만 항목이 여러 규칙을 준수하는지 확인하려는 경우가 많습니다. 예를 들어 이메일 주소는 필수일 수 있고 문자열이어야 하며 이메일 주소 정규식을 충족해야 합니다.
이러한 요구를 해결하기 위해 요오드는 '단일 항목 확인'과 '다중 항목 확인'을 제공합니다...
이 접근 방식은 위에서 설명한 이메일 주소 예와 같이 여러 규칙에 대해 테스트해야 하는 항목이 하나 있는 경우에 선호됩니다. '단일 항목 확인'을 수행하려면 기본 assert
메서드를 호출하세요. 이 메서드는 두 개의 매개변수를 사용합니다. 먼저 확인할 항목이다. 두 번째는 순서대로 실행되어야 하는 유효성 검사 규칙의 array
입니다.
let item_1 = 7 ;
let item_2 = 'string' ;
Iodine . assert ( item_1 , [ 'required' , 'integer' ] ) ;
Iodine . assert ( item_2 , [ 'required' , 'integer' ] ) ;
예제에서 볼 수 있듯이 유효성 검사 규칙은 strings
사용하여 표현됩니다. 유효성 검사 규칙에 대한 string
표현을 찾으려면 기존 목록을 검토하세요.
개별 어설션( boolean
반환)과 달리 assert
메서드는 보고서가 포함된 object
를 반환합니다. 항목이 모든 규칙을 통과하면 다음을 얻게 됩니다.
{
valid : true ,
rule : '' ,
error : '' ,
} ;
항목이 검증되지 않으면 보고서에는 관련 오류 메시지와 함께 충족하지 못한 첫 번째 규칙이 포함됩니다.
{
valid : false ,
rule : 'integer' ,
error : 'Value must be an integer' ,
} ;
이 접근 방식은 여러 필드가 포함된 양식을 제출할 때와 같이 다양한 유효성 검사 규칙에 대해 여러 항목을 확인해야 할 때 선호됩니다.
'단일 항목 확인'과 마찬가지로 assert
메소드를 호출해야 하지만 두 매개변수 모두에 대해 object
제공해야 합니다. 첫 번째 개체에는 유효성을 검사할 항목이 포함되어야 하고, 두 번째 개체는 각 항목에 대한 규칙으로 구성되어야 합니다.
const items = {
name : 5 ,
email : '[email protected]' ,
password : 'abcdefgh' ,
} ;
const rules = {
name : [ 'required' , 'string' ] ,
email : [ 'required' , 'email' ] ,
password : [ 'required' ] ,
} ;
Iodine . assert ( items , rules ) ;
'단품점검'과 달리 신고 내용이 조금 다릅니다. 여기에는 모든 것이 통과되었는지 또는 실패했는지 쉽게 확인할 수 있는 최상위 valid
키가 포함되어 있습니다. 그런 다음 각 항목에 대한 하위 보고서가 포함된 fields
키가 포함됩니다. 하위 보고서는 '단일 항목 확인'을 통해 얻을 수 있는 것과 동일합니다. 위에 표시된 코드 예제에 대한 보고서는 다음과 같습니다.
{
valid : false ,
fields : {
name : {
valid : false ,
rule : 'string' ,
error : 'Value must be a string' ,
} ,
email : {
valid : true ,
rule : '' ,
error : '' ,
} ,
password : {
valid : true ,
rule : '' ,
error : '' ,
}
} ,
} ;
일부 규칙에는 추가 매개변수가 필요합니다. 예:
let item_1 = 7 ;
let item_2 = 4 ;
Iodine . assertMin ( item_1 , 5 ) ; // true
Iodine . assertMin ( item_2 , 5 ) ; // false
고급 검증을 위해 세미콜론 구분 기호를 사용하여 규칙에 매개변수를 추가하여 매개변수를 제공할 수 있습니다.
let item_1 = 7 ;
let item_2 = 4 ;
Iodine . assert ( item_1 , [ 'required' , 'integer' , 'min:5' ] ) ;
Iodine . assert ( item_2 , [ 'required' , 'integer' , 'min:5' ] ) ;
또는 원하는 경우 세미콜론으로 구분된 string
대신 규칙을 object
로 제공할 수 있습니다.
Iodine . assert ( 8 , [ 'required' , 'integer' , { rule : 'min' , param : 7 } , 'max:10' ] ) ;
고급 검증을 위해 선택적 값을 허용할 수 있습니다. 요오드는 optional
규칙으로 이를 지원합니다:
let item_1 = 7 ;
let item_2 = null ;
let item_3 = 'string' ;
Iodine . assert ( item_1 , [ 'optional' , 'integer' ] ) ;
Iodine . assert ( item_2 , [ 'optional' , 'integer' ] ) ;
Iodine . assert ( item_3 , [ 'optional' , 'integer' ] ) ;
중요 : 선택적 값을 허용하려면 해당 값이 배열의 첫 번째 규칙이어야 합니다.
요오드에는 영어에 대한 기본 오류 메시지 세트가 포함되어 있습니다. 그러나 setErrorMessages
메소드를 통해 쉽게 교체할 수 있습니다. 이 메서드에는 메시지가 포함된 object
인 단일 매개 변수가 필요합니다. 예를 보려면 요오드 생성자를 참조하세요.
오류가 발생하면 요오드가 [FIELD]
및 [PARAM]
자리 표시자를 자동으로 대체합니다. 따라서 새 오류 메시지의 적절한 위치에 이러한 자리 표시자를 삽입해야 합니다.
Iodine . setErrorMessages ( { same : `[FIELD] must be '[PARAM]'` } ) ; // English
Iodine . setErrorMessages ( { same : `[FIELD] doit être '[PARAM]'` } ) ; // French
대부분의 경우 오류 메시지를 모두 바꿀 필요는 없습니다. 대신 하나를 업데이트하거나 새 것을 추가하고 싶을 것입니다. 그렇게 하려면 대신 setErrorMessage
호출해야 합니다.
Iodine . setErrorMessage ( 'passwordConfirmation' , 'Does not match password' ) ;
경우에 따라 필드에 대한 특정 오류 메시지를 정의해야 하거나 사용된 변수 이름과 다른 필드에 대한 레이블이 필요할 수 있습니다.
이를 달성하려면 규칙을 속성으로 포함하고 사용자 정의 오류 메시지를 값으로 포함하는 assert
메소드에 객체를 전달하십시오.
Iodine . assert ( value , [ 'required' ] , { 'required' : 'The "Label" must be present.' } ) ;
여러 필드에 대해 동일한 접근 방식을 사용할 수도 있습니다.
let items = {
name : '' ,
} ;
let rules = {
name : [ 'required' ]
} ;
let errors = {
name : {
required : 'The "Label" must be present.'
}
} ;
Iodine . assert ( items , rules , errors ) ;
'단일 항목 확인'은 필드 이름을 지원하지 않으므로 Iodine은 대신 기본값('값')을 사용합니다. '값'이 적합하지 않은 경우 setDefaultFieldName
메소드를 호출하고 대신 사용할 대체 string
값을 제공할 수 있습니다.
Iodine . setDefaultFieldName ( 'Valeur' ) ;
assert
호출하기 전에 setDefaultFieldName
호출해야 합니다.
다음과 같은 유효성 검사 규칙을 사용할 수 있습니다.
규칙 | 문자열 키 | 설명 |
---|---|---|
AssertAfter(날짜/정수) | '후에' | 항목이 지정된 Date 또는 타임스탬프 이후의 Date 인지 확인하세요. |
주장AfterOrEqual(날짜/정수) | 'afterOrEqual' | 항목이 지정된 Date 또는 타임스탬프 이후의 Date 인지 확인하세요. |
주장배열 | '정렬' | 항목이 array 인지 확인 |
AssertBefore(날짜/정수) | '전에' | 항목이 지정된 Date 또는 타임스탬프보다 이전 Date 인지 확인하세요. |
주장BeforeOrEqual(날짜/정수) | '이전 또는 같음' | 항목이 지정된 Date 또는 타임스탬프와 같거나 이전 Date 인지 확인하세요. |
주장부울 | '부울' | 항목이 true false 인지 확인하세요. |
주장 날짜 | '날짜' | 항목이 Date 객체인지 확인하세요. |
주장다른(값) | '다른' | 항목이 제공된 값과 다른지 확인하십시오(느슨한 비교 사용). |
AssertEnds(값) | '끝' | 항목이 주어진 값으로 끝나는지 확인하세요. |
주장이메일 | '이메일' | 항목이 유효한 이메일 주소인지 확인하세요. |
주장거짓 | '거짓' | 항목이 false , 'false' , 0 또는 '0' 인지 확인하세요. |
주장인(배열) | '안에' | 항목이 주어진 array 내에 있는지 확인하십시오. |
주장정수 | '정수' | 항목이 integer 인지 확인하세요. |
주장Json | 'json' | 항목이 구문 분석 가능한 JSON 개체 string 인지 확인하세요. |
AssertMaxLength(한계) | '최대 길이' | 항목의 문자 길이가 주어진 제한을 초과하지 않는지 확인하십시오. |
주장MinLength(한계) | '최소 길이' | 항목의 문자 길이가 지정된 제한을 초과하지 않는지 확인하세요. |
주장최대(한계) | '최대' | 항목의 수치 값이 주어진 한도를 초과하지 않는지 확인하십시오. |
주장최소(한계) | '분' | 항목의 숫자 값이 주어진 한도 미만인지 확인하십시오. |
AssertNotIn(배열) | '안돼' | 항목이 주어진 array 내에 없는지 확인하십시오. |
주장숫자 | '숫자' | 항목이 number 또는 숫자 string 인지 확인하십시오. |
주장선택 사항 | '선택 과목' | 선택적 값 허용(여러 검사에만 사용) |
AssertRegexMatch(exp) | '정규식 일치' | 항목이 주어진 정규식을 만족하는지 확인하십시오. |
주장필수 | '필수의' | 항목이 null , undefined 거나 빈 string 아닌지 확인하세요. |
주장같은(값) | '같은' | 항목이 제공된 값과 동일한지 확인합니다(느슨한 비교 사용). |
AssertStartsWith(값) | '시작' | 항목이 지정된 값으로 시작하는지 확인 |
주장문자열 | '끈' | 항목이 string 인지 확인 |
주장진실하다 | '진실' | 항목이 true , 'true' , 1 또는 '1' 인지 확인하세요. |
주장 URL | 'URL' | 항목이 유효한 URL인지 확인하세요. |
주장Uuid | '유이드' | 항목이 UUID 인지 확인하세요. |
각 규칙을 사용하는 방법에 대한 예를 테스트에서 살펴보세요.
요오드를 사용하면 rule
방법을 통해 사용자 정의 유효성 검사 규칙을 추가할 수 있습니다. 이 메서드는 두 개의 매개변수를 허용합니다. 첫 번째는 규칙의 이름입니다. 두 번째는 규칙을 호출할 때 Iodine이 실행해야 하는 closure
입니다.
Iodine . rule ( 'lowerCase' , ( value ) => value === value . toLowerCase ( ) ) ;
중요 : 요오드는 자동으로 규칙 이름의 첫 글자를 대문자로 만들고 앞에 'assert'를 붙입니다. 그러므로 접두사를 직접 추가하는 것을 피해야 합니다.
Iodine . rule ( 'lowerCase' ) ; // right
Iodine . rule ( 'assertLowerCase' ) ; // wrong
규칙이 매개변수를 허용해야 하는 경우 이를 두 번째 인수로 closure
에 포함하면 됩니다. 예:
Iodine . rule ( 'equals' , ( value , param ) => value == param ) ;
또한 사용자 정의 규칙에 대한 오류 메시지를 추가할 수도 있습니다.
Iodine . rule ( 'equals' , ( value , param ) => value == param ) ;
Iodine . setErrorMessage ( 'equals' , "[FIELD] must be equal to '[PARAM]'" ) ;
이전 버전의 Iodine은 async / await
사용하여 비동기 사용자 정의 규칙을 지원했습니다. 이후 라이브러리를 더 쉽게 유지 관리할 수 있도록 이 기능이 제거되었습니다. 비동기 규칙을 사용하는 경우 선호되는 전략은 먼저 비동기 논리를 실행하고 결과를 저장한 다음 요오드가 이를 검증하도록 하는 것입니다.
요오드에 대한 기여를 고려해 주셔서 감사합니다. 추가 규칙이 포함된 PR을 제출할 수 있지만 수락되려면 해당 규칙이 수행되는 작업을 설명하고 다른 사람에게 유용해야 하며 올바르게 작동하는지 확인하기 위한 적절한 테스트를 포함해야 합니다.
프로젝트를 가져온 후 종속성을 설치하려면 다음을 수행하세요.
npm install
테스트를 실행하려면
npm run test
MIT 라이센스(MIT). 자세한 내용은 라이센스 파일을 참조하십시오.