Accompanying code samples and snippets for the JavaScript Application Design: A Build First Approach book.
These are the accompanying code samples and snippets for a book I wrote about JavaScript build processes and application architecture. The samples are organized by chapter, and they appear in the same order as they do in the book, for convenience.
You could visit its landing page to learn all about it!
Book buying frenzy? Say no more, stranger!
You'll need Node.js. You can get the latest version from their website, although I'd suggest using nvm
, which makes it super easy to install multiple versions, and switch between them.
You'll need GraphicsMagick, and also phantomjs
, to run some of the examples. PhantomJS comes in a module that you can conveniently install as a global.
npm install -g phantomjs
GraphicsMagick comes in different distributions for OSX, Linux, and Windows, so please refer to their site to download the appropriate distribution. If you're on Ubuntu, I'd recommend installing it through apt-get
. If you're on OSX, you can use brew
to install it. These kinds of tooling download automation present the most benefits when you automate all of your development environment provisioning, enhancing consistency across fresh installs in your systems. As an example, you can take a look at my dotfiles project, for reference.
Once you have Node and the other tools you'll need, use the command below to clone this repository and install all of the dependencies:
curl https://raw.githubusercontent.com/buildfirst/buildfirst/master/install.sh | sh
If you're on Windows use install-dos.sh
, instead.
That's it! You are now free to roam the sample directories and follow the instructions in each of them!
Manual installation instructions can be found here, but you shouldn't need any of that.
To run an example, read its README.md and follow the instructions I've placed there. I tried to make them as straightforward as possible, but sometimes they might not match the examples in the book to the letter.
There are some examples here that you won't find on the book, those will generally be a bit longer: exactly the reason why I didn't include them in the book. Although the code itself might not be present in the book, most of the explaining will definitely be there, rather than here.
Here is a complete list of the code samples found in this repository.
- Chapter 1
- Chapter 2
- Chapter 3
- Chapter 4
- Chapter 5
- Single Reponsibility Principle
- Information Hiding
- Context Scoping
- Hoisting
- Closures
- Prototypal Modularity
- Common.JS Modules
- Dependency Graphs
- Using RequireJS
- Compiling RequireJS during builds
- Browserify + Common.JS
- Angular.js Dependencies
- Leveraging Bower Packages
- Adopting Component
- Automated Component Build Step
- Circular Dependencies
- Harmony through Traceur, using Grunt
- Chapter 6
- Chapter 7
- Chapter 8
- Your First
tape
Test tape
In The Browser- Arrange Act Assert: Testing An Event Emitter
- Spying on Function Calls
- Proxying Your Dependencies
- Fake
XMLHttpRequest
Requests - DOM Interaction Testing
- Testability Boulevard
- Grunt
tape
Automation (Node) - Grunt
tape
Automation (Browser) - Visual Testing
- Google PageSpeed Insights
- Yahoo YSlow
- Your First
- Chapter 9
- Appendix B: Introduction to Grunt
- Appendix C: Picking Your Build Tool
This is the list of releases to date. You can feel free to simply clone master
, to get the most up-to-date version.
You can find the repository up on GitHub, which contains the latest updates to the samples, and interactively renders the Markdown code in this text, displaying images, making code prettier, styling the text, and letting you follow links.
If you run into any problems, please create an issue here. Maybe it's something that needs fixing. If you feel like contributing, that's awesome! Just fork this repo and create a pull request with your fixes or improvements.
Feedback about the book itself should be posted on the Manning Online Author Forum. You can drop me a line at buildfirst@ponyfoo.com if you want to leave me a more personal note, just say hi, or grunt at me about my failure to amuse you. I'd love to hear from you!
You can also find me blogging at Pony Foo. My Twitter account is @nzgb, and I enjoy people stalking me over the Internet!
Let the #buildfirst revolution commence!