About this Book
- 302 pages
- Release: P1.0 (2014-01-14)
- ISBN: 978-1-93778-563-5
The rapid evolution of web apps demands innovative solutions: this survey of frameworks and their unique perspectives will inspire you and get you thinking in new ways to meet the challenges you face daily.
This book covers seven web frameworks that are influencing modern web applications and changing web development: Sinatra, CanJS, AngularJS, Ring, Webmachine, Yesod, Immutant. Each of these web frameworks brings unique and powerful ideas to bear on building apps.
Seven Web Frameworks will influence your work, no matter which framework you currently use.
Welcome to a wider web.
Q & A with authors Jack Moffitt and Fred Daoud
Why did you decide to write this book?
Jack: There are countless ways to solve problems, and programmers everywhere are discovering new techniques and building new languages in an effort to find better solutions. There are so many diverse ideas in all areas of programming, and having stumbled upon a few really eye opening ones over the years, I’ve wanted to share them with others.
There’s no one way to build a web app, and no two projects of mine have ever been built the same way. Web programming is unique in having hundreds of available frameworks and libraries; traditional GUI programming tends to have very few choices. With so many possibilities—none of them perfect—I wanted to expose the most interesting ideas and techniques I’ve found to a wider audience.
Fred: Programming in general and web development in particular evolves at a fantastic pace. I felt that this book was an excellent opportunity to break out of the mainstream and explore new ideas and discover different approaches to web development.
The goal with these frameworks is not to compare them which each other and pick which one to use for your next project. Rather, this book serves as a neatly organized exploration of frameworks that offer unique solutions to web development.
Why did you pick these seven frameworks?
Jack: Our goal was to pick frameworks that had unique and powerful ideas rather than just ones that were enjoying their moment in the spotlight. We explore minimalism, composition, static typing, state machines, declarative syntax, and more in the book.
In some cases, the frameworks we chose originated the ideas we wanted to explore, and in others, the framework is just the clearest example. We also tried to pick a set of frameworks that didn’t overlap much to make sure we covered as many ideas as possible.
Fred: After suffering through bloated and overly complex so-called “enterprise” frameworks, it felt refreshing to explore frameworks that let you get started with very little code and just “use what you need.”
What other frameworks did you wish you could have included?
Jack: I think the Play framework would have made a very nice contrast to Yesod, as it also leverages static typing with Scala and has a lot of features. I also wanted to sneak an Elixir-based framework in, but none were quite ready enough at the time since Elixir itself is still changing.
In another universe, we might have done the whole book on front-end frameworks, which are bringing a large number of interesting ideas of their own. There are some excellent and unique ClojureScript frameworks popping up, such as Webfui and Om, and on the other end of the spectrum, Meteor and Derby are doing interesting things for real-time and collaborative apps.
Have any interesting new frameworks appeared since you started writing the book?
Jack: My feed reader is full of saved articles about new frameworks, and more keep appearing every day. A few that I’m planning on exploring soon are Revel, which is written in Go, and Om, which is a ClojureScript framework built on top of core.async. Even though Elixir is a young language, web frameworks are pouring out, like Sugar and Dynamo, and I’ll be giving those a spin as well.
Fred: New frameworks keep appearing and it is hard to keep up! Two frameworks I would have liked to explore are total.js, and Pedestal, since Clojure is one of my favorite programming languages.
What You Need
You’ll need Windows, MacOS X or Linux, along with your favorite web browser. Each chapter will cover what you need to download and which language versions are required.
Contents and Extracts
- A Simple Domain-Specific Language
- Day 1: Building a Bookmarking Application
- Day 2: Creating Views
- Day 3: Adding Features
- Wrapping Up
- What Makes CanJS Unique?
- Day 1: Building Objects and Synchronizing Changes excerpt
- Day 2: Creating Controllers
- Day 3: Working with Models
- Wrapping Up
- The Big Picture
- Day 1: Using Dependency Injection
- Day 2: Creating Controllers and Views
- Day 3: Building Filters and Routes
- Wrapping Up
- Introducing Ring
- Day 1: Basic Towers
- Day 2: Patterns of Bricks
- Day 3: Other Ways to Build excerpt
- Wrapping Up
- Introducing Webmachine
- Day 1: HTTP Request as State Machine
- Day 2: Building Apps excerpt
- Day 3: Illuminating HTTP’s Dark Corners
- Wrapping Up
Comments and Reviews
—Jim Crossley Immutant core team member; principal software engineer Red Hat
The title implies a breadth-first analysis of some fairly disparate technologies, but there is a surprising amount of depth here, more than enough to emphasize the essential qualities of each one. If you’re a polyglot, or aspire to be, this book is a very large ball of awesome.
—Pablo Aguiar Software engineering consultant
Objective and clear. More than an introduction, it’s a head start! Just as wide and as deep as any modern developer would like. I definitely recommend it.
—Giles Bowkett Experienced developer and well-known blogger
—Michael Snoyman Creator of Yesod; lead software engineer FP Complete
I thoroughly enjoyed reading the book. In fact, the Yesod chapter even gave me fresh ideas on how to expose non-Haskellers to the strengths of a strong type system.