
Introducing Aurelia - johnny_reilly
http://blog.durandal.io/2015/01/26/introducing-aurelia/
======
alxbrun
No pun intended against Aurelia, but this reminds me...

[https://twitter.com/iamdevloper/status/540481335362875392](https://twitter.com/iamdevloper/status/540481335362875392)

"I think I've had milk last longer than some JavaScript frameworks."

~~~
davej
Where's the pun?

This is the new version of a framework that has been around since 2012. I have
no milk in my fridge from 2012.

~~~
chrisdone
"areola"

------
hardwaresofton
If I read/watched correctly, what's really different about this framework is:

1\. Large focus on ES6/ES7

2\. JSPM

3\. MVVM as made popular by libraries like KnockoutJS (which Durandal was
built upon).

I think this is awesome. While I don't plan on rewriting an app I'm already
working on in it, I think the interface to the framework is very very simple
(which is refreshing), due in large part to the tight ES6 integration.

Also, I think MVVM is preferable to MVC (mostly because "controllers" are an
overloaded term and end up being VMs anyway), but that's just a personal
opinion (as is everything else I wrote).

~~~
monk_e_boy
Having tried nearly all the JS frameworks, I really like KnockoutJS. There are
a few bits missing from it, but for someone like me who doesn't want a 1 page
app knockout fits into a many page website really well. You can enhance pages
as you go. Add a few nice GUI bits, some ajax to load and save... knockout
makes it all very lovely.

But all the frameworks, the view syntax/binding gubbins is horrid. Hard to
debug, easy to make syntax errors. Bleugh :(

~~~
hardwaresofton
Absolutely agree. Every time I start a new project, I start with knockout,
then realize I need more of the bits, and then migrate to something else with
more "built-in".

On an app I'm currently developing, I've actually adopted the pattern of using
knockout with some other libraries (directory, for routing, mainly) and
actually have found relative success.

One thing I have been tossing around in my head though is creating a web
development _pattern_ (I'm really just avoiding using the word "framework"
here) that does this by default (and intentionally).

My vision for it is to be a marrying of knockout (for data-binding &
templating & components), director.js (for routing, I think pager.js, while
well intentioned, is too complex), and requireJS for async loading, with
everything but knockout being optional.

I'm thinking of calling it chainmail (because the power is in the
combination/linking together of the small libraries) -- would you be
interested in something like that?

Also, have you checked out the components feature of knockout lately? it's
awesome

~~~
benmorris
I'm curious if you've used Durandal. What you're describing is essentially
what Durandal is. Modular framework built on knockout and require. The router
in durandal works well and is one of the pieces which influenced Angular 2.0's
router from what I've read. Just glancing through Rob's new framework the
router also seems very similar to Durandal 2.0.

~~~
hardwaresofton
So I've actually taken a look and tried to read through Durandal's docs -- I
haven't actually used it in a project though (or even kicked the tires on it
in a TODO app or something)...

I found the docs really hard to follow, and they seemed really complicated
(and I didn't think it should have been)... It is entirely possible (and even
likely) that I didn't put in much effort. But knockout (and tools like it) hit
such a sweet spot for me because they are (almost) dead-simple.

------
egeozcan
I'm excited to see this. Durandal was (and actually still is) a joy to use and
coming up with something this advanced with a possible migration path is
amazing.

Small confusion: They chose to use 6to5 and jspm but jspm depends on Traceur
and there is even an issue[1] for supporting 6to5 on jspm issue tracker.
(Edit: Just discovered that they were answering questions on Gitter[2])

[1]: [https://github.com/jspm/jspm-
cli/issues/354](https://github.com/jspm/jspm-cli/issues/354) [2]:
[https://gitter.im/Aurelia/Discuss](https://gitter.im/Aurelia/Discuss)

------
spankalee
Despite the claim of supporting "WebComponents" I can't see any evidence in
the source that it actually does.

There are no calls to document.registerElement() in the framework or
templating repositories, and it looks like any element registration is
happening against a proprietary registry, so that Aurelia components won't be
available in standard web pages outside of the Aurelia framework, which would
be the exact same situation we already have with Ember, Angular, React, etc.

Can someone from the Aurelia team clarify this?

~~~
Offler
And Polymer.

~~~
spankalee
Unlike the frameworks I listed, Polymer creates true W3C custom elements,
which are instantiated by the browser, not the framework. Polymer custom
elements are interoperable with raw html, Mozilla X-tags, IBM Delite, Bosonic,
etc.

------
shruubi
I hate to sound jaded and cynical, but am I the only one who feels weird about
a new framework announcement containing information for getting training and
consulting? I understand that there is no money in releasing free frameworks,
but it seems a little soon to be selling consulting and training on an early-
access preview...

~~~
d357r0y3r
I would actually prefer that a framework be backed by some kind of business.
When it's just a guy moonlighting, you never know when he might disappear and
you've now got a production app that's being supported by "the community".

------
brentvatne
This looks a bit like Angular 1.3 and 2.0 to me - DI, binding and repeats look
like ng-model and ng-repeat.. I'm curious to see more when the full docs are
out though. No mention of isomorphism or a virtual DOM, seems to be a bit
behind the zeitgeist.

~~~
ZenoArrow
I don't know why you missed it, but it mentions both isomorphism (code that
can be run client side or server side) and the virtual DOM (web components,
etc...).

~~~
brentvatne
This is not mentioned in either the blog post or the docs, at least not easily
findable with a cmd+f

"Use some of the libraries on the server with NodeJS. i.e. DI." \- _some_ ,
and I'd expect an explicit mentioning of isomorphism if it were possible at
the moment to render it on the server side.

Shadow DOM != Virtual DOM. I mean the React-style Virtual DOM.

~~~
ZenoArrow
What are the main differences between the shadow DOM and the virtual DOM?

~~~
i_am_ralpht
Shadow DOM is a DOM structure that's hidden under a tag (for example, the
<video> tag has a Shadow DOM which provides the controls and timecode UI).

Virtual DOM is (typically) a pure JavaScript object-based DOM representation
that gets somehow flushed to actual DOM (or to WebGL or anything else). You as
the programmer use the Virtual DOM directly and try to avoid talking to the
real DOM underneath. Virtual DOM has a few advantages, but the one that stands
out in today's browsers is limiting DOM thrashing where you query the DOM
(requiring an expensive recalc) and then modify the DOM (invalidating what was
recalc'd) in a loop.

------
coreyoconnor
After reading through a lot of blah:
[http://aurelia.io/docs.html](http://aurelia.io/docs.html)

------
ttrashh
We use Durandal as our SPA framework and we love it. So glad to see this. Rob
knows how to write a framework.

------
bigethan
Is this like Angular in that it can't be run on a Node/io.js server to
generate HTML? Any isomorphic plans for it's future?

------
nwah1
From a development standpoint, it reminds me of Silverlight and WPF. I'm very
happy to see this. MVVM is a simple but powerful pattern.

~~~
moomin
If you used Caliburn, it should. The same guy is behind both.

------
skrowl
So this is why he bailed on the Angular team?

~~~
muraiki
He wrote a blog post explaining his reasons for leaving:
[http://eisenbergeffect.bluespire.com/leaving-
angular/](http://eisenbergeffect.bluespire.com/leaving-angular/)

"I am not saying that Angular 2.0 is going to be a bad framework. What I am
saying is that it is no longer fundamentally the same thing I was originally
hired to help build nor is it compatible with my vision for the future. It is
no longer the best path ahead for the existing Durandal community and it also
isn't the best choice for anyone who has used my other frameworks and wishes
to migrate to the web."

------
optimusclimb
YET. ANOTHER. Javascript framework.

This is what people are talking about in countless blog posts (that also make
their way to the front page of HN.)

So glad I'm not a front end dev trying to keep up with this world.

~~~
judah
There are two sides to it: yes, new frameworks and new stuff to learn, and
that can be overwhelming.

On the other hand, rapid evolution leads to better ideas, keeps your mind
fresh as your learning never ceases, and an opportunity to improve yourself,
keep your career in demand, and generate more income for yourself.

Example: when I started web dev, client-side code was basically a giant
function containing browser-specific DOM manipulation.

Today, client-side code is arranged in modules with single responsibility,
well-defined application architecture, easy to test, easy to modify or extend,
the app logic cleanly separated from the UI.

Rapid evolution also keeps the mind fresh. You're continually learning new
concepts, absorbing new ideas. This helps me enjoy my job; I'm always
learning.

Rapid evolution keeps my skills in demand, too. My last 2 gigs have been
because I learned Angular. I'd be hard-pressed to find work if I was still
building web apps like it was 1998.

------
netfire
Looks interesting. It would be nice if they were more specific about what
browsers the framework supports though. There's a phrase that you can
"Leverage the technology of the future but target today's Evergreen Browsers."
That's a nice bit of copywriting, but it doesn't instantly tell me which
browsers are supported. It would be nice to have an official supported list.

~~~
sanderjd
Here's[0] an article from the author of the OP defining the term. It just
means "browsers that auto-update without user intervention".

[0]: [http://eisenbergeffect.bluespire.com/evergreen-
browsers/](http://eisenbergeffect.bluespire.com/evergreen-browsers/)

------
niix
Been using Durandal for awhile in production, looking forward to the next
chapter.

------
bronson
The video, the intro, the docs, ... None of them seem to mention testing.
That's a disappointment.

Anyone got a link on how to test an Aurelia app?

~~~
emilsedgh
From the homepage:

 _By combining ES6 modules with a simple, yet powerful Dependency Injection
Container, we make it easy for you to create highly cohesive, yet minimally
coupled code, making unit testing a snap._

~~~
bronson
Sounds great. Should be easy to demonstrate? (especially in a 30 minute intro
tutorial)

------
Linell
This seems really nice. Just looking through the first few links and pages, it
seems to have all of the nice things I enjoy about Angular. It looks like it
may have less of a learning curve too, which would be very nice.

------
hmans
We've reached a point where I don't even need to open links named "Introducing
[fancy sounding name]" to know that it's yet another Javascript framework.

------
j_baker
How good is the ES6 transpiler used for this? My experience with ES6
transpilers thus far hasn't been great. The feature support seems to be very
spotty.

------
dkarapetyan
That's how you do a client-side framework or any framework for that matter,
forward thinking with backwards compatibility and no custom nonsense tying it
to a specific language (AtScript).

~~~
TheSisb2
Is this backwards compatible? I thought Evergreen browsers meant IE10+

~~~
dkarapetyan
I meant in terms of the design of the framework and the emphasis from day 1 on
making everything modular and interoperable with the rest of the JavaScript
ecosystem, e.g. jQuery, Knockout.js, etc.

------
mp3geek
Not an impressive site..

Error 1008 Ray ID: 1af3b92032e50713 • 2015-01-27 08:54:00 UTC Access denied
What happened?

The owner of this website (blog.durandal.io) has banned your IP address

------
kin
This is a small thing to point out but I wish they picked a name that were
easier to type out. aurelia-* is so much more verbose than ng- _

------
whatsgood
vs enyo.js?

------
sunsu
My wife's name is Aurelia and its really weird to see a web framework named
this. Its like naming a framework: "Thomas".

Example:

Me: What tools/framework did you use to build the app?

You: Aurelia.

Me: Oh cool, I used Thomas.

You: Yeah, I thought about using Thomas, but stuck with Aurelia because it
offered better features.

~~~
greenpizza13
My wife is named Julia.

. . .

And my brother is named Lisp, so it gets weird. :).

~~~
agumonkey
Less than a sibling called PHP though.

~~~
yuchi
Please don’t get me started on my cousin. His first name initials are BF, so…

