Właśnie uruchamiam nową aplikację internetową i chcę zaimplementować pewną formę sprawdzania poprawności stylu umowy w moim JavaScript. Zrobiłem kilka szybkich google i natknąłem się na JsContact, ale składnia nie jest dokładnie tym, co miałem na myśli. Czy ktoś jest świadomy innych bibliotek?Biblioteki kontraktu kodu JavaScript?
myślę Chcę składnia być coś
String.prototype.padLeft = function(c, width) {
Verify.value(c).isRequired().isNotNull().isChar();
Verify.value(width).isRequired().isNotNull().isNumber().greaterThan(0);
...
Verify.value(result).isNotNull();
return result;
};
Mimo to nie potrwa długo, aby ułożyła własną bibliotekę, która ma składni/metody chcę, jeśli ktoś już zrobił praca jest wystarczająco blisko, zaoszczędzi mi to trochę czasu. Z góry dziękuję.
UPDATE
nie będę miał czasu na pracę w tej sprawie aż do tego popołudnia, więc dam mu jeszcze kilka godzin, aby sprawdzić, czy ktoś ma jakieś zalecenia. Jeśli nie, opublikuję to, co stworzyłem gdzieś jako odpowiedź poniżej, aby inni ludzie mogli się z nimi zapoznać, jeśli tego chcą.
Mam również podano trochę więcej myśli do API, które ma sensu, a ja jestem obecnie na myśli coś podobnego (contrived przykłady):
function searchUser(firstName, middleInit, lastName) {
Verify.value(firstName).isString().matching(/\w+/); // Must have value
Verify.value(middleInit).whenNotNull().isChar(); // May be null, but not undefined
Verify.value(lastName).isString().withMinimumLengthOf(2); // Must have value
...
}
function syncTime(serverTime, now) {
Verify.value(serverTime).isDate(); // Must have value.
Verify.value(now).whenDefined().isDate(); // May be undefined, but not null.
}
Moja obecna myśl, że tolerowanie wartości NULL lub niezdefiniowanej nietypowy (przynajmniej dla mnie?) jako taki, zamiast jawnie określać, że wartość .isNotNull() rzeczywiście wyłączyć regułę dla .whenDefined() lub .whenNotNull(), jak pokazano powyżej. Mogę uczynić .whenNotNull() nie błąd na UNDEFINED, ale widzę NULL vs UNDEFINED jako ważne rozróżnienie; zobaczymy ... wszystkie inne metody będą dość typowe ... myśli? komentarze?
Awesome idea! Aby uprościć kod, możesz pomyśleć o korzystaniu z biblioteki takiej jak Underscore do sprawdzania typu/wartości. Te metody są już dość szybkie i możesz skupić się bardziej na Verify API. http://documentcloud.github.com/underscore/ – strongriley
Brak prob! Czy masz repo na GitHub czy coś takiego? Byłby zainteresowany rozwidleniem/pomocą. Aby jeszcze bardziej obniżyć wydajność, być może można ustawić program w trybie prod lub debugowania. W trybie prod nie działał. – strongriley
@strongriley Obecnie mam je tylko na wspomnianej stronie wiki CodePlex. Mogę rzucić to na GitHub (https://github.com/cbaxter), gdy czas na to pozwala; Wdrożenie może zdecydowanie zostać trochę oczyszczone. –