¿Por qué Javascript para frameworks es tan diferente de lo que un principiante aprende en Internet a través de libros y videos?

No es diferente

Hay mucho que aprender, y lo que aprendes cuando comienzas no es suficiente. Además, no es solo JavaScript. Para trabajar en un proyecto web, por ejemplo, debe aprender la API web, y para trabajar en un proyecto Node, debe aprender la API Node. La gente a menudo confunde estas API con JavaScript.

Algunos marcos también usan características del lenguaje JavaScript que aún no están listas, y usan compiladores como Babel para traducirlos en algo que todos puedan entender. Algunos marcos también usan bibliotecas como TypeScript y Flow, que debe aprender por separado si desea trabajar con un marco que los use.

Después de todo eso, los frameworks agregan su propia API que necesitará aprender, por ejemplo, en Express, necesita aprender qué puede hacer en un objeto de solicitud o respuesta . Esto no tiene nada que ver con el lenguaje JavaScript. Simplemente necesita aprender los nombres de las funciones y propiedades que alguien más escribió para usted.

Entonces, ¿qué etiquetaste como diferente ? una característica de ES2018? una sintaxis mecanografiada? una llamada a la función API de nodo? y el objeto Express API? Sí, esos son diferentes.

No voy a enmarcar una experiencia de aprendizaje con el tiempo, porque la experiencia de aprendizaje de cada persona es diferente, pero lo dejaré con este hecho, todavía aprendo algo nuevo sobre JavaScript de vez en cuando, y escribí mi primera aplicación de JavaScript de una sola página sin Un marco hace unos 15 años.

Esto no significa que necesite mucho tiempo para comenzar a comprender JavaScript escrito para marcos, pero significa que no puede esperar comprender todo acerca de JavaScript tomando cursos o leyendo libros. De hecho, el conocimiento de codificación que obtienes al tomar cursos y leer libros es solo temporal, y si no lo usas, simplemente lo perderás.

Para comprender un marco como Express, primero debe usar su conocimiento de Node API + los conceptos básicos de JavaScript para hacer cosas simples que hace el marco. Escriba un controlador de ruta en Node sin Express, intente analizar las cadenas de consulta allí o sirva contenido HTML / JSON al usuario. No importa si escribes un código horrible allí. Una vez que haya terminado, y vaya a ver cómo se hace con Express, tendrá algo con lo que comparar, y de repente las cosas comienzan a ser más fáciles de entender.

Si ve algo diferente usado en un marco, búsquelo y aprenda. Haga las paces con el hecho de que aprender a codificar es una actividad de por vida

JavaScript todavía es el Salvaje Oeste, y seguirá siendo así durante mucho tiempo. Cualquiera puede escribir un libro sobre “Mejores prácticas de JavaScript” o una herramienta que analizará su código y le dirá qué es bueno o malo. y solo estarán mitad correctos y mitad equivocados.

Hay muy pocas verdades absolutas en JavaScript. Algunas personas usan JavaScript para escribir servidores robustos y escalables. Algunas personas usan JavaScript para escribir aplicaciones de una sola página densamente presentadas con cientos de casos de uso. Algunas personas usan JavaScript como “pegamento” para enlazar enlaces y botones de una página web para servicios de back-end. ¿Qué tienen en común estas diferentes personas? Muy poco. No te darían el mismo consejo.

Leerá artículos sobre cómo optimizar el rendimiento del bucle y evitar pérdidas de memoria. ¡Eso es bueno, pero puede ser irrelevante en tu próximo proyecto!

Mi punto es que el consenso en el mundo de JavaScript está “basado en la sociedad” en lugar de estar “basado en la ciencia”. Las personas usan JavaScript de acuerdo con las normas sociales dentro de sus equipos, y actúan como si fuera un hecho científico, pero en realidad es solo una imagen reflejada de las fortalezas, debilidades y zonas de confort de un equipo técnico.

No somos un punto en la madurez de JavaScript para tener verdades universales. Las “partes buenas” de Crockford son casi tan cercanas como nosotros, pero eso no es arquitectura. Los arquitectos tienen que equilibrar las “partes buenas” de JavaScript con las restricciones externas que no siempre están bien alineadas. Un “marco” a menudo es un artículo de opinión sobre lo que un determinado tipo de desarrollador necesita para ser productivo.

Debe dar crédito a Google por ser bastante objetivo al respecto en sus marcos de JavaScript.

Finalmente, debemos reconocer que JavaScript es muy indulgente y es posible escribir errores graves en JavaScript y no encontrarlos de inmediato. Tampoco podemos confiar en el análisis de código estático para obtener ayuda aquí. Los desarrolladores de JavaScript a menudo están cargados con una gran cantidad de trabajo en un plazo ajustado, y “hacen lo que funciona”, y la deuda técnica no se ve.

Así es como es. Solo podemos arrojar algo de luz sobre este tipo de problemas, pero corremos el riesgo de que la administración mire el reloj y diga que estamos “siendo perfeccionistas” por tratar de abordar los problemas relacionados con la flexibilidad de JavaScript.

Ben

Puede ver un marco como un conjunto de opiniones construidas sobre un lenguaje. Aprender a usar un marco específico y aprender JavaScript del lenguaje son preocupaciones ortogonales en cierta medida. Aprender bien el idioma facilitará la comprensión de los marcos. Aprender un marco específico no llega tan lejos porque se enfrentará a una abstracción de nivel superior.

Es una buena idea estudiar el idioma solo. Examine también varias bibliotecas y marcos para exponerse a diferentes enfoques. Puede ver muchos conceptos similares, pero también hay algunas diferencias vitales. Esto le permite elegir las herramientas adecuadas para los fines correctos. Cada solución tiende a tener su punto óptimo.

Las mejores prácticas en torno al lenguaje tienden a evolucionar bastante rápido. Especialmente ES6 (ES2015) fue un gran salto. A pesar de que la actualización se debió principalmente a la sintaxis de azúcar, trajo algunas nuevas funcionalidades al lenguaje. Afortunadamente, no necesita conocer todas las especificaciones. Comprender un pequeño subconjunto que se adapte bien a sus propósitos es suficiente.

La razón obvia es porque cualquier código javaScript se puede escribir de muchas maneras.
Ahora los marcos pueden usar un patrón completamente diferente de lo que aprendiste en los tutoriales, etc.

Le sugeriré que aborde los marcos de JavaScript desde diferentes ángulos en cuanto a lo que le han enseñado. Use tutoriales en línea para cerrar las brechas, Google es su mejor amigo aquí, incluido el desbordamiento de pila y tantos blogs por ahí.

Los marcos, especialmente los pesados, cambian la forma en que ves un idioma en particular. Me pregunto si conozco JavaScript o Angularjs; Python o Django. Es por eso que se alientan las bibliotecas y los micro marcos. Considere React.js, que es solo una vista; entienda cómo escribir sus componentes, y comenzará a ver el ‘JavaScript’ allí.

Se necesita aprender un marco. Puede ser el mejor desarrollador de JavaScript en la palabra, si nunca ha usado React + Flux y alguien le pide que haga una aplicación para usarlo, necesitará aprender cómo usarlo. La diferencia entre un principiante y un profesional es cómo y qué tan rápido lo aprenderás. Para algunas personas, mirar la documentación será suficiente, algunos preferirán echar un vistazo a proyectos de muestra y otros necesitarán un tutorial completo sobre cómo usarlo.

Además de eso, JavaScript es un lenguaje muy suelto. No impone nada, y hay una gran cantidad de formas de hacer cosas en JavaScript. La importación de módulos, por ejemplo, se puede hacer a través de requirejs, browserify, la declaración del módulo ES6, la declaración del módulo nodejs, etc.

Todo eso es la razón por la cual la mayoría de las personas odian JavaScript y por qué algunas personas (lo hago) lo aman. Te toma 2 días aprender los conceptos básicos del idioma, pero pasarás años dominándolo, aprendiendo las diferentes formas de hacer las cosas y creando el tuyo propio. Y en tu primer año más o menos, producirás un código horrible y horrible.

Mi respuesta a esta pregunta probablemente te ayudará. Necesito aprender AngularJS o jQuery en una semana para poder ser empleado. ¿Qué debo aprender y cómo?