Skip to content

Traducción de: deployment.md... #75

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 16 commits into from
Jan 28, 2019
Merged
30 changes: 23 additions & 7 deletions src/v2/guide/deployment.md
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
---
title: Production Deployment
title: Despliegue en Producción
type: guide
order: 401
---

## Activar modo de producción

Durante el desarrollo, Vue da muchas advertencias para ayudarle con errores y dificultades que son comunes. Sin embargo, estas advertencias se vuelven inútiles en la producción e incrementan el tamaño de su aplicación. Además, algunas de estas advertencias tienen pequeños costos de tiempo de ejecución que pueden evitarse en el modo de producción.
Durante el desarrollo, Vue da muchas advertencias para ayudarle con errores y dificultades más comunes. Sin embargo, estas advertencias se vuelven inútiles en la producción e incrementan el tamaño de su aplicación. Además, algunas de estas advertencias tienen pequeños costos de tiempo de ejecución que pueden evitarse en el modo de producción.

### Sin herramientas de compilación

Expand Down Expand Up @@ -38,14 +38,30 @@ module.exports = {

#### Browserify

- Ejecute el comando de compilación con la variable de entorno `NODE_ENV` real establecida en `"production"`. Esto le dice a `vueify` que no incluya _hot-reload_ ni código relacionado con el desarrollo.
- Ejecute el comando de compilación con la variable de entorno `NODE_ENV` establecida en `"production"`. Esto le dice a `vueify` que no incluya _hot-reload_ ni código relacionado con el desarrollo.

- Aplique una transformación global [envify](https://github.com/hughsk/envify) a su paquete. Esto permite que el minificador elimine todas las advertencias en el código fuente de Vue rodeado de bloques condicionales de las variables env. Por ejemplo:

``` bash
NODE_ENV=production browserify -g envify -e main.js | uglifyjs -c -m > build.js
```

- O, usando [envify](https://github.com/hughsk/envify) con Gulp:

``` js
// Utilice el módulo personalizado envify para especificar variables de entorno
var envify = require('envify/custom')

browserify(browserifyOptions)
.transform(vueify),
.transform(
// Requerido para procesar archivos de node_modules
{ global: true },
envify({ NODE_ENV: 'production' })
)
.bundle()
```

#### Rollup

Use [rollup-plugin-replace](https://github.com/rollup/rollup-plugin-replace):
Expand All @@ -65,15 +81,15 @@ rollup({

## Pre-compilación de plantillas

Cuando se utilizan plantillas en el DOM o cadenas de plantilla en JavaScript, la compilación de _template-to-render-function_ se realiza sobre la marcha. Esto suele ser lo suficientemente rápido en la mayoría de los casos, pero es mejor evitarlo si su aplicación exige major rendimiento.
Cuando se utilizan plantillas en el DOM o plantillas de cadena de texto en JavaScript, la compilación de _template-to-render-function_ se realiza sobre la marcha. Esto suele ser lo suficientemente rápido en la mayoría de los casos, pero es mejor evitarlo si su aplicación exige mayor rendimiento.

La forma más fácil de pre compilar plantillas es usando [Single-File Components](single-file-components.html) - las configuraciones de construcción asociadas automáticamente realizan la compilación previa para que el código incorporado contenga las funciones de representación ya compiladas en lugar de cadenas de plantilla sin procesar.
La forma más fácil de pre compilar plantillas es usando [Componentes de un solo archivo](single-file-components.html) - las configuraciones de compilación asociadas realizan automáticamente la precompilación por usted, por lo que el código generado contiene las funciones de renderización ya compiladas en lugar de las plantillas de cadena de texto sin procesar.

Si usa Webpack y prefiere separar los archivos de plantilla y JavaScript, puede usar [vue-template-loader](https://github.com/ktsn/vue-template-loader), que también transforma los archivos de plantilla en funciones de renderizado de JavaScript durante el proceso de compilación.

## Extracción de componentes CSS

Cuando se utilizan componentes de un único archivo, el CSS interno de los componentes es inyectado dinámicamente con las etiquetas `<style>` a través de JavaScript. Esto tiene un pequeño tiempo de ejecución, y si está utilizando la representación del lado del servidor provocará un "destello de contenido sin estilo". Extrayendo el CSS de todos los componentes en un mismo archivo evitará este tipo de problemas y también dará como resultado una mejor minimización y almacenamiento en caché del CSS.
Cuando se utilizan componentes de un solo archivo, el CSS interno de los componentes es inyectado dinámicamente con las etiquetas `<style>` a través de JavaScript. Esto tiene un pequeño coste de tiempo de ejecución, y si está utilizando la representación del lado del servidor provocará un "destello de contenido sin estilo". Extraer el CSS de todos los componentes en un mismo archivo evitará este tipo de problemas y también dará como resultado una mejor minimización y almacenamiento en caché del CSS.

Consulte los documentos de la herramienta de compilación respectiva para ver cómo se hace:

Expand All @@ -83,4 +99,4 @@ Consulte los documentos de la herramienta de compilación respectiva para ver c

## Seguimiento de errores de tiempo de ejecución

Si se produce un error en el tiempo de ejecución durante la renderización de un componente, se pasará a la función de configuración global `Vue.config.errorHandler` si es que asi se ha establecido. Podría ser una buena idea aprovechar este enlace junto con un servicio de seguimiento de errores como [Sentry](https://sentry.io), que proporciona [una integración oficial](https://sentry.io/for/vue/) para Vue.
Si se produce un error en el tiempo de ejecución durante la renderización de un componente, se pasará a la función de configuración global `Vue.config.errorHandler` si es que así se ha establecido. Podría ser una buena idea aprovechar este enlace junto con un servicio de seguimiento de errores como [Sentry](https://sentry.io), que proporciona [una integración oficial](https://sentry.io/for/vue/) para Vue.
85 changes: 66 additions & 19 deletions src/v2/guide/events.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,9 @@ type: guide
order: 9
---

## Escuchando Eventos
## Escuchando eventos

Podemos usar la directiva `v-on` para escuchar eventos de DOM y ejecutar algún código JavaScript cuando son activados.
Podemos usar la directiva `v-on` para escuchar eventos de DOM y ejecutar código JavaScript cuando son activados.

Por ejemplo:

Expand Down Expand Up @@ -42,7 +42,7 @@ var example1 = new Vue({
</script>
{% endraw %}

## Métodos Manejadores de Eventos
## Métodos manejadores de eventos

La lógica para muchos manejadores de eventos usualmente será más compleja que el ejemplo, de modo que mantener código JavaScript en el atributo `v-on` sencillamente no es buena idea. Por eso `v-on` puede también aceptar el nombre de un método que quiera llamar.

Expand Down Expand Up @@ -73,7 +73,7 @@ var example2 = new Vue({
})

// puede invocar métodos en JavaScript también
example2.greet() // -> 'Hello Vue.js!'
example2.greet() // => 'Hello Vue.js!'
```

Resultado:
Expand All @@ -91,14 +91,16 @@ var example2 = new Vue({
methods: {
greet: function (event) {
alert('Hello ' + this.name + '!')
alert(event.target.tagName)
if (event) {
alert(event.target.tagName)
}
}
}
})
</script>
{% endraw %}

## Métodos en Manejadores en línea
## Métodos en manejadores en línea

En vez de asignar directamente a un nombre de un método, podemos también usar métodos en una expresión JavaScript en línea:

Expand Down Expand Up @@ -140,7 +142,9 @@ new Vue({
Algunas veces necesitamos también acceder al evento DOM original en la expresión de manejador en línea. Puede pasarlo al método usando la variable especial `$event`:

``` html
<button v-on:click="warn('Form cannot be submitted yet.', $event)">Submit</button>
<button v-on:click="warn('Form cannot be submitted yet.', $event)">
Submit
</button>
```

``` js
Expand All @@ -154,9 +158,9 @@ methods: {
}
```

## Modificadores de Eventos
## Modificadores de eventos

Es una necesidad muy común llamar a `event.preventDefault()` o `event.stopPropagation()` en manejadores de eventos. Aunque podemos hacer esto fácilmente dentro de los métodos, sería mejor si los métodos se encargaran únicamente de lógica de datos en vez de tratar con detalles de eventos DOM.
Es una necesidad muy común llamar a `event.preventDefault()` o `event.stopPropagation()` en manejadores de eventos. Aunque podemos hacer esto fácilmente dentro de los métodos, sería mejor si los métodos se encargarán únicamente de lógica de datos en vez de tratar con detalles de eventos DOM.

Para solucionar este problema, Vue ofrece **modificadores de eventos** para `v-on`. Recuerde que los modificadores son sufijos de directiva denotados con un punto.

Expand All @@ -182,21 +186,23 @@ Para solucionar este problema, Vue ofrece **modificadores de eventos** para `v-o
<!-- use modo de captura cuando esté agregando el listener de evento -->
<div v-on:click.capture="doThis">...</div>

<!-- activa el manejador si event.target es el elemento en sí -->
<!-- sólo activa el manejador si event.target es el propio elemento -->
<!-- p.e. no de un elemento hijo -->
<div v-on:click.self="doThat">...</div>
```

> Nuevo en 2.1.4
<p class="tip">El orden es importante cuando se utilizan modificadores porque el código correspondiente se genera en el mismo orden. Por lo tanto, usar `@click.prevent.self` evitará **todos los clics** mientras que `@click.self.prevent` sólo evitará los clics en el propio elemento.</p>

> Nuevo en 2.1.4+

``` html
<!-- el evento click será activado una vez como máximo -->
<!-- el evento de clic se activará como máximo una vez -->
<a v-on:click.once="doThis"></a>
```

A diferencia de otros modificadores, los cuales son exclusivos a eventos nativos de DOM, el modificador `.once` puede ser usado también en [eventos de componente](components.html#Using-v-on-with-Custom-Events). Si no ha leído sobre componentes aún, no se preocupe por esto todavía.
A diferencia de otros modificadores, los cuales son exclusivos a eventos nativos del DOM, el modificador `.once` puede ser usado también en [eventos de componente](components.html#Using-v-on-with-Custom-Events). Si no ha leído sobre componentes aún, no se preocupe por esto todavía.

## Modificadores de Tecla
## Modificadores de teclas

Cuando se escuchan eventos de teclado, a menudo necesitamos verificar códigos de tecla comunes. Vue nos permite añadir modificadores de tecla para `v-on` cuando se escucha por eventos de tecla:

Expand Down Expand Up @@ -234,7 +240,21 @@ También puede [definir alias de modificadores de tecla personalizados](../api/#
Vue.config.keyCodes.f1 = 112
```

## Teclas de Modificadores
### Modificadores automáticos de teclas

> Nuevo en 2.5.0+

También puede utilizar directamente cualquier nombre de tecla válido expuesto a través de [`KeyboardEvent.key`](https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/key/Key_Values) como modificadores convirtiéndolos a kebab-case:

``` html
<input @keyup.page-down="onPageDown">
```

En el ejemplo anterior, el manejador sólo será llamado si `$event.key === 'PageDown'`.

<p class="tip">Algunas teclas (`.esc` y todas las teclas de flecha) tienen valores inconsistentes de `key` en IE9, us alias incorporados deben ser preferidos si necesita soportar IE9.</p>

## Teclas de modificación del sistema

> Nuevo en 2.1.0

Expand All @@ -257,12 +277,39 @@ Por ejemplo:
<div @click.ctrl="doSomething">Do something</div>
```

## ¿Por qué Listeners en HTML?
<p class="tip">Note que las teclas modificadoras son diferentes de las teclas regulares y cuando se usan con eventos `keyup`, deben ser presionadas cuando se emite el evento. En otras palabras, `keyup.ctrl` sólo se activará si suelta una tecla mientras mantiene pulsada la tecla `ctrl`. No se activará si suelta la tecla `ctrl` sola.</p>

### Modificador `.exact`

> Nuevo en 2.5.0

El modificador `.exact` debe usarse en combinación con otros modificadores del sistema para indicar que la combinación exacta de modificadores debe ser presionada para que el manipulador se active.

``` html
<!-- Esto se ejecutará incluso si se pulsa Alt o Mayúsculas -->
<button @click.ctrl="onClick">A</button>

<!-- Esto sólo se ejecutará cuando únicamente se pulse Ctrl -->
<button @click.ctrl.exact="onCtrlClick">A</button>
```

### Modificadores de botones del ratón

> Nuevo en 2.2.0+

- `.left`
- `.right`
- `.middle`

Estos modificadores restringen el manejador a eventos activados por un botón específico del ratón.

## ¿Por qué listeners en HTML?

Puede estar preocupado que toda esta estrategia de escucha de eventos rompe las viejas reglas de "separación de intereses". Puede estar tranquilo - ya que todas las funciones y expresiones del manejador de Vue están estrictamente vinculadas al ViewModel que controla la vista actual, no causará dificultades en el mantenimiento. De hecho, hay muchos beneficios cuando se usa `v-on`:

Puede estar preocupado que toda esta estrategia de escucha de eventos rompe las viejas reglas de "separación de intereses". Puede estar tranquilo - ya que todas las funciones y expresiones manejadores están estrictamente atadas al ViewModel que controla la vista actual, no causará dificultades en el mantenimiento. De hecho, hay muchos beneficios cuando se usa `v-on`:

1. Es más fácil de localizar la implementación de la función manejadora dentro de su código JS simplemente posando la vista sobre la plantilla HTML.

2. Como no tiene que asignar manualmente listeners de eventos en JS, su códgo de ViewModel puede ser únicamente lógica y estar libre de DOM. Ésto lo hace más fácil de probar.
2. Como no tiene que asignar manualmente listeners de eventos en JS, su código de ViewModel puede ser únicamente lógica y estar libre de DOM. Ésto lo hace más fácil de probar.

3. Cuando un ViewModel es destruído, todos los listeners de eventos son automáticamente eliminados. No tiene que preocuparse de limpiarlos por su cuenta.
3. Cuando un ViewModel es destruido, todos los listeners de eventos son automáticamente eliminados. No tiene que preocuparse de limpiarlos por su cuenta.
10 changes: 5 additions & 5 deletions src/v2/guide/filters.md
Original file line number Diff line number Diff line change
@@ -1,16 +1,16 @@
---
title: Filters
title: Filtros
type: guide
order: 305
---

Vue.js le permite definir filtros que pueden ser usados para aplicar formatos de texto comunes. Los filtros se pueden utilizar en dos lugares: **en la interpolación con llaves y las expresiones `v-bind`** (estas últimas soportadas en 2.1.0+). Los filtros deben añadirse al final de la expresión JavaScript, señalados con el símbolo "pipe":

``` html
<!-- in mustaches -->
<!-- entre llaves -->
{{ message | capitalize }}

<!-- in v-bind -->
<!-- en v-bind -->
<div v-bind:id="rawId | formatId"></div>
```

Expand All @@ -35,12 +35,12 @@ Los filtros se pueden encadenar:
{{ message | filterA | filterB }}
```

En este caso, el `filterA`, definido con un solo argumento, recibirá el valor del mensaje, y luego se llamará a la función `filterB` con el resultado de `filterA` pasado al argumento único de `filterB`.
En este caso, el `filterA`, definido con un solo argumento, recibirá el valor de `message`, y luego se llamará a la función `filterB` con el resultado de `filterA` pasado al argumento único de `filterB`.

Los filtros son funciones JavaScript, por lo tanto pueden tomar argumentos:

``` html
{{ message | filterA('arg1', arg2) }}
```

Aquí el `filterA` se define como una función que toma tres argumentos. El valor del mensaje se pasará al primer argumento. La cadena simple `'arg1'` pasará como segundo argumento, y el valor de la expresión `arg2` será evaluado y pasado como tercer argumento.
Aquí el `filterA` se define como una función que toma tres argumentos. El valor de `message` se pasará al primer argumento. La cadena simple `'arg1'` pasará como segundo argumento, y el valor de la expresión `arg2` será evaluado y pasado como tercer argumento.
Loading