Web browsers were initially created to view static content. However modern websites are dynamic and must respond to user interaction instantly, without taking users to a new web page every time an event occurs such as a mouse click. For this reason, front end scripting languages add a layer of dynamic interaction to websites and web applications. With effective scripting, it is possible to extend the functionality of web applications far beyond the original scope of HTML. Use scripting to develop Web 2.0 browser-based applications and dynamic widgets using JavaScript libraries and frameworks.

Develop cross-browser compatible code in native JavaScript. Modular JavaScript design patterns will allow for a large front end architecture that scales well. Use advanced prototypes, functional inheritance, delegations and other structural, behavioural and creational patterns. Avoid anti-patterns and misuse of JavaScript that may degrade a web applications performance.

Develop Dynamic HTML with the jQuery library for optimized DOM traversal and manipulation. Use API functions such as event handling and animations to simplify tasks that would be too complex to write in cross browser compatible native JavaScript. Extend jQuery with custom web application plugins. In specialized situations, combine jQuery with native JavaScript for an effective solution.

Leverage the power of AngularJS for large or enterprise level web applications. The framework will build rich client-side web applications by extending the limited HTML vocabulary so that it can be used for dynamic views. AngularJS offers many useful features such as: two way data binding, templates, server communication and a full testing environment.

When building modern web applications, use modernizr as an tool for detecting available browser features for the purpose of cross-browser compatibility. Using this tool allows websites and rich web applications to create feature-rich functionality without sacrificing accessibility. Modernizr will allow scripting languages to detect which features web browsers support so that applications can correctly handle missing features on legacy browsers.