Enfoque declarativo o programático en DOJO?

Al crear Componentes DOJO, ¿cuándo deberíamos preferir el enfoque declarativo y el enfoque programático?

Depende completamente de tus necesidades y preferences. Si tiene diseñadores en lugar de progtwigdores que necesitan agregar widgets Dojo, puede ser preferible para ellos usar el marcado declarativo. Sin embargo, si insiste en que el marcado de HTML apruebe la validation de w3c, le conviene usar el enfoque programático.

Prefiero el enfoque programático porque me permite ajustar un formulario completo como un object JavaScript y crear methods para crear instancias y validar sus widgets. Adición después del comentario: generalmente crearé un object javascript con sus inputs de formulario y widgets dojo / dijit como sus properties, así puedo referirme a ellos como this.startDateTextBox, this.titleInlineEditor etc. this.startDateTextBox, this.titleInlineEditor instancias de los widgets de dojo en el javascript function de constructor de objects.

Si usa varios widgets similares, puede haber un ahorro en errores de tipeo si declara objects que mantienen sus configuraciones de initialization y los carga programáticamente en lugar de declarar declarativamente todas las properties compartidas en el marcado para cada uno. Otra razón por la que prefiero la creación de instancias programáticas es que puedo cambiar los parameters de creación de instancias en function de las diferentes condiciones antes de iniciar realmente un widget más fácilmente que si tuviera que hacerlo desde el server para cambiar el marcado.

Desde la versión 1.6, Dojo admite attributes de datos HTML5, por lo que el HTML resultante será válido. A pesar de la penalización del performance, el enfoque declarativo permite ver la estructura de la interfaz de usuario de un vistazo.

Copié la comparación entre los styles que proporcionan en el anuncio del soporte de attributes de datos HTML5 :

Incluso al aprovechar los nuevos attributes personalizados HTML5-válidos, todavía hay pros y contras para declarar widgets dentro de HTML en lugar de JavaScript. Declarar los componentes de JavaScript desde HTML introduce la impureza semántica, ya que el HTML ya no es un marcado semántico, sino que incluye un acoplamiento estricto a los componentes visuales particulares. El enfoque declarativo también incurre en ciclos adicionales de CPU porque dojo.parse () debe atravesar el tree DOM para encontrar elementos con attributes personalizados de Dojo. La creación de instancias programáticas evita ciclos innecesarios y preserva la pureza semántica de HTML. Sin embargo, la statement de widgets basada en marcado todavía tiene una poderosa ventaja al permitirnos definir y crear un widget en un solo lugar, facilitando el desarrollo rápido de aplicaciones con un mínimo esfuerzo.