Skip to main content

Durandal 2.0 released

Rob Eiseinberg, the creator of the great MVVM framework Caliburn.Micro, has shown his JavaScript skills and build a Singe Page Application framework called Durandal.  A few weeks ago, a 2.0 version of this framework was released introducing a large list of new features and functionality.

What’s new in Durandal 2.0?
  • A streamlined core with a plugin model for official and community extensions.
  • Now lives side-by-side with other 3rd party scripts
  • A new router with no external dependencies. It supports parameterized routes, optional parameters, splats and query strings. The router handles hash change and push state, supports relative child routers, advanced deep linking hooks, convention-based routing, an event model…and more.
  • More powerful composition of screens, components and widgets. We’ve ironed out the kinks in composition by making the callback lifecycle more consistent and more granular. As part of the process we fixed bugs and extended it with new capabilities including: automatic activation, binding of activation data, inline views and templated view part overrides. There is no framework I know of on any platform that can do what Durandal’s composition engine can do. None.
  • Less “gotchas” throughout. Everything works more intuitively and consistently.
  • Two-Way Databinding to PLAIN JS objects. Use the new observable plugin when targeting ES5 browsers and stop having to create Knockout observables. Normal objects just work.
  • New Bower and Raw HTML project options.
  • VSIX support for VS2012 and 2013
  • A Super Kung Fu Mimosa template update, thanks to @dbashford, creator of Mimosa and @CraigCav.
  • An official TypeScript definition file.
  • More and better docs, including a fully deep-linked API doc, generated from the source.
  • Tons of bug fixes, new extensibility points and other improvements.
  • And, of course, there’s an upgrade guide for those moving from 1.x to 2.0.

image

So if you are still looking for a good SPA framework and you like Caliburn.Micro, Durandal would be a good choice for you…

Popular posts from this blog

Azure DevOps/ GitHub emoji

I’m really bad at remembering emoji’s. So here is cheat sheet with all emoji’s that can be used in tools that support the github emoji markdown markup: All credits go to rcaviers who created this list.

Podman– Command execution failed with exit code 125

After updating WSL on one of the developer machines, Podman failed to work. When we took a look through Podman Desktop, we noticed that Podman had stopped running and returned the following error message: Error: Command execution failed with exit code 125 Here are the steps we tried to fix the issue: We started by running podman info to get some extra details on what could be wrong: >podman info OS: windows/amd64 provider: wsl version: 5.3.1 Cannot connect to Podman. Please verify your connection to the Linux system using `podman system connection list`, or try `podman machine init` and `podman machine start` to manage a new Linux VM Error: unable to connect to Podman socket: failed to connect: dial tcp 127.0.0.1:2655: connectex: No connection could be made because the target machine actively refused it. That makes sense as the podman VM was not running. Let’s check the VM: >podman machine list NAME         ...

Cleaner switch expressions with pattern matching in C#

Ever find yourself mapping multiple string values to the same result? Being a C# developer for a long time, I sometimes forget that the C# has evolved so I still dare to chain case labels or reach for a dictionary. Of course with pattern matching this is no longer necessary. With pattern matching, you can express things inline, declaratively, and with zero repetition. A small example I was working on a small script that should invoke different actions depending on the environment. As our developers were using different variations for the same environment e.g.  "tst" alongside "test" , "prd" alongside "prod" .  We asked to streamline this a long time ago, but as these things happen, we still see variations in the wild. This brought me to the following code that is a perfect example for pattern matching: The or keyword here is a logical pattern combinator , not a boolean operator. It matches if either of the specified pattern...