Sigo viendo reclutadores, desarrolladores, etc., que se refieren a Node.js como un marco. En mi opinión, esto es por ignorancia de lo que realmente es Node.js.
A menudo, en las descripciones de trabajo, Node.js se agrupa como una biblioteca entre AngularJS , React , etc. En general, lo veo como ingresado por alguien que no conoce la diferencia (HR, un reclutador, etc.).
En mi opinión, Node.js es una plataforma o un entorno de tiempo de ejecución; cambia la API DOM (JavaScript en el navegador) para varias otras API, como el sistema de archivos (ya que se ejecuta como un servidor y no en el navegador).
¿Por qué la gente piensa que Node.js es un framework? ¿Me equivoco? ¿Es realmente un marco?
terminology
node.js
ndugger
fuente
fuente
Respuestas:
Es un poco difícil de decir porque estas palabras no están bien definidas. En términos comunes, creo que es un poco atípico llamar a Node.js como marco, claro, pero me sería difícil discutir por qué exactamente no lo es.
Todo esto se vuelve incierto, y a menudo veo usos muy pobres del lenguaje, así que seré explícito y comenzaré desde abajo
JavaScript es un lenguaje informático, es decir, en sentido estricto, un conjunto de convenciones que nos permiten leer e interpretar un montón de texto con semántica de ejecución, una palabra elegante para "forma de interpretar el lenguaje como un conjunto de instrucciones". Las clases de programas llamados intérpretes , compiladores , transpilers , borra de , marcadores , etc., todo texto toma en y tratar de hacer algo con esta comprensión convencional de la forma de ejecutar el código.
Ahora, profundicemos un poco en la semántica de ejecución. En general, la semántica de ejecución implica un proceso de lectura de texto de lenguaje y llegar a una descripción de una máquina abstracta o una descripción de efectos secundarios observables . Lo que me gustaría sugerir es que ambos asumen la necesidad de que haya algún tipo de "API de bajo nivel", ya sea para operar la máquina o para realizar los efectos observables. Estos generalmente se consideran parte del entorno de tiempo de ejecución
Se suele abusar de la palabra tiempo de ejecución para referirse tanto al conjunto de primitivas asumidas como a una instanciación real de ellas.
Entonces, ahora llegamos a algo peludo. Un lenguaje es un conjunto de convenciones que asume la existencia de un tiempo de ejecución para proporcionar significado a su semántica de ejecución. Nunca "los investiga" ya que están fuera de alcance.
Para utilizar realmente un lenguaje, desea algo como un compilador o un intérprete junto con una implementación en tiempo de ejecución. El compilador / intérprete y este tiempo de ejecución van de la mano en la ejecución de su código.
Entonces, ¿dónde encaja Node.js en esto?
Tenemos que dividirlo en partes:
¡Entonces Node.js es muchas cosas!
¿Pero es un marco?
Aquí es donde la terminología se desmorona totalmente: nadie tiene una definición buena, coherente y significativa de lo que realmente es un marco.
Hay debates que enfurecen: "qué es un marco versus una biblioteca" y terminan en cosas insatisfactorias como "una biblioteca es algo que llamas y un marco es algo que te llama". Ni siquiera quiero dar una explicación tan triste a la luz del día, pero JavaScript, y Node.js JavaScript en particular, es un gran golpe para esta definición, ya que toda la técnica de devolución de llamada significa que está cambiando constantemente entre llamadas y ser llamado
En mi opinión personal, hay algo sustancial aquí. No quiero dibujar una línea brillante, pero simplemente diré
Esta es una línea manual, sin duda, pero quiero extraer un punto realmente interesante sobre los marcos:
Los marcos implican un conjunto de convenciones sobre cómo interpretar el código; son, por lo tanto, un idioma por derecho propio.
Esto podría ser algo sobre lo que la gente también quiera discutir, pero si compró mi definición anterior de que un lenguaje es solo un conjunto de convenciones que dan vida a un bloque de texto, entonces cada vez que establece una nueva capa de convenciones, usted ' He construido un nuevo lenguaje. Quizás con los frameworks las materias primas son las interpretaciones semánticas de su lenguaje anfitrión en lugar de los archivos de texto sin procesar, ¡pero la idea es la misma!
Entonces, con todo lo dicho, ¡estoy totalmente feliz de llamar a Node.js un framework incluso si va un poco en contra de la norma! Node.js agrega funcionalidad a JavaScript sin formato en la forma de expandir el lenguaje . Con esto trae nuevas suposiciones y herramientas para trabajar en este lenguaje expandido. Funcionalmente, estas ideas son las mismas que las de otros marcos bien aceptados como Ruby on Rails .
Yo diría que si en este momento te sientes un poco mareado y quieres argumentar que hay una gran división entre Ruby on Rails y Node.js en esta forma de cosas, entonces estoy ahí contigo , por supuesto. El tipo de mundos conceptuales en los que viven los dos es dramáticamente diferente. Simplemente quiero decir que son el mismo tipo de cosas: conjuntos de convenciones para expandir los poderes de un lenguaje base dentro de un dominio particular.
También me complace sugerir que el dominio de Node.js es pequeño y estricto y, por lo tanto, las convenciones que agrega son fáciles de razonar y relativamente fáciles de corregir. OTOH, Ruby on Rails vive en un dominio complejo y mal definido de "aplicaciones web comerciales", lo que significa que las convenciones que establece son ciertamente confusas y rotas.
Pero todo esto es un largo camino para decir, sí, los reclutadores probablemente no tienen idea de lo que quieren decir cuando dicen eso. Supongo que "marco" suena como una palabra mejor y más asimilable que "tiempo de ejecución" o "motor".
fuente
probably have no idea
'framework' es una palabra que puedes entender sin ser un programador, una característica útil, si te ahorras cuando realmente marcaría la diferencia.fuente
El nodo es un tiempo de ejecución o entorno. No es un marco. La gente (creo) a menudo se equivoca porque los marcos como express son ubicuos con el nodo.
más lectura sobre tiempos de ejecución vs frameworks si está interesado.
fuente