Skip to content
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

Translate to es-ES #187

Open
wants to merge 3 commits into
base: gh-pages
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
56 changes: 56 additions & 0 deletions README_es-ES.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
![header](https://raw.githubusercontent.com/loverajoel/jstips/master/resources/jstips-header-blog.gif)

# Presentamos: Consejos Javascript [![Impresionante](https://cdn.rawgit.com/sindresorhus/awesome/d7305f38d29fed78fa85652e3a63e154dd8e8829/media/badge.svg)](https://github.com/sindresorhus/awesome)
> Nuevo año, nuevo proyecto. **Un consejo JS cada día!**

Con gran entusiasmo os presento estos cortos y útiles consejos diarios sobre Javascript que te permitirán mejorar la escritura de código. En menos de dos minutos por día, podrás leer acerca de rendimiento, convenios, hacks, preguntas de entrevista y todo lo demás que este asombroso lenguage tiene guardado para nosotros.

A mediodía, no importa si es fin de semana o vacaciones, un consejo será posteado y twiteado.

### Puedes ayudarnos a enriquecerlo?
Por favor, sientase libre de enviarnos un PR(pull request) con tu propio consejo de JavaScript par aque lo publiquemos.
Cualquier mejora o sugerencia siempre es bienvenida!
[Click aquí para ver las instrucciones](https://github.com/loverajoel/jstips/blob/master/CONTRIBUTING-es_ES.md)

### Mantengase en contacto
Hay muchas formas de recibir las actualizaciones, escoge la tuya

- [Blog Oficial](http://www.jstips.co)
- [Cuenta Official de Twitter](https://twitter.com/tips_js)
- [Hubot](https://github.com/dggriffin/hubot-jstips)
- [js2016.tips](http://js2016.tips/)
- [Hingsir](http://hingsir.com/jstips-site/dist/tips/)
- [Awesomelists](https://awesomelists.top/#/repos/loverajoel/jstips)

> No te olvides de meter en favoritos(star) al repositorio, eso nos ayuda a promocionar el proyecto!

# Lista de consejos

- 24 - [Use === instead of ==](https://github.com/loverajoel/jstips/blob/gh-pages/_posts/en/2016-01-24-use_%3D%3D%3D_instead_of_%3D%3D.md)
- 23 - [Converting to number fast way](https://github.com/loverajoel/jstips/blob/gh-pages/_posts/en/2016-01-23-converting-to-number-fast-way.md)
- 22 - [Empty an Array](https://github.com/loverajoel/jstips/blob/gh-pages/_posts/en/2016-01-22-two-ways-to-empty-an-array.md)
- 21 - [Shuffle an Array](https://github.com/loverajoel/jstips/blob/gh-pages/_posts/en/2016-01-21-shuffle-an-array.md)
- 20 - [Return objects to enable chaining of functions](https://github.com/loverajoel/jstips/blob/gh-pages/_posts/en/2016-01-20-return-objects-to-enable-chaining-of-functions.md)
- 19 - [Safe string concatenation](https://github.com/loverajoel/jstips/blob/gh-pages/_posts/en/2016-01-19-safe-string-concatenation.md)
- 18 - [Rounding the fast way](https://github.com/loverajoel/jstips/blob/gh-pages/_posts/en/2016-01-18-rounding-the-fast-way.md)
- 17 - [Node.js: Run a module if it is not "required"](https://github.com/loverajoel/jstips/blob/gh-pages/_posts/en/2016-01-17-nodejs-run-a-module-if-it-is-not-required.md)
- 16 - [Passing arguments to callback functions](https://github.com/loverajoel/jstips/blob/gh-pages/_posts/en/2016-01-16-passing-arguments-to-callback-functions.md)
- 15 - [Even simpler way of using indexOf as a contains clause](https://github.com/loverajoel/jstips/blob/gh-pages/_posts/en/2016-01-15-even-simpler-way-of-using-indexof-as-a-contains-clause.md)
- 14 - [Fat Arrow Functions #ES6](https://github.com/loverajoel/jstips/blob/gh-pages/_posts/en/2016-01-14-fat-arrow-functions.md)
- 13 - [Tip to measure performance of a javascript block](https://github.com/loverajoel/jstips/blob/gh-pages/_posts/en/2016-01-13-tip-to-measure-performance-of-a-javascript-block.md)
- 12 - [Pseudomandatory parameters in ES6 functions #ES6](https://github.com/loverajoel/jstips/blob/gh-pages/_posts/en/2016-01-12-pseudomandatory-parameters-in-es6-functions.md)
- 11 - [Hoisting](https://github.com/loverajoel/jstips/blob/gh-pages/_posts/en/2016-01-11-hoisting.md)
- 10 - [Check if a property is in a Object](https://github.com/loverajoel/jstips/blob/gh-pages/_posts/en/2016-01-10-check-if-a-property-is-in-a-object.md)
- 09 - [Template Strings](https://github.com/loverajoel/jstips/blob/gh-pages/_posts/en/2016-01-09-template-strings.md)
- 08 - [Converting a Node List to an Array](https://github.com/loverajoel/jstips/blob/gh-pages/_posts/en/2016-01-08-converting-a-node-list-to-an-array.md)
- 07 - ["use strict" and get lazy](https://github.com/loverajoel/jstips/blob/gh-pages/_posts/en/2016-01-07-use-strict-and-get-lazy.md)
- 06 - [Writing a single method for arrays and a single element](https://github.com/loverajoel/jstips/blob/gh-pages/_posts/en/2016-01-06-writing-a-single-method-for-arrays-and-a-single-element.md)
- 05 - [Differences between `undefined` and `null`](https://github.com/loverajoel/jstips/blob/gh-pages/_posts/en/2016-01-05-differences-between-undefined-and-null.md)
- 04 - [Sorting strings with accented characters](https://github.com/loverajoel/jstips/blob/gh-pages/_posts/en/2016-01-04-sorting-strings-with-accented-characters.md)
- 03 - [Improve Nested Conditionals](https://github.com/loverajoel/jstips/blob/gh-pages/_posts/en/2016-01-03-improve-nested-conditionals.md)
- 02 - [ReactJs - Keys in children components are important](https://github.com/loverajoel/jstips/blob/gh-pages/_posts/en/2016-01-02-keys-in-children-components-are-important.md)
- 01 - [AngularJs: `$digest` vs `$apply`](https://github.com/loverajoel/jstips/blob/gh-pages/_posts/en/2016-01-01-angularjs-digest-vs-apply.md)
- 00 - [Insert item inside an Array](https://github.com/loverajoel/jstips/blob/gh-pages/_posts/en/2015-12-29-insert-item-inside-an-array.md)

### Licencia
[![CC0](http://i.creativecommons.org/p/zero/1.0/88x31.png)](http://creativecommons.org/publicdomain/zero/1.0/)
46 changes: 46 additions & 0 deletions _posts/es/2015-12-29-insertar-elemento-en-un-array.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
---
layout: post

title: Insertar elemento en un array
tip-number: 00
tip-username: loverajoel
tip-username-profile: https://github.com/loverajoel
tip-tldr: Insertar un elemento en un array es una tarea diaria básica. Puedes añadir elementos al final del array usando push, al principio usando unshift, o entremdias usando splice.


categories:
- es
---

Insertar un elemento en un array es una tarea diaria básica. Puedes añadir elementos al final del array usando push, al principio usando unshift, o entremdias usando splice.

Estos son métodos conocidos, pero no significa que no haya una forma más eficiente. Aquí vamos:

Añadir un elemento al final del array es fácil con push(), pero hay una forma más eficiente.

```javascript
var arr = [1,2,3,4,5];

arr.push(6);
arr[arr.length] = 6; // 43% más rápido en Chrome 47.0.2526.106 en un Mac OS X 10.11.1
```
Ambos métodos modifican el array original. ¿No me crees? Comprueba el [jsperf](http://jsperf.com/push-item-inside-an-array)

Ahora, si lo que intentas es añadir un elemento al principio del array:

```javascript
var arr = [1,2,3,4,5];

arr.unshift(0);
[0].concat(arr); // 98% más rápido Chrome 47.0.2526.106 en un Mac OS X 10.11.1
```
Un poco más de detalle: unshift edita el array original; concat retorna un nuevo array. [jsperf](http://jsperf.com/unshift-item-inside-an-array)

Añadir elementos entremedias del array es fácil con splice, y es la forma más eficiente de hacerlo.

```javascript
var elementos = ['uno', 'dos', 'tres', 'cuatro'];
elementos.splice(elementos.length / 2, 0, 'hola');
```

He intentado ejecutar estos tests en varios navegadores y sistemas operativos y el resultado ha sido similar. Espero que estos consejos sean útiles y te inste a realizar tus propios tests!
37 changes: 37 additions & 0 deletions _posts/es/2016-01-01-angularjs-digest-vs-apply.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
---
layout: post

title: AngularJs - `$digest` vs `$apply`
tip-number: 01
tip-username: loverajoel
tip-username-profile: https://github.com/loverajoel
tip-tldr: Módulos JavaScript y fases de compilación se están volviendo más numerosas y complicadas, pero ¿Que ocurre con los boilerplate en los nuevos frameworks?

categories:
- es
---

Una de las más apreciadas características de AngularJs es bindeo de datos de doble sentido. Para poder hacer esta tarea, AngularJs evalua los cambios entre el modelo y la vista mediante ciclos(`$digest`). Tienes que entender este concepto para poder entender como el framework funciona por debajo.

Angular evalua cada observador donde quiera que un evento sea lanzado. Esto se conoce como ciclo `$digest`.
A veces teienes que forzar la ejecución de un nuevo ciclo manualmente y debes escoger la opción correcta por esta fase es una de las influyentes en lo que respecta al rendimiento.

### `$apply`
Este método troncal te permite iniciar el ciclo `$digest` explícitamente. Eso significa que todos los observadores son comprobados; toda la aplicación inicia el `$digest loop`. Internamente, después de ejecutar una función adicional como parámetro, invoca `$rootScope.$digest();`.

### `$digest`
En este caso el método `$digest` inicia el ciclo `$digest` para el contexto(scope) actual y sus hijos. Teniendo presente que los contextos(scopes) padre no serán comprobados y por lo tanto no se verán afectados.

### Recomendaciones
- Utiliza `$apply` o `$digest` sólo cuando el eventos del DOM se lancen fuera de AngularJs.
- Pasa una expresión de función a `$apply`, dispone de un mecanismo de manejo de excepciones y permite integrar cambios en el ciclo `digest`.

```javascript
$scope.$apply(() => {
$scope.consejo = 'Consejo Javascript';
});
```

- Si sólo nececitas actualizar el contexto(scope) actual o sus hijos, utiliza `$digest` y evita que un nuevo ciclo de `$digest` se lance para toda la aplicación. El beneficio en rendimiento es más que evidente.
- `$apply()` es uin proceso intenso para la máquina y puede inducir problemas de rendimiento cuando hay demasiados bindeos.
- Si estas usando >AngularJS 1.2.X, usa `$evalAsync`, que te permite evaluar una expresión durante el ciclo actual o el siguiente. Puede suponer una mejora en el rendimiento de la aplicación.