Pytanie czy istnieje pakiet formularzy canonical meteor.js?


Czy istnieje pakiet formularzy uznawanych za kanoniczny lub taki, który może być podobny do tego, co ostatecznie znalazłoby się w jądrze?

Podczas moich poszukiwań wymyśliłem dwóch głównych pretendentów, bazujących na aktywności, analizie i dokumentacji (ale mogą istnieć inni):

Jeśli ktoś przejrzał oba te elementy, czy mógłbyś skomentować, dlaczego i gdzie możesz użyć jednego z nich w stosunku do drugiego?


15
2017-09-10 06:43


pochodzenie




Odpowiedzi:


Jako że nie otrzymałem odpowiedzi, zagłosuję argumentem "dlaczego powinieneś zrobić to sam".

Formularz to zarówno wyświetlanie DOM, jak i sprawdzanie poprawności. Myślę, że narzędzia Meteor'a dla obu są wystarczająco dobre, aby nie potrzebować kolejnej abstrakcji między nimi.

Zastanów się, co daje ci meteor: możesz napisać klasę dla swoich obiektów, która sama rozumie wszystkie walidacje i zasady. Nie w formie ogólnej, "musi być liczbą", ale w równie skomplikowany sposób, jaki istnieje (musi być liczbą pierwszą?). Możesz napisać tę klasę i może ona działać zarówno na kliencie, jak i na serwerze. Zawsze należy sprawdzać poprawność zarówno na kliencie, jak i na serwerze. Pojawiły się biblioteki walidacyjne, ponieważ klient i serwer były (przynajmniej) dwoma różnymi językami. Węzeł / Meteor jest wszędzie JS.

Dlaczego nie skorzystać z tej wspaniałej funkcji? Nie umieszczaj kodu weryfikacyjnego w wielu miejscach. Przekaż dane obiektowi, pozwól mu go zaakceptować lub odrzucić na kliencie (i na serwerze).

Na przykład, tworzę każdy element tekstowy przez połączenie mojego własnego szablonu i funkcji pomocnika:

Formularz

{{label_text fname='name' title='Agent Name' placeholder='Formal Name' collection='agent'  passthrough='autofocus=autofocus ' }}
{{label_text fname='agentInCharge' title='Agent In Charge' placeholder='Owner' collection='agent'   }}
{{label_text fname='phone' title='Phone Number(s)' placeholder='Include Area  Code'collection='agent'   }}
{{>gps }}

Szablon

<template name='label_text'>
    <div class="row">
        <label class="large-3" for="{{fname}}_{{_id}}">{{title}}</label>
        <div class="large-8">
            <input name="{{fname}}" 
                   id='{{fname}}_{{_id}}' 
                   class="{{fname}}" 
                   value="{{value}}"
                   data-original="{{value}}" 
                   placeholder="{{placeholder}}" 
                   type="{{type}}" {{passthrough}}  />
        </div>
    </div>
</template>

i kilku pomocników:

generateField = (options) ->
  options.hash.value = options.hash.value or this[options.hash.fname]

  # allow for simple params as default
  options.hash.title = options.hash.title or options.hash.fname
  options.hash.template = options.hash.template or "label_text"
  options.hash.placeholder = options.hash.placeholder or options.hash.title
  options.hash.type = options.hash.type or 'text'

  new Handlebars.SafeString(Template[options.hash.template](options.hash))



Handlebars.registerHelper "label_text", (options) ->
  options.hash.collection = options.hash.collection or 'generic'  
  generateField.call this, options

Handlebars.registerHelper "label_text_area", (options) ->
  options.hash.collection = options.hash.collection or 'generic'
  options.hash.template = "label_text_area"
  options.hash.rows = options.hash.rows or 3
  options.hash.columns = options.hash.columns or 40
  generateField.call this, options

Handlebars.registerHelper "switch", (options) ->
  options.hash.template = "switch"
  options.hash.em = options.hash.em || 7
  generateField.call this, options

Następnie wysyłam dane do obiektu klienta, aby zobaczyć, co myśli.


10
2017-09-10 23:56



Chcę wspierać wszystkich dobrych ludzi, którzy poświęcają czas, aby podzielić się swoją ciężką pracą. To sprawia, że ​​nasza społeczność jest silniejsza. Aby skorzystać z pakietu / biblioteki i przetasować swój własny, a zacząć i dostosować pakiet (i przyczynić się z powrotem!) Jest wyborem, który wielu z nas robi, a następnie zmienia, a następnie zmienia ponownie! - Jim Mack
Zobacz też Odpowiedź Abigail Watson. - Dan Dascalescu


Nie ma kanoniczny pakiet w tym momencie (Meteor v1.0), wydaje się, że problem zostanie pozostawiony społeczności (patrz mapa drogowa).

Dodałbym też joshowens: proste formy do twojej listy, minimalny pakiet (ponieważ lubię wolność, którą daje)

Nie próbowałem Mesosphere, więc nie mogę porównywać, ale myślę aldeed: autoform uzyskał znacznie większą przyczepność. Sądząc po github i atmosfera gwiazdy, to zdecydowanie najbardziej popularne. Wierzę, że głównym powodem jest jego wspaniała integracja z kolekcjami2 (automatyczne inserty, aktualizacje itp.).


1
2017-11-04 08:48





FWIW, używamy autoformowania i kolekcji2.


0
2018-04-09 13:02