I’m thinking about building a series of modules and/or CFBuilder add ons to facilitate a more rapid web app development workflow. I would love some input from the community on what would work well for people AND if anyone is interested in collaborating on this open-source project, please let me know.
I know there are a variety of existing modules that might help out.
Some background: I have been using script-based CFCs, CF9 w/ ORM, and Backbone.js to build single-page web apps. Each app that I have made has required a lot of repetitive tasks before really writing any unique code. I noticed that much of this could be template-driven.
The goals of my project are as follows:
Support CoffeScript compiled to JavaScript (http://jashkenas.github.com/coffee-script/)
Support SASS for easier/more consistent CSS (http://sass-lang.com/)
Build in auto-minify/compression of CSS/JS
Automatically cache minified assets
Auto-generated RESTFUL handlers for ORM Entities
Auto-generated Backbone.js/CoffeeScript Models/Collections
The first four items look like they should be part of a build process instead of occurring at run-time and the last two look like something that could be accomplished with http://cfcgenerator.riaforge.org/ – although I use Excel :).
I don’t know that ColdBox modules are the right place… but, I’ll keep thinking about this problem.
Part of the reason I like having it integrated into runtime is when I am developing, I like having the ability to simply reload a page without having to produce a new “build”.
I’m thinking about having a WebAssets Plugin which would handle auto-minifying/compressing CSS/JS, compiling SASS/CoffeeScript, and caching. Have configuration that allows you turn off caching for development. Luis already has a minify plugin that would be a great base to use for this.
The auto-generation of the Restful handlers and backbone models/collections would definitely need to use a build tool. Do the vast majority of people on this list use CFBuilder or do many people use CFEclipse? If everyone (or almost everyone) uses CFBuilder, I can do a CFBuilder extension, otherwise, I might just make an ANT script with a CFBuilder front end. (if that even makes sense).
Any input and suggestions are welcomed. I may not take everyone’s advice, but I’ll certainly consider it!
This is why ant is so powerful, I have an ant script that actually compiles my code up and deploys it. Now it can either do it a number of ways and the best is to do nothing until you are ready.
For example, when developing locally I do what you do and test away and make changes, but the moment I want to test it in a staging environment, I can then run the ant script to create that build for me.
And it also does all the stuff you are trying to achieve as well, but I also have the luxory of a second machine I can use as a staging server now. Before I had to switch Virtual Machines, or have them both running depending on what other applications I need, but with 12gig of memory in a machine I can afford to be generous.
I haven’t really investigated Mustache fully, but looking at the demo how is it any different than just using cfoutput?
The syntax looks very similar to AngularJS - http://angularjs.org/, which is very powerful and has some similarities to other JS frameworks such as Backbone.JS