Esta traducci贸n proporcionada por StrongLoop / IBM.

Este documento puede estar desfasado respecto a la documentaci贸n en ingl茅s. Para ver las 煤ltimas actualizaciones, consulte la documentaci贸n en ingl茅s.

Migraci贸n a Express 5

Visi贸n general

Express 5.0 contin煤a en la etapa del release alfa, pero hay una vista previa de los cambios que habr谩 en el release y c贸mo migrar la aplicaci贸n Express 4 a Express 5.

Express 5 no es muy diferente de Express 4: los cambios en la API no son tan significativos como los de la migraci贸n de 3.0 a 4.0. Aunque la API b谩sica permanece igual, contin煤a habiendo cambios que rompen el c贸digo existente; es decir, un programa de Express 4 existente no funcionar谩 si lo actualiza para que utilice Express 5.

Para instalar el release alpha m谩s reciente y obtener una vista previa de Express 5, especifique el siguiente mandato en el directorio ra铆z de la aplicaci贸n:


$ npm install express@5.0.0-alpha.2 --save

A continuaci贸n, puede ejecutar las pruebas automatizadas para ver qu茅 falla y solucionar los problemas seg煤n las actualizaciones siguientes. Despu茅s de solucionar los errores de las pruebas, ejecute la aplicaci贸n para ver qu茅 errores se producen. Ver谩 r谩pidamente si la aplicaci贸n utiliza m茅todos o propiedades que no est谩n soportados.

Cambios en Express 5

A continuaci贸n, se muestra la lista de cambios (a partir del release alpha 2) que le afectar谩n como usuario de Express. Consulte la Pull request para ver una lista de todas las caracter铆sticas planificadas.

M茅todos y propiedades eliminados

Modificados

Mejoras

M茅todos y propiedades eliminados

Si utiliza cualquiera de estos m茅todos o propiedades en la aplicaci贸n, se bloquear谩. Por lo tanto, deber谩 cambiar la aplicaci贸n despu茅s de actualizar a la versi贸n 5.

app.del()

Express 5 ya no da soporte a la funci贸n app.del(). Si utiliza esta funci贸n, se genera un error. Para registrar las rutas HTTP DELETE, utilice la funci贸n app.delete() en su lugar.

Inicialmente, se utilizaba del en lugar de delete, porque delete es una palabra clave reservada en JavaScript. No obstante, a partir de ECMAScript 6, delete y otras palabras clave reservadas pueden utilizarse correctamente como nombres de propiedad. Puede leer aqu铆 la discusi贸n que llev贸 a descartar la funci贸n app.del.

app.param(fn)

La firma app.param(fn) se utilizaba para modificar el comportamiento de la funci贸n app.param(name, fn). Est谩 en desuso desde v4.11.0 y Express 5 ya no le da soporte.

Nombres de m茅todos pluralizados

Los siguientes nombres de m茅todos se han pluralizado. En Express 4, el uso de los m茅todos antiguos daba como resultado un aviso de obsolescencia. Express 5 ya no les da soporte:

req.acceptsCharset() se ha sustituido por req.acceptsCharsets().

req.acceptsEncoding() se ha sustituido por req.acceptsEncodings().

req.acceptsLanguage() se ha sustituido por req.acceptsLanguages().

Dos puntos (:) delanteros en el nombre de app.param(name, fn)

El car谩cter de dos puntos (:) delanteros en el nombre de la funci贸n app.param(name, fn) es un remanente de Express 3 y, a efectos de retrocompatibilidad, Express 4 le daba soporte con un aviso de obsolescencia. Express 5 lo ignorar谩 de forma silenciosa y utilizar谩 el par谩metro de nombre sin a帽adir el prefijo de dos puntos.

Esto no afectar谩 al c贸digo si sigue la documentaci贸n de Express 4 de app.param, ya que no hace ninguna referencia a los dos puntos delanteros.

req.param(name)

Este m茅todo potencialmente confuso y peligroso de recuperar datos de formulario se ha eliminado. No necesitar谩 buscar espec铆ficamente el nombre de par谩metro enviado en el objeto req.params, req.body o req.query.

res.json(obj, status)

Express 5 ya no da soporte a la firma res.json(obj, status). En su lugar, establezca el estado y encad茅nelo al m茅todo res.json() de la siguiente manera: res.status(status).json(obj).

res.jsonp(obj, status)

Express 5 ya no da soporte a la firma res.jsonp(obj, status). En su lugar, establezca el estado y encad茅nelo al m茅todo res.jsonp() de la siguiente manera: res.status(status).jsonp(obj).

res.send(body, status)

Express 5 ya no da soporte a la firma res.send(obj, status). En su lugar, establezca el estado y encad茅nelo al m茅todo res.send() de la siguiente manera: res.status(status).send(obj).

res.send(status)

Express 5 ya no da soporte a la firma res.send(status), donde status es un n煤mero. En su lugar, utilice la funci贸n res.sendStatus(statusCode), que establece el c贸digo de estado de la cabecera de respuesta HTTP y env铆a la versi贸n de texto del c贸digo: 鈥淣ot Found鈥, 鈥淚nternal Server Error鈥, etc. Si necesita enviar un n煤mero utilizando la funci贸n res.send(), escr铆balo entre comillas para convertirlo en una serie, para que Express no lo interprete como un intento de utilizar la firma antigua no soportada.

res.sendfile()

La funci贸n res.sendfile() se ha sustituido por una versi贸n de la funci贸n res.sendFile() con cada palabra en may煤scula en Express 5.

Modificados

app.router

El objeto app.router, que se ha eliminado en Express 4, ha vuelto en Express 5. En la nueva versi贸n, este objeto es s贸lo una referencia al direccionador de Express base, a diferencia de en Express 3, donde una aplicaci贸n deb铆a cargarlo expl铆citamente.

req.host

En Express 4, la funci贸n req.host fragmentaba incorrectamente el n煤mero de puerto si estaba presente. En Express 5, el n煤mero de puerto se mantiene.

req.query

De Express 4.7 y Express 5 en adelante, la opci贸n de analizador de consultas puede aceptar false para inhabilitar el an谩lisis de series de consulta si desea utilizar su propia funci贸n para la l贸gica de an谩lisis de series de consulta.

Mejoras

res.render()

Este m茅todo ahora impone un comportamiento as铆ncrono para todos los motores de vistas, lo que evita los errores provocados por los motores de vistas que ten铆an una implementaci贸n s铆ncrona e incumpl铆an la interfaz recomendada.