Releases: ahmednuaman/radian
A new breed
After a while without any releases comes probably the most stable, performant and code-complete version of Radian yet!
Classes
JS and Coffee syntax reflect each other, now providing 100% code coverage and getting rid of those nasty, nasty CoffeeScript __extend
functions that litter the code. This means that before one would write a class in CoffeeScript like:
class extends RC
@register 'AppController', [
'$scope'
]
...
But now one would write it like:
RC 'AppController', [
'$scope'
'pageLoaderFactory'
'pageTitleFactory'
],
init: () ->
This provides better unity with the JS version.
Node deps
All the node dependencies are now up to date, including a refactored server.coffee
.
Bower deps
All up to date, again, and now running with Angular 1.2.16 (yes yes, 1.2.17 is out, but I haven't tested it yet, feel free to if you want).
The generator
I'm working on rebuilding the generator, updating it to deal with these new class structures and generally making it a lot less buggy.
Much love 🐻
All is calm with the force
Growning up
I've updated the dependencies to their latest version, enjoy!
Crawl like a baus
The page crawler.coffee
has been updated so that it now waits for Angular to load and for the app to settle before indexing begins. There's still a pageTimeout
incase the app takes too long to load, it's been set at 8 seconds, by that time your app should've loaded.
I've used a similar method to how Protractor waits for Angular to load and this should make indexing your app much faster.
JavaScript Attacks!
A patch release
This release simply makes a few updates to the JavaScript core code and updates to how this is then used in the generator.
The main issue was that the factories weren't assigning themselves correctly (due to a JSHint recommendation), that's now been fixed.
Also the watch task has been updated to support the proper JS path when the project is created via the generator.
And finally the grunt-angular-templates
has been updated to not use CoffeeScript to generate the partial if that's not used as a preprocessor.
The JavaScript strikes back
TL;DR:
This latest release of Radian is the first stable release. Yay! High-fives everyone. Radian now supports JavaScript in addition to CoffeeScript and all tests are good. Go use Yeoman to set up the generator and your new Radian project.
Radian is now stable, woop woop
This advent brings a few changes in how stuff now goes down:
- There's now full JS support, in that the site files have been written in JS and their tests too. The main differences can be see in a comparison between the
radian-module-helper.coffee
andradian-module-helper.js
. The CS version simply creates a container class within theregisterClass
method, whereas the JS version does it in theconstruct
method. It's all the same really. - The grunt and utility files are still in CS apart from the test files. They're put in the right place by the generator. Feel free to convert them to JS if you like.
- There has always been a coverage problem because of the CS compiling code, so if you run the JS unit tests you'll see that Radian has 100% coverage again. Just need to write a CS coverage tool for Istanbul now.
- The Compass SASS and SCSS tasks have been split to allow easier set up with the generator. This also solves a lot of confusion with commenting out
scss
in place ofsass
. - AngularJS has been update as well as a few
node_modules
too, everything seems pretty stable though. - In addition to JS support I've also added JSHint and the awesome JSCS too.
So what's next?
Probably add TypeScript support.
Return of the minifiers
TL;DR:
This release brings about a new way to deal with minifying assets before building your app. Since there are now multiple precompilers for CSS and HTML, it makes sense to remove the minifying and compression tasks out of their native areas and into a combined task where it doesn't matter which precompiler, if any you use.
A list of changes
- CSS that's generated by precompilers or by the user will now use
grunt-contrib-cssmin
to minify and move it into thebuild
folder (before this was being done bygrunt-contrib-copy
). - Jade will no longer compress the production HTML as
grunt-angular-templates
does this for us, regardless of whether it's vanilla HTML or Jade generated HTML. - Updated Angular and its modules to 1.2.8. I know that 1.2.9 is just round the corner so maybe I'll check what that's like and update again.
- Updated RequireJS to 2.1.10.
- Using
grunt-combine-media-queries
to tidy up thebuild
CSS instead of having the media queries littered all over the place. - It's now simpler to define a new sprite in
grunt-spritesmith
by simply adding a new folder to thetargets
array. - A
pageLoaderFactory
has been added to illustrate how to deal with the 'flicker' that's seen when a user visits the site for the first time and before Angular boots up. Thecrawler
andindex.jade
files have been updated so that if a user does not have JS enabled then they can still use the site (eg the loader mask is only added if the user has JS enabled and will, therefore, see the flicker).
Enjoy!
A newer hope
Little updates! Really v0.7.0 still counts.
A new hope
Done the following:
Added support for the following CSS precompilers (in addition to SASS)
- SCSS
- Less
- Stylus
Organised the assets
folder
So now precompiled and compiled files (except for Jade templates, I still need to work this out) are seperated, as such:
Before:
assets
├── css
├── img
├── js
├── partial
└── vendor
Wow, such mess.
After:
assets
├── coffee
├── css
├── img
├── js
├── less
├── partial
├── sass
├── scss
├── styl
└── vendor
Wow, such zen. This way the CoffeeScript and the Less/SASS/SCSS/Stylus files are out of the way of the JS and CSS files (respectively).
Tidied up the grunt
tasks
Also using grunt-contrib-clean
to do the dirty work before every build.
Added a Radian config file
The .radianrc
contains information that's used by the Yeoman generator, it looks like this:
{
"precompilers": {
"js": "coffee",
"css": "sass",
"html": "jade"
}
}
And just helps keep track of your config options for the generator.
Moved sprite generation away from compass
Since Radian now has the option of different CSS precompilers and some of them don't support sprite generation out the box, I've decided to use the awesome grunt-spritesmith
to do the dirty work. Each CSS precompiler folder contains a template.mustache
that sets up the generated sprite sheet CSS for that specific language.
What needs to happen next?
I need to work out the best way of dealing with the Jade partials. I'm sure I'll figure something out. I also want to stop using .html
when referencing a partial in Angular, just imagine how many bytes (5) would be saved for each partial that's currently referenced in the app! (12 x 5 = 60 bytes, woop!)
Enjoy!
Cleaner directive, factory and filter syntax
This release contains three new files:
These files are helper files to make creating directives, factories and filters quicker and easier. They follow the same concept as the radian-controller.coffee
and radian-service.coffee
files.
Here's an example of how to create a new directive using radian-directive.coffee
:
define [
'config'
'directive/radian-directive'
], (cfg, RD) ->
RD 'stub', [
'$rootScope'
], ($rootScope) ->
templateUrl: cfg.path.partial + 'directive/stub-partial.html'
restrict: 'A'
replace: true
scope:
items: '=ngModel'
link: ($scope, $element, $attrs) ->
It used to be like this:
define [
'config'
'angular'
], (cfg, A) ->
stubDirective = () ->
templateUrl: cfg.path.partial + 'directive/stub-partial.html'
restrict: 'A'
replace: true
scope:
items: '=ngModel'
link: ($scope, $element, $attrs) ->
app = A.module cfg.ngApp
app.directive 'stub', stubDirective
So now it's a lot cleaner and faster, and as the bulk of the creation logic has been moved to a static helper (the radian-module-helper.coffee
) it means there's also less memory overhead.
Enjoy!