Let's start with questioning the premise of this entire book, Angular itself. Why learn Angular, but not React, Vue, or some other framework? First, I won't be making an argument against learning any new tool. I believe that every tool has its place and purpose. Becoming somewhat proficient in React or Vue can only help further your understanding of Angular. Single Page Application (SPA) frameworks such as Backbone or Angular have grabbed my full attention since 2012, when I realized server-side rendered templates are impossible to maintain and cause very expensive rewrites of software systems. If you're intent on creating maintainable software, decoupling of APIs and business logic from the user interface (UI) is the prime directive you must abide by.
The question is, why get good at Angular? I have found that Angular neatly fits the Pareto principal. It has become a mature and evolving platform, allowing you to achieve 80% of tasks with 20% of the effort. Furthermore, starting with version 4, in Long Term Support (LTS) until October 2018, every major release is supported for 18 months, creating a continuum of learning, staying up-to-date and deprecating old features. From the perspective of a full-stack developer, this continuum is invaluable, since your skills and training will remain useful and fresh for many years to come.
This first chapter will help you and your team members create a consistent development environment. It can be tough for beginners to create the correct development environment, which is essential for a frustration-free development experience. For seasoned developers and teams, achieving a consistent and minimal development environment remains a challenge. Once achieved, such a development environment helps avoid many IT-related issues, including ongoing maintenance, licensing, and upgrade costs.
Instructions on installing GitHub Desktop, Node.js, Angular CLI, and Docker will be a good reference from absolute beginners all the way to seasoned teams, along with strategies to automate and ensure the correct and consistent configuration of your development environment.
Feel free to skip this chapter if you already have a robust development environment setup; however, beware that some of the environmental assumptions declared in this chapter may result in some instructions not working for you in later chapters. Come back to this chapter as a reference if you run into issues or need to help a colleague, pupil, or friend set up their development environment.
In this chapter, you will learn the following:
- Working with CLI package managers to install and update software:
- Chocolatey on Windows 10
- Homebrew on macOS X
- Using scripting to automate installation using:
- Powershell on Windows 10
- Bash on macOS X
- Achieving a consistent and cross-platform development environment
You should be familiar with these:
- JavaScript ES2015+
- Frontend development basics
- RESTful APIs
The supported operating system are as follows:
- Windows 10 Pro v1703+ with PowerShell v5.1+
- macOS Sierra v10.12.6+ with Terminal (Bash or Oh My Zsh)
- Most of the suggested software also works on Linux systems, but your experience may vary
The suggested cross-platform software is as follows:
- Node 8.10+ (except non-LTS versions)
- npm 5.7.1+
- GitHub Desktop 1.0.0+
- Visual Studio Code v1.16.0+
- Google Chrome 64+