Esto ha sido una premisa por muchos años debido a que hasta hace poco los navegadores no tenían un comportamiento igual bajo los mismos códigos en Javascript, además que el tipo y estilo de desarrollo nos llevaba a cada vez más realizar todo del lado del servidor.
Con el cambio de mentalidad y la aparición de nuevos estilos de programación además de las mejoras en la interpretación de Javascript entre diferente navegadores las cosas han cambiado.
Razones por las Cuales se Debe Escribir Javascript no Intrusivo
Para saber el porqué de este estilo de codificación de las aplicaciones, debemos ver las razones que llevaron a estas conclusiones:
Si estamos al corriente de las últimas tendencias web, podemos saber que por lo menos el punto 1 y 2 de lo que hemos explicado ya no se aplica, de hecho si desactivamos el Javascript en nuestro navegador probablemente no podamos ver el 90% de las web de hoy en día; en cuanto a los móviles ya sus navegadores trabajan con Javascript de la misma forma que sus contraparte de escritorio y con un rendimiento a la par.
En cuanto a las razones 3 y 4 AngularJS nos ofrece una forma diferente de aplicar el código de forma que no tengamos que preocuparnos, lo primero la diferencia de comportamientos de los navegadores es transparente para el programador, es decir, AngularJS se ocupa de traducir la instrucción de forma adecuada para Internet Explorer básicamente.
Luego los manejadores de evento no tienen un ámbito global, si no que están limitados al $scope de nuestro elemento AngularJS, por ello podemos definir una función en un evento Click de la siguiente forma:
Si nos fijamos el evento click lo manejamos con ng-click, algunos podrán pensar que esto está muy mal, sin embargo no es así, debido a que este evento está dentro del ámbito de su elemento, por ello cuando definimos la función con AngularJS esta puede comportarse de diferentes formas aunque tenga el mismo nombre, veamos como definimos el Javascript:
Aquí demostramos como el $scope o ámbito es quien define la diferencia de lo que debe realizar la aplicación cuando se llama al manejador de eventos.
Como vemos AngularJS define nuevamente el concepto de Javascript no intrusivo, dándonos una mayor libertad al momento de escribir nuestras aplicaciones y ayudando con una mejora en la forma en que podemos leer y mantener el código.