So I’ve been at the AngularConnect Conference these two days and these are some of the things I got from it:
TypeScript
You know something has become popular when all the speakers using javascript (and in this conf that was around 95% of them) use it. TypeScript is a language made by Microsoft that allows you to use classes and interfaces in javascript (and some other things) and then can be compiled into plain javascript.
The reason for it to become that popular is that being able to create interfaces or classes is crucial when developing big apps, I have been finding it increasingly difficult to deal with the codes complexity as my company’s project has grown and was starting to worry as it is to grow more, definitely, I need to adapt this technology (which is quite simple as it can be installed into Visual Studio quite easily, actually I think it’s already installed and I just need to start using it).
Also, a note on this, EcmaScript 6 also includes these features, but current javascript engines still don’t interpret most of ES6 so TypeScript is going to be popular for 2-3 years, maybe 4, until ES6 becomes ready. Maybe more if by the time it’s ready TypeScript has become much better than ES6.
Building BackEnds with javascript
I’m going to suppose you all know that you can use Node.js as a server (like IIS or Apache) running javascript apps. There’s many tools made for Node.js and some of them include package managers, builders and even server side frameworks to handle server requests. Those tools are still on their childhood and can’t compare with Visual Studio in my opinion, but that’s coming and it’s coming very strongly. One of them is called Meteor.
Building Mobile apps with javascript
Again, javascript is becoming a de-facto language, the community is even developing compilers that allow you to code an app using javascript and then compile a binary to be executed in iOs, Android or Windows Phones. This is partially combined with some Java libraries you can access from javascript and of course, it’s always been Java-style to code once and build for everyone. Note that just because it can be done doesn’t mean we want to do it, we need to determine first if it really suits our business needs, and let’s remember that the more devices you want to support, the higher the complexity of the system.
Angular 2
Many changes from Angular1 to Angular2, being the main one changes in the structure to build big apps. When I chose to use Angular I did it based on some test microsites I built and didn’t expect Angular to be so limited when it comes to build big apps. Angular2 has been designed to build big apps so for example instead than Directives we have Components (which fits with the ES6 community as they are developing a components system to install javascript tools as plugins into your project, something like installing a NuGet or Git package) in what they call “component-driven architecture”, and combined with TypeScript and its imports, exports and interfaces developing an Angular app with javascript is becoming much easier.
Material Design
It’s been talked about too, lots of effects and page transitions. Its core idea is code once use everywhere, so this is more based in the idea of making our javascript app responsive to the device and look well in different ones, so it can even change color, padding, or sizes depending on the device it’s running. Combined with the compilers you can make the most of this once we turn cross-platform.
Aspects with javascript
There’s a library, aspect.js, which allows you to do Aspect Oriented programming with javascript now. Again, javascript is becoming something big, veeery big.
Testing
Also, more things coming to Protractor (end to end testing) and Karma (unit testing). The community has made a decision around some options we had around and Jasmine is going to be the library to be used, it’s the one I’m using at Protractor as I already noticed, unfortunately, all my unit tests are written using Mocha so I’ll need to migrate those at some point :(. Also, some extra libraries like Co.js and ES6 generators can help a lot.
Debugging
Yes, Chrome and the rest of browsers have very nice debugging tools but some people don’t have enough and are doing even more. There’s a tool called Batarangle to debug specifically Angular2 apps which will help on tracing it’s life cycle events and other things. Can be installed as a Chrome plugin and adds a tab on the dev tools.