150 likes | 319 Views
FW/1 - Framework One. An introduction to the ColdFusion framework created by Sean Corfield. Presented by Ben Ellefson. About Me. ColdFusion developer for 9 years Twin Cities CFUG Manager Framework enthusiast
E N D
FW/1 - Framework One An introduction to the ColdFusion framework created by Sean Corfield. Presented by Ben Ellefson
About Me • ColdFusion developer for 9 years • Twin Cities CFUG Manager • Framework enthusiast • Experience with Fusebox, Model-Glue, Mach-ii, ColdBox, ColdSpring, Reactor and now FW/1 • Disclaimer: Mach-ii fan
What is FW/1? • ColdFusion MVC Framework • Lightweight – single CFC file (1700 lines) • Convention based instead of configuration based • Flexible code organization
Why Sean made FW/1 • Dissatisfied with current application frameworks • Too bloated • Too complex • Requires XML • Dependent on configuration • Too much overhead for simple apps
Simple Application • org • Contains single framework file • views • Contains section folders • View cfm files within each folder • Application.cfc • Extends org.corfield.framework • Index.cfm • Blank
Standard Application • controllers • Contains cfc for each section • layouts • Contains cfm for each layout • services • Contains cfc for each service
FW/1 URLs • All links direct to /index.cfm • Pages access using ?action=section.item • Section = name of folder within views folder • Item = file within views/section folder • SES URLs available • /index.cfm/section/item/name/value
Controllers • ?action=section.item looks for the method item() in /controllers/section.cfc • Passes the request collection “rc” as a single argument. Struct containing url and form variables, plus more. • Automatically calls before(), startItem(), Item(), endItem(), after() • Controllers are cached, cleared with ?reload=true
Layouts • Multiple layouts are available • View Layout: /layouts/section/item.cfm • Section Layout: /layouts/section.cfm • Site Layout: /layouts/default.cfm • Layouts cascade from view to section to site • Cancel cascading by setting request.layout = false • #body# contains current rendered view
Services • Services called from controller by fw.service(“cfc.function",“variable") • Results placed in requet collection “rc” with variable name stated in the call
Views • Receive the request collection “rc” from the controller to display variables populated by the service. • View file called is automatically determined by the action (i.e. section.item) • View file can be changed by calling setView() or setLayout() to call a new action.
Critique • Hard to find information • No framework website • Documentation only found through Corfield’s Blog • No community around FW/1 • Very little found via Google search • Framework not compatible with CF previous to 9.0.1 • Conventions assume small app and do not allow for deep nesting of folders.
Critique • Sample and Skeleton apps are poor • Filled with bugs • Too simple to understand how a full app would be built with FW/1 • No comments in code • In 6 hours testing for this presentation, I was unable to build one page that had a query in the service passed to the view to display.
More Information • Available for download at http://fw1.riaforge.org/ • Free for use under the Apache 2.0 License • Latest version requires ColdFusion 9.0.1 • Documentation at https://github.com/seancorfield/fw1/wiki