Alright, so, just by way of introduction, my name's Kyle Simpson, known as @getify online. If you're into that whole online stalking thing, getify.me has lists of everywhere to get ahold of me online. I am an Open Web Evangelist, which is a made up title. It's one of the benefits of being self-employed, is you get to make up titles that sound cool. So Open Web Evangelist is essentially, my goal is to evangelize the open web and it's technologies to as many people as possible. Two sides of that coin are teaching people and inspiring people.
So LABjs is probably my most well known project. It's about six years old. It's a dynamic script loader. It's designed to replace your script tag with something that's performance optimized, load multiple scripts in parallel, execute them in order. Script loading has sort of fallen off, in terms of popularity, most people don't think it's even necessary anymore. But I will predict that over the next 12 to 18 months, we're going to see a resurgence in script loading. There's several things happening in our industry: Namely HTTP version 2 is gonna completely change the rules about how we deal with delivering resources from server to browser.
So I think script loading is gonna get a renaissance and LABjs has just, sort of, been sitting there, waiting for these years. It's been stable for about four years, which I consider it to be its most important feature, but it will be updated once these new technologies start to come into play as necessary. It's been tested on the big websites, like Vimeo, Twitter and Zappos, so you can trust that it's reliable and a lot of sites use it. It doesn't get any attention, but it's used on an awful lot of sites. So you can check out LABjs.
On one end of the extreme, we have no logic in our templates, which is great in theory and on the other extreme, we have full programming languages in our templates, which lets you do what you want, but also trips you up and gives you a lot of rope to hang yourself. And, so instead of having one of those two extremes, I feel like we've been missing, asking the right questions about how can we find something in the middle. How can we find something that lets us do what we need to do, doesn't handcuff us too much, but does prevent us from doing the things we ought not be doing in our templates? So I don't know that I have the right answer to it in grips.
You may look at it and think it's absolutely awful and ugly and that's not even gonna hurt my feelings, but I do think I'm asking the right questions about what we should expect from templating, so. I'll also say that grips, we won't get into this today, but grips also has an answer for CSS, that is similar in spirit to something like the LAS or the SAS pre-processors, but comes at it from the angle of the lessons that we've learned in templating, rather than from, what I consider to be, a less solid approach with the pre-processors the way they currently do things, so, you can do all of that through one tool.
And finally asynquence. We won't cover this really a lot, right now, but, again, this will be something that's just sort of assumed and used in the code this afternoon. Asynquence is a flow control library. It allows you to mix in promises and generators and other high level patterns, like reactive programming, and some other things like that. So there won't be a lot of focus on it, but you'll see the usage of asynquence in the code that I've presented. I also do some conference talks and I won't talk about any of these, but just to point you to the fact that I have decks, my slides up online from probably a dozen or more different talks that I've done over the years.
Note: This course was created by Frontend Masters. It was originally released on 8/29/2015. We're pleased to host this training in our library.
- Primitive types: undefined, string, number, boolean, and object
- Special values: NaN and negative zero
- Natives: Regex and date
- Functions: toString, toNumber, and toBoolean
- Implicit coercion
- Explicit coercion
- Strings, numbers, and booleans
- Operators: Double equal and triple equal