 Hi, everyone. I'm zack, and you may recognize me From such tree house shows such as php for word press, actions, Hooks and filters for word press, template hierarchy, theme Development, and on and on. I am not jason cypher. I did not do any ruby on rails courses at tree house. But if you did, do you recognize a smile? Any of you take courses on tree house? Cool. Nice. So today I am super excited to talk about the hotness in our Community of javascript, and I have kind of the overarching talk Of the track today that's going to try to take a step back and Look at some use cases and overall information about what Each of these presentations is kind of going in depth into today. Before my time at tree house, I actually taught javascript At the university and high school level and dating way back to When jquery first came out and then when i went on board to tree House was when node was coming out and javascript hit this huge Renaissance and now post tree house turning back into it and Re-learning it deeply. Again, it's a whole new World and these libraries and frameworks make up a big part of that. So as some of you may know, i'm currently working on this Course javascript for word press and it's a master level Taking from beginning javascript, super in depth, all the Functional programming, understanding the scoping and Everything that the early talk went into today of advanced Javascript topics and all the frameworks and these things. And so i came into this, i started this project right at Word camp u.s. In december and so in this time frame has Been the time frame up until now that i've been Re-deeply exploring this and some of this talk is to Explain or share some of the things i've learned in this Process of building this course and making decisions along the Way and some of it is stuff i've gleaned from i have like 30 advisors for this course that are people like josh that Are doing this kind of day in and day out and have some of That experience so super excited about that and sharing Some of what i've picked up from them along the way. So let's start with some rough definitions of what a Library and a framework is and we're using the little let There because it could change, right? yes, six humor, we all Get it. It's kind of funny because this definition Shifts and changes and there are kind of some fluctuating Definitions for this and some overlap in terminology used. Now most library or framework authors will tell you this Is a library or this is a framework but then you'll see In the community of reference to this as a framework or this as A library and it's not always consistent and you don't even Sometimes people don't even use the words that the creators say This is what it is. Very roughly, very loosely i'm Going to call a library just some pre-written code that you Could call in and use in your project and we're going to Compare that with something, a framework which will include Libraries but it's also going to dictate how you Structure your code or it's going to say you know what, this is The approach that we think is most efficient so in order for you To get all the magic that we have built in to our framework You've got a code, you've got to organize your code and you've Got to write your code in this way and that has various Pros and cons that we'll look at as we go through these Examples although by definition the only one that i'll Talk about today that calls itself a framework is angular. So the rest are kind of self-defined libraries. So ideally you want to make a use case every single project on What is the best tool for the job, right? this is an ideal World, you'd have enough time to research, you'd have enough Time to learn what it is that you need, make all the Mistakes and roll out just in time for production and the Deadline, right? this is one ideal setup of when you're Determining what your use cases should be. Another is that some individuals or agencies will decide, you Know what, we need to pick one because we're rolling this stuff Out all the time and we can't decide for this project we're Going to use this, for this project this and it's like we Just need a good overarching one and this is something that's Very common as well so as i'm going through these today This might be something that you're probably thinking about In the back of your mind as a sole proprietor or maybe Somebody at an agency level that's trying to Standardize some things. There are definitely some Different reasons for why you would do this. Unfortunately one of the biggest reasons is because it's the Latest hotness and we just want to be working with that. You may be using something like a single page admin Interfaces within the word press dashboard so if you're Going to be building something like that your use case is Very different than a theme developer or someone who's Building sites and maybe you want to speed up some stuff by Pulling things into local storage or maybe you want a nice Little instant search box that's better than what comes by default And you just want to add that little component. These are two different extreme use cases and potentially you Might use different tools for each of these. There are also a lot of things with cross browser issues Supporting e s 6 and e s 7 versions maybe helper functions That you might write over and over again. You might want performance or data binding a jacks like you might Want something that works with your testing library. There are all of these different factors when it comes to Breaking down use cases. So let's get into some of these Libraries specifically and it all starts with j query. I used to teach high school and we'd always tell the Freshmen, we'd call it hay query, Cessus and html and we'd see how far into the semester we can Get them to call these. So i'm kind of used to referring to Them as such. So i think most of us know why we Start with j query. It came out at a time when e s 6 was A serious thing you had to battle with on a regular basis. Ajax was something that was kind of brand new and most People were not comfortable or because of other issues was it Good to necessarily code it. From scratch there weren't the Same selectors in j query or i'm sorry in java script to be able To get whatever elements you want. So for this reason it served a Really great purpose and it also gave a lot of us an access point To java script to do things that we couldn't before and in my Opinion this is amazing. But today the opinions on j query They range from straight up j query bashing and bullying to Maybe a more practical example of i'll use it if it's something Smaller here and there. But definitely there is a general Trend especially if you were to come into this and you're like I'm going to become a java script full stack developer. That's my goal, that's the kind of work i want to be doing. J query would probably not be part of your work flow. There are some exceptions. For example backbone ships with j query. So if you're building a backbone out there's a good chance Unless you're putting in other tools in its place that You're going to be using it. So many slide shows and we don't Use slide shows anymore, right? But so many portfolio Sorters and word press plugins are all on j query. So there is so much j query in the plugin repository that it's Not going away anytime soon. And if you're doing small Little things and kind of the stuff that we've seen there Is still a place for it, i believe. But as word press Expands its community and sees more of the java script And this is not going to be something you have as much, Although you're still going to have to do some of the things That j query offered us. So if you haven't checked out, You might not need jquery.Com, i suggest it. It basically runs through everything that j query offers And it's going to break it down into how to code this with Pure java script as well as what alternatives exist. Because two of the arguments against using j query are Going to be one that it has a lot of bloat. You don't need all of this stuff, so let's cut it out. What was the other one? i guess you get a past j query. There were two of them, though. Performance. And i tie the performance in a bit with the bloat of it. But yeah, there are libraries that can do things more Concisely and faster than what j query was doing. Yeah. Okay. Let's move on. So let's say we removed j query from our stack and we're Learning java script and we're starting to build some things out And we have these goals and projects, we begin to rethink What it is that we need in terms of tools, libraries, and Things like that. And one of the things that you're Going to come across really quick and one of the most Common libraries out there are the functional and utility Libraries. Now, there's a big trend Towards functional programming in java script. And if you saw one of the talks earlier today about functions as First-class citizens, there's also a great functional Programming book for java script. This is a big trend. And two of the characteristics are using really small functions As building blocks for bigger ones and you're passing Functions to other functions and building up things like that. And the other is not mutating your data. So there's a trend definitely in java script right now. That is if you're working within a ray, you don't continually mutate That ray every time you want to. You use what some of these Functions I'll show you in a second to be able to pull out Just what you want or modify but you're passing it to a new Variable so that that data is never, you have kind of a Record of how everything has been modified as it goes along. There is some support in es6 for functional, for some Functional stuff that these libraries are also coming in And overriding or making faster or making available to us Before we can use them in the browser directly. So the two big ones here are underscore and low-dash. By the way, i'll put up the link to these notes and i have All the links and everything out so you don't necessarily Have to do this as you go. Some of the context underscore Was created by the creator of backbone. It also ships with backbone. And it was created to solve Some of the functional programming issues that exist. And when i show you the examples in the next slide, it will Make a little bit more sense. Now low-dash is a fork of that That has maintained complete backwards compatibility or Cross compatibility. So if you have underscore in a Project and you swap it out with low-dash, it will look No different. Most of the functions are the Same and most of the stuff that's been added is behind the Scenes, improvement and performance. It did some things like make chaining things together. You know, jQuery, if you want to say, like, do some css Thing, it's an html thing, it's a monclick thing, you Can just do dot this, dot that, dot that. So it improved that syntax a little bit. And i think for the full stack dev that's coming into This and learning this brand new right now, you're Probably going to be using low-dash. However, in the wordpress community, because wordpress Ships with backbone, which i'll get to more, it Also ships with underscore. So you can begin using underscore Immediately anywhere in your wordpress stuff because it Ships with it. And for this reason, i've kind of Made a choice to just stick personally with underscore and I'm pretty happy with that, although i'm aware that out in The world, there is kind of probably a bit more trend Towards low-dash. So let's check out some code. What we have in this first line is we're saying for each Post, log out the, that should not say item id, that should Say p dot id. Sorry, it's going to log out the Post id. The second one, map is a really Cool function and this is really big in functional Programming, basically when you have a group and an array of Items and you want to run a function on every single one of Those. This is doing that in one line. It's using the es6 arrow functions. So this is equivalent to saying basically for every single Post, create a function and pass the post to it as the Variable p and then render out my title. If you're working with the wordpress api, you can't just Call title, you have to call title dot rendered and then Convert everything to uppercase. Why would you do this? I don't know. I was just trying to think of an example That would fit in that space and work. But map is a big one. Filter is amazing. Does anybody not know about filter yet? Every single person in the room. Sweet. What this does is it takes all the posts and it returns all the Posts with the author equal to one. So if i wanted to pull out just... Categories is a little bit Weird because of how these are organized, but imagine that Category was one of the properties that you could easily Search that you could say, just filter through and return this. And in one line, you now have some really amazing stuff You could do if you wanted to reorder pages, if you wanted to Pull out certain things and you're going to see underscore dot Filter all over the place, especially if you're working with Something like back bone that has it in and i found it a Really helpful library. You could also do things like From all the posts, just give me the titles. There's a lot of code behind the scenes. You could write that in vanilla j s but this makes it a Lot faster. You could also do something like Sort by all the posts or sort by date and it's just Automatically update them. You also have, sometimes there's Issues in checking for whether something is not a number or Is it undefined or null or what's the difference between that And this gives you some helper functions for doing that as Well. So underscore also, if you Have low dash, it would look pretty much the exact same. So we have our functional programming libraries. Check. Good to go with that. And now we get to the issue of our app keeps getting Bigger. We've filled up enough one Page of code, a couple hundred lines and we know we need to Start breaking it apart. We need to start organizing or Code better. And this is where the Libraries and frameworks of back bone angular really come in Because they're going to tell you, look, this is how you Should probably organize things and structure your code, Some of them more than others. The most common structure out there you're going to see is Mvc and this has been talked about before and i'll talk about A bit more in a second. But basically it's telling you If you want, if you have code that has to deal with your Data, put it here. If you have code that has To do with displaying your content, like what's going to be On the front end, put it here. If you have code that's Trying to figure out what page you're on or what happens When someone clicks a button, you put all that stuff in Here. And the way it breaks down Into model view controller would look something like this. Let's say we were building kind of a mock word press interface, We'd write some custom functions called get post by ad, Get post by slug, save post, and save post to local. Now the thing that these functions all have in common is That they're dealing with our data. They're dealing with getting and setting our data. So in this mvc model, all your code, you basically Just save it in your model folder file. There may be more to it, and they may make you write this out Slightly different, but the bottom line of it is it's just Saying all your code that has to do with your data, put it In one place. Then we come to our view. So our view might look something like this. It's an html file called page.html, and we have markup That we'd expect, and this is a shorthand way of echoing Out some javascript into a page, common with things Like handlebar and back bone, some of those. So we'd echo these out, and this is our view. This is what's displayed to the user. Now all the other code ends up going in our controller. So this would do something like tell me what page i'm on, And then if i'm on the about page, go and get my about page Content, so get post by slug, which actually lives over in Our model, and then display the post, and then it's going To get the post content and echo out the page, and all of our Event listeners and things would traditionally go there. So let's see this all in a flow together. Someone comes to a page, we find out what page we're on. This is going to be in our controller. We make a call to get the page content. We're going to make the call from our controller, but the Actual code that gets it is going to be in our model file. And then we're going to make a call to display the content. That call is going to happen in our controller, and then Displaying it is going to happen in our view. This doesn't need to make any sense. The more you work with this, the more sense it begins to make. And if any of you have a background in php working with Mvc frameworks, like any of them that are out there, it's Going to be so helpful when it comes into working with a Framework in javascript that has this, because you're Going to recognize it immediately and you're going to be Home and it's sweet and it feels good to be home. So the problem is that most libraries out there are not mvc. They're mvstar. They're a bunch of different phrases for what C becomes. And what that means is that all your Code is either going in the model or it's going in the view, Or they made up some other place that it's going to go and They'll tell you based on what library or framework that is. And now, thanks to react, we have just the view layer, Which is helpful to an extent but is usually going to be added on With other components and features. So as we go through each of These backbone, angular and react, i'll kind of talk about where They fall in this scale. And vstar. Of course, we do have to worry about this yet another Framework syndrome and although two of these are libraries, This does exist. I don't know if you've seen this term. So backbone, angular and react. I also want to mention ember Quickly and i'll refer to that when i get to angular. Now, once you out of the box, these cannot all do the same Thing. However, there are common stacks Of technologies around each one of these. And with those stacks, like if you have your backbone stack Set up, your react stack, you could pretty much do the same Thing. Now, it's going to work a little Bit differently. It might interact with different Environments, like word press a little bit differently. But in general, you can pretty much get the job done. So when it comes to use cases, it's not so much a matter of Oh, well, this can, i can do x in this and i can't in this. The answer that might be, well, this can help you more get There, but you could still do it in this. You just have to do this, this, and this. Now, backbone is the oldest of the three. And in some ways, i'd say it's the most stable, because it is less Under current development than angular, which is going a big Transition, as well as react, which is constantly and newer And growing. And this is not a bad thing. This is great. They set out to solve a very Specific goal, and they pretty much solved it, and so now It exists, and there we have it. It also ships with word press. There are a few features in Word press, the media library, being one of them, that are Written in backbone. So because of this, word press has Backbone, and it's not going away, and because of backwards Compatibility, it's probably not going away anytime soon. And there's a really great, if you want to get into learning Some backbone, there's this tutorial that shows you, if You just look up media library backbone tutorial, it'll show You live and interactive how to start using backbone and Customizing and working with the media library and the pop-up Window and the dev who worked on it built this little course and demo Thing to help wrap his brain around what he was doing and Also share, and really cool. So in terms of backbone feature, We have it's falling into the mv star, because its main focus Is on models and collections, which are your data. And so when people talk about the strengths of backbone, The primary one and the primary focus is like, it's going to get Your data under wraps. It's going to make sense. All your data is going to be really organized. And what that means is, you know your data is stored in the Database, so it's not actually your data. It's all of the functions and all of the things that you Might want to do with your data are going to be stored and Set in a really good way, and when you want to get data And you want to update data, a lot of that backbone is Going to take care of for you. The views are something that are weaker. And this is one of the reasons why backbone is often extended With other technologies because this view layer, so remember, Our view is all of our code what it's going to look like. If you want to start doing really complex nested layouts and Having views within views, and this view talking to that View, and these two views both need to update when this Happens, that's where things can get a little bit complex. There's a solution to that i'll show you in a moment. It's also one of the smaller ones, and quoted as kind of The least opinionated. Because it's set out, let's Just help you get your stuff around your data locked in and Really well organized. There isn't a whole lot after that. So you could still build your apps in different ways. You could drop it in and use it with other technologies. I found it a little bit verbose in writing. And i think it also has a pretty lower learning curve than Some of the other ones because of what it's trying to solve. Personally, when i came into all this, back bone was my favorite. And i still kind of dig it quite a bit. Whether i'll use it, i'll talk about that later. So back bone and marionette. Marionette is the solution that Will solve a lot of the things that back bone has as a weakness. So if you're working on a back bone app, then you're Probably going to be using marionette or something like it. And this gives us better views. We could start doing nested Views. We could start doing more complex things. And like if we have a bunch of data, we could say anytime You have all this data, automatically use this view. So like our blog posts, we could hard assign that. We could do things like anytime you have this one piece of data. You always want to use this view and nest them together. It also has something called the shadow DOM which is kind of In reaction to what react is doing. And what this happens is instead of updating the page or The DOM directly, it has its own DOM that it creates. It updates that and then checks the two. And it will only update the pieces that changed. So let's say we have a side bar widget and it's counting down Days to the release of this course and seconds. And we wanted to make an update to that. We don't have to re-render the whole page. We could just do really small re-renderings of little Components on the page. And this, of course, is going to be faster. Because back bone is mv star, you have to put a lot of Code into your view that you would not traditionally with an mvc. So what that means is like, let's say when i click save post, What's going to happen? the code telling you what's going to Happen is going to be in your view. But traditionally, the view should really only have the Button. It shouldn't have the code telling you What happens when you click on the button. So marionette kind of abstracts that and says, okay, you Can now put your code kind of somewhere else and get into that Model a bit more. It also ships finally with Something called radio, which is a great feature that lets Views communicate with each other. Kind of this unilateral way. Moving on to angular. So angular got really big when Google came on board. I think there was this project. There was a huge, huge, angular kind of already existed. There was a huge code base and it took months to build. And then they implemented angular on a project and it Took like three weeks and a thousand lines of code. I don't know the full story, but that was kind of it when Google was like, okay, that's badass. Let's get on board with this. It's really blown up since then. It's kind of going through an interesting transition right now. It's in a rewrite between versions one and two. The good thing is that one is awesome and it's pretty Stable and even though they're working on two, one is Still kind of being fixed and updated little by little. So most of the examples you're going to see out there are Angular 1x. Angular 2 is a complete Rewrite of the code base. But they did it in an interesting way That you'll actually be able to slowly upgrade a 1x into a 2. You don't have to do it completely instantaneously. However, it takes into account a lot more es6 and the syntax Is different, how things are structured and even kind of how They're working through and how what feature, not so much What features but the structure of things shifts a little bit. So it's an interesting thing that's going on right now with it. If you're just getting into it now deciding, oh, do i just Learn Angular 1, do i learn Angular 2? i'd say there's More examples and it's easiest to get up and running right now With one and you'll be fine if you launch a production site With it, it's not going anywhere and there's a lot of stuff on it. It's a little bit tricky to do two completely right now but It's still possible, just a little bit less resources and stuff. So it's also going to be the biggest of the three and there's A big focus on things like you have the models and collections, You have the bindings, but you also have the views, sorry, Not mentioned up here, but you also have factories and Services which are ways of creating and letting your app Not only generate and create content or access it but Also be able to watch your app in kind of a way that you might Watch a link with an event listener and when someone clicks on it You can kind of watch your app and see when things are Happening, let's do these changes based on that. And because it's a framework, it has a lot more helper functions And things like that built out of the box. So let's say we wanted to prototype something really Quickly and we wanted to start filtering things and we Wanted to start sorting things whereas with some of the Other options, you might have to code out a bit more of that Yourself, like with react, which we'll talk about. Angular is going to have these features built in. And for this reason, if you're building a single-page web app, For example, it's a really solid and great choice. If you're trying to prototype something or if you want to get Something up and running quickly without writing a lot of code, It's a great choice. Like josh said, i'm a php developer. I love this stuff but this is a stack sitting on top of mine. I just want something that did everything and did it well and Worked and for that, it's a great choice. It's also bigger than the other ones and because you have this Mvc structure, you're kind of bound to that. So if you wanted to go about structuring it differently or Dropping it in in a different way, it's going to be a little trickier in that regard. I'd have a hard time telling someone not to use angular. But i will. So let's talk about react. The new hotness brought to us by the lovely folks at facebook. Ironically, i don't think it's connected but somehow i got off Of facebook at the same time i started learning react. I don't think there's a correlation. Also, thanks to things like calypso that was completely Built out in react and matt's not wanting to recommend a Framework but then at the very last minute saying, you Know, react is good. So it's definitely up and coming And it's got a lot of buzz around it. But oddly enough, it's just the view. So i was really excited about getting into react at first Because i'm like, oh, it's the hotness. It must be amazing. It must do everything. And then i start building an app with it and i hear this Term vanilla react. Just like you would hear vanilla js. And you're like, oh, yeah, you can't really do that with Vanilla react. And i'm like, oh, really? It's kind of basic. What about this? You can't really do that with vanilla react. So that was a little bit surprising for me. But it does one thing and it doesn't really well. And then it has other tools that will solve other things. So the idea is component-based. And what i mean by component is breaking your code and Your interface down into as small and as reusable parts As possible. If you go and you look at the Code base, and i've been told, please don't use this as an Example of how to code the best react app. But it's out there and we can check it out. You're going to see components within folders and Folders of components and all breaking down into this one Little file, like this link here or this little piece of code Here or this little bit here. And this component-based Architecture is really smart, in my opinion. And when it came out, you started to see articles, Like things backbone developers could take away from React and some of that has to do with this component-based Reusable stuff. And it was such a cool feeling When i started working on one project here and then i started Another project here and i'm like, oh, can i just reuse that? And you drop it in and it's like, boom. It feels so good. It just works. So this way of developing is an important part of it. It also has these things called states and props, Which are ways of nested components passing data Down. Unlike angular, which, and Backbone, which have two-way data binding, react has a one-way Data binding pattern, which i'll talk about in a little Head of myself. Sorry, that's the next slide. We have a very interesting something called the component Life cycle. And what this is, is the Ability to tell you when something loads, when something Changes and call different functions just on your little Component based on this going on. It has the shadow DOM. I'm going to speed up because we're running out of time here. So it can make small updates to the page and a lot faster. So one of the main things you hear about react is that it's A boost for performance. But it's not a framework. So it's not going to do a lot of the magical custom things For you. You're going to find yourself just Writing plain javascript or having to use other things in There. I'd say initial learning is super easy. But then you've got to learn something else. You've got to learn flux or redux because react does nothing With your data. It doesn't really help you there. I'm sorry. And this is where redux comes in. And it has a unidirectional flow. So instead of a bunch of stuff talking, if one thing Happens, it pings the whole app and it filters down and Says here's all the new data and anything that has to Make a little change, it will, but nothing else will change. And this unidirectional flow means that we have one place that Stores all of the current state of our app. And i really like this approach. So what do i choose? This is hopefully somewhat of a beginning of an outline for These. And it's tricky. It's hard for me to tell you as an individual or as an Agency or based on a specific project what to use. But i also wouldn't sweat it too much. Chances are, if you're Just starting off with this, you're going to end up learning More than one. I could tell you what i chose. Because what happened with this course is that i was originally Planning to teach backbone in depth, angular in depth, react In depth. And then as i got on, this course is now Like three months long and nobody is going to be able to Finish it and it's going to take forever. And then i have to update it when angular two comes out And all these other things. So the advice from the advisers That i got, and i was weary to follow this, but this again and Again i heard this back is just teach react. If you learn react in depth, it's not going to be too hard For you to then switch gears especially if you have some Basic understanding and get into some of the other ones. Likewise, there's not too much that these others can do that You can't also do with react. That said, when we're working in the wordpress ecosystem, it Gets a little tricky and i encourage all of you to come to Kevin's talk later and he's going to talk about why they Picked backbone to rewrite their ninja forms plug in. And there's some really specific reasons that relate just To wordpress for why they did that. Is kevin in here right now? There he is. Thank you, kevin. Also an advisor for the course. And i'm feeling pretty happy with that. And the more i go into it though, the more i go into react, the More i appreciate angular. And i still like backbone, but i Don't see myself picking it up again to use it because this Is kind of working and going forward. It's kind of the new hotness. I like that a little bit too. So that's where i am. It's also the last thing personal. Any of you that use calypso, you probably noticed when You go to add a new link, you can't search for your old Pages. You have to hard code links to your Own site. So i'm like, oh, that sucks. I'm going to learn how to fix that. I'm going to learn react. I'm going to go into the word like the calypso core and figure Out how to fix that. And now i'm at the level where i Could, but it's not really my top priority anymore. Just time wise, you know how that goes. So at the end, i'd say a lot of this comes back to javascript. For folks that i know who have gotten, if you don't, if You aren't going that in depth, angular is a great tool Because it'll help you do a little bit more out of box. But anybody that's gone depth into react, i hear, oh, i learned it. And then i realized, okay, now i just have to write more javascript. So knowing your javascript, well, knowing your functional Programming is going to be huge. And if you'd like to do that, My course is coming out with 4.5 in april. And it's going to go super in depth into all of this. So if that's something that interests you, the course is Going to be pre-selling in a few days. So check out javascript for wp.com. And thank you, there's multiple people in the room that are Advisors on this course. And thank you all for your help. Thank you all for your interest. And you can go to wp. And check out the slides and all the links. Yay, thank you, everyone. Yeah, we're going to have the other person come up and Start setting up. But if anybody has questions, I can answer before. He asked if i could talk about Electra. No, i can't. Oh, the thing i was going to mention about ember, it's kind of Like an uber angular, but the api means kind of a special hookup To work with wordpress. Yeah, the question was if i knew Anything about updates of underscore and lodash merging, And to my understanding, it's still, we'll just stay up to Date with everything lod- or underscore does, but it's Still a separate fork. I don't know much more. One last question? I'm sorry? Yeah, sorry. Ember was a huge Emission, and i meant to talk more about it, but i kind of Sped up at that point, but i would compare it to like an uber Angular, and if i was working and just building spas in javascript, I'd really consider it. But because of some of, it has a Very opinionated view on how your data and your api should Look, so there's some work that needs to be done just to Even hook up to wordpress. And you also wouldn't just Drop ember in and use it piecemeal. You'd build your whole thing and you'd ship that. So for the more decoupled approach, i think ember may be cool, But in the smaller scale, probably less likely. This is my thoughts. And now you're going to learn React so in depth. It's going to be great.