Ir al contenido

Recetario ​

Traducción automática

Esta página se tradujo automáticamente del inglés y todavía no la revisó un hablante nativo; las correcciones son bienvenidas en GitHub. Si algo no coincide, vale el original en inglés.

Recetas cortas, una tarea cada una. Cada receta es una pequeña aplicación en examples/cookbook/ con su propio conjunto quantum test: el código de la página se importa de los archivos probados, y lo que muestra como resultado salió de ejecutarla.

Lo básico ​

  • Una primera página, y una segunda — Cada archivo en components/ es una página en su propia URL; una URL sin archivo es 404.
  • Variables y expresiones — q:set guarda un valor, las llaves calculan con él y default completa lo que falta.
  • Bucles — q:loop sobre una lista (con su posición), un rango de números y un texto separado por comas.
  • Condicionales — q:if, q:elseif y q:else, con condiciones que son expresiones.
  • Funciones — Un q:function con parámetros tipados y verificados, llamado desde q:set y desde el HTML.
  • Una página por URL — components/product/[id].q responde a /product/1, /product/2...; el segmento es una variable.
  • Leer la query string — query.name lee ?name= de la dirección; default cubre el que falta; urlencode arma un enlace.
  • Componentes reutilizables — Un componente con props y un slot, importado de una carpeta _ que nunca se sirve.

Pantallas ​

  • Un diseño que se adapta a la pantalla — ui:hbox lado a lado en una pantalla ancha y apilado en una angosta, con grow, width y hide-below.
  • Una tabla que se edita en su lugar — ui:table edit= convierte cada celda en un pequeño formulario verificado contra el esquema de la tabla; sin acción que escribir.
  • Pestañas — ui:tabpanel con un ui:tab por cada sección de una página.
  • Tarjetas — ui:card con encabezado, cuerpo y pie, en un ui:grid; o una tarjeta con solo un título.
  • Todos los tipos de campo — "ui:form con etiquetas ui:formitem: texto, número, un select con opciones, un switch, radios y un campo de varias líneas.\
  • La misma página en una terminal — Una página ui:*, servida al navegador por quantum start y dibujada en una terminal por quantum console.

Probar la aplicación ​

Archivos y correo ​

  • Correo en desarrollo — "Enviar correo desde una acción sin servidor de correo mientras desarrollas — host: log escribe cada mensaje en el log.\
  • Cuando el servidor de correo dice que no — Conservar un pedido aunque no se pueda enviar su correo de confirmación — onerror=continue, y avisarle al visitante.

Inicio de sesión y permisos ​

  • Iniciar sesión con una contraseña hasheada — Verificar una contraseña contra su hash bcrypt con verifyPassword, abrir la sesión y reservar una página para usuarios con sesión iniciada.
  • Registrarse y guardar un hash de la contraseña — Crear una cuenta con hashPassword, para que la base de datos nunca tenga la contraseña, con reglas en cada campo.
  • Una página solo para un rol — require_role reserva una página para los administradores; un miembro recibe 403, y un visitante sin sesión es enviado a iniciarla.
  • Una guarda que redirige — Un q:if de nivel superior con q:redirect protege una página y todas sus acciones; un envío sin sesión no escribe nada.
  • Cerrar sesión — Una página de salida que limpia la sesión y redirige; las páginas protegidas quedan cerradas de nuevo.

Formularios y acciones ​

  • Mostrar cada error en su campo — Escribe las reglas una vez en el q:param de la acción; el formulario las lee y muestra cada rechazo junto a su campo.
  • Un formulario rechazado conserva lo escrito — Después de un rechazo, el formulario vuelve lleno con los valores enviados, una vez, para que nadie escriba dos veces un mensaje largo.
  • Redirigir y decir qué pasó — Terminar una acción con q:redirect y un mensaje flash; q:flash para una advertencia; el mensaje se muestra una vez en la página siguiente.
  • Varios formularios en una página — Cada formulario y cada botón envía el nombre de su acción; un nombre que la página no tiene responde 400.
  • Un formulario a partir de la tabla — q:action table= toma sus parámetros del esquema; un ui:form sin campos dibuja un campo por columna.
  • Editar una fila — Una página por fila con [id].q, un formulario abierto con los valores de la fila, y las reglas de la tabla al guardar.
  • Confirmar antes de borrar — Una página que pregunta primero, a la que se llega con un enlace, y el borrado como un POST desde su botón; sin JavaScript.
  • Números y fechas — type=integer, decimal y date en q:param — la acción recibe números verificados y fechas reales, con min y max.
  • Una opción de una lista — enum en q:param le da sus opciones a ui:select y ui:radio y rechaza cualquier otra cosa; una casilla es un booleano.

Datos y SQL ​

IA ​

Licencia MIT · Hecho con VitePress