Basi di Liquid per sviluppatori provenienti da altrove
Se hai scritto template prima, Liquid ti prenderà un pomeriggio. Ciò che richiede più tempo è accettare cosa non ti permetterà di fare, perché quei limiti sono deliberati e plasmano come vengono costruiti i temi Shopify.
Questa è l'orientazione che diamo agli sviluppatori che si uniscono a un progetto Shopify da qualsiasi altro stack.
Il modello mentale#
Liquid è un linguaggio di rendering, non un linguaggio applicativo. Ha oggetti passati da Shopify, filtri per formattarli e tag per il flusso di controllo. Non c'è accesso al database, nessun calcolo arbitrario di conseguenza e nessun modo di raggiungere fuori dagli oggetti che ti sono stati dati. Se hai bisogno di qualcosa che l'oggetto non contiene, la risposta è un metafield, un'app o una pagina diversa.
Ogni ora spesa cercando di far comportare Liquid come un linguaggio general-purpose è un'ora che avrebbe dovuto essere spesa sul modello dati.
Cosa userai costantemente#
| Cosa | A cosa serve |
|---|---|
| Oggetti | product, collection, cart, customer, shop — i dati della pagina |
| Filtri | Formattazione: money, date, image_url, escape |
| Tag | Flusso di controllo: if, for, assign, render |
| Sezioni e blocchi | Struttura modificabile dal commerciante nell'editor del tema |
| Metafield | I tuoi dati strutturati allegati agli oggetti Shopify |
Trappole comuni#
- I loop su grandi collezioni renderizzano lentamente; pagina invece di filtrare in Liquid.
- Qualsiasi cosa calcoli per richiesta viene calcolata ad ogni richiesta — l'output cache-friendly conta.
- render riceve uno scope isolato; include è deprecato e si comporta diversamente.
- Il denaro è memorizzato in centesimi; usa i filtri money invece di fare aritmetica a mano.
- Il contenuto specifico del cliente impedisce la cache ingenua dell'intera pagina, che è una decisione di prestazioni oltre che di correttezza.
Dove mettere invece la logica#
La modellazione dei dati appartiene ai metafield e metaobject, definiti una volta e letti economicamente. Il comportamento appartiene a un'app o al browser. Liquid dovrebbe principalmente leggere e formattare. I temi che seguono quella divisione rimangono veloci e comprensibili.
Domande frequenti
Liquid è difficile da imparare?
No — uno sviluppatore competente è produttivo in un giorno. Imparare cosa Shopify non ti permetterà di fare richiede più tempo.
Posso interrogare dati in Liquid?
Solo ciò che il grafo degli oggetti della pagina ti dà, più i metafield. Non c'è interrogazione arbitraria.
La logica dovrebbe vivere in Liquid o JavaScript?
Logica di presentazione in Liquid, interazione in JavaScript, regole di business in un'app o nel tuo modello dati.
shopify liquidtemplating liquidsviluppo tema shopifybasi liquidshopify metafields