BoxLang 🚀 A New JVM Dynamic Language Learn More...
This is the ubiquitous Hello World application written in CFWheels.
As an application, this is the most simple app you could build. It consists of a single static page and a route definition to load up that static page as the default page. That's all there is to it.
\config
routes.cfm
\views
\main
index.cfm
The routes.cfm file tells the framework what controller action to
load as the default root route. If we look inside the routes.cfm page
we'll see a line that identifies the root route and where to send the
requst. In this app that is identified as main##index
.
Which basically reads as when the root route is called, send the
request to the index action of the main controller. In a typical
CFWheels request process the controller's action method could run some
arbitrary code, make calculation, interact with the database, or
whatever else we may need to do, but ultimately it calls the
corresponding view for the controller action. If a controller does not
exist or the action method of the called controller action does not
exist, then the framework is smart enough to skip the controller setup
and smiply load up the view file. The index.cfm is that page for our
simple app and is located in the main/
folder inside the
views/
folder. The names index, which is the action
method, and main, which is the controller name, are arbitrary and
could be anything you like as long as the root route setting is
updated to reflect the new names the app will continue to function.
As a Forgebox package there is some interesting things going on here.
The package contains the minimum files needed for this app to work
which is basically two folders the config/
folder and the
views/
folder. Note that in our finall running
application both of these folders contain more items and there are a
handfull of other folders the framework needs to funciton properly.
These folders are pulled in via the two dependencies:
"Dependencies":{
"cfwheels-core":"^2.2",
"cfwheels-base":"^2.2"
}
The core and base files are put into the wheels/
and
base/
folders respectively acording to these settings.
"installPaths":{
"cfwheels-core":"wheels/",
"cfwheels-base":"base/"
}
The next part of the package that is interesting is that your
application files are merged into the base files, and finally the
contents of the base/
folder is copied into the root of
your application and the base/
folder is deleted. This is
all acomplished via a script setting in the package:
"scripts":{
"postInstallAll":"rm base/box.json --force && cp config/ base/config/ --recurse && cp base/ ./ --recurse && rm base/ --recurse --force"
}
This lets us keep our package limited to just the files needed for our application and allows us to use the package management system provided by Forgebox and Commandbox to pull in the necessary core and base files need to complete the framework.
To install this package you'll need to have a running CommandBox installation. Then you can install this package with the following:
box
mkdir cfwheels-helloworld --cd
install cfwheels-template-helloworld
This could be shortened to a single command run in an empty directory:
box install cfwheels-template-helloworld
$
box install cfwheels-template-helloworld