Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

274
Vistas
¿Cómo funciona $: en Svelte?

estaba leyendo un tutorial svelte , se menciona que $: esto es normal en JavaScript, pero no lo entiendo.

 let count = 0; $: doubled = count * 2;

¿Cómo harías esto en Vanilla JavaScript? comprobando el código que ha sido cambiado

about 4 years ago · Juan Pablo Isaza
3 Respuestas
Responde la pregunta

0

Supongo que te refieres a estos documentos: https://svelte.dev/docs#component-format-script-3-$-marks-a-statement-as-reactive

En este caso, creo que están hablando de la función de sintaxis del lenguaje de programación llamada "etiqueta". En el caso de JS, puede leer sobre esto aquí: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/label

Es necesario mirar atentamente el código fuente de Svelte, pero supongo que usan este patrón de sintaxis JS válido $: para marcar declaraciones de nivel superior y permitirles luego analizarlas y preprocesarlas.

Entonces, no es una magia JS negra, sino una convención solo en el "mundo" Svelte.

Actualizar:

Creo que se usó en algún lugar aquí en el código fuente: https://github.com/sveltejs/svelte/blob/0d017f482016caa51d34918f79dc0b83f0428fd7/src/compiler/compile/Component.ts#L651

Si desea seguir la lógica, observe el uso de "LabeledStatement".

about 4 years ago · Juan Pablo Isaza Denunciar

0

¿Cómo harías esto en Vanilla JavaScript? comprobando el código que ha sido cambiado

Hay varios enfoques para esto. Por ejemplo, comprobación sucia comparando valores anteriores con valores actuales y determinando así los cambios. Este enfoque tiene algunas desventajas. Entre otros, los datos pueden duplicarse y el rendimiento puede degradarse para grandes cantidades de datos debido a todas las comparaciones necesarias.

Otro método sería hacer que las dependencias sean explícitas y solo actualizarlas cuando cambie una de las dependencias. Svelte genera el código necesario para eso automáticamente, pero también se puede hacer manualmente. Si observa el código generado, encontrará que las variables se marcan como invalidadas, lo que activa las actualizaciones de las variables dependientes.

Por ejemplo, en un controlador de clics que incrementa una variable de recuento, obtienes:

 const click_handler = () => $$invalidate(0, count++, count);

Para la declaración reactiva, el código solo se ejecuta si se ha cambiado el count :

 $$self.$$.update = () => { if ($$self.$$.dirty & /*count*/ 1) { $: doubled = count * 2; } };

Sin embargo, este código está optimizado para el rendimiento. Utiliza índices de matriz para un acceso a datos más rápido y un código más eficiente. Para el código destinado a ser escrito y leído por humanos, es posible que desee no hacer eso. En general, no recomendaría hacer esto manualmente de ninguna manera; es más detallado y debe asegurarse de especificar siempre las dependencias correctamente para que funcione.

about 4 years ago · Juan Pablo Isaza Denunciar

0

El $: es una sintaxis Svelte especial y no "funciona" en javascript vainilla.

La sintaxis es compatible con javascript vainilla (es una declaración etiquetada ), por lo tanto, las herramientas como los analizadores y resaltadores de javascript no se rompen.

Pero vanilla javascript no tiene ninguna reactividad incorporada, por lo que se comporta de manera muy diferente.
(Ignora el $: )

La escucha de cambios en variables primitivas no se puede hacer en vanilla.
Hay muchas soluciones disponibles .

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda