Revel requires itself and the user application to be installed into a GOPATH layout as prescribed by the go command line tool. (See “GOPATH Environment Variable” in the go command documentation)
Default Layout
Below is the recommended layout of a Revel application, supplemented with domain entities and services. (version 1+)
my_gocode/
- GOPATH rootgo.mod
- The go.mod fileentities/
- domain entitiesapp/
- app sourcescontrollers/
- app controllersinit.go
- interceptor registration
models/
- app domain modelsjobs/
- app domain jobsservices/
- app domain servicesroutes/
- reverse routes (generated code)views/
- templatestmp/
- app main file, generated code
tests/
- test suitesconf/
- configuration filesapp.conf
- main configuration fileroutes
- routes definition file
messages/
- i18n message filespublic/
- static/public assetscss/
- stylesheet filesjs/
- javascript filesimages/
- image files
Prior to version 1 this is the default layout created
my_gocode/
- GOPATH rootsrc/
- GOPATH src/ directorygithub.com/revel/revel/
- Revel source codebitbucket.org/me/sample/
- Sample app rootentities/
- domain entitiesapp/
- app sourcescontrollers/
- app controllersinit.go
- interceptor registration
models/
- app domain modelsjobs/
- app domain jobsservices/
- app domain servicesroutes/
- reverse routes (generated code)views/
- templatestmp/
- app main file, generated code
tests/
- test suitesconf/
- configuration filesapp.conf
- main configuration fileroutes
- routes definition file
messages/
- i18n message filespublic/
- static/public assetscss/
- stylesheet filesjs/
- javascript filesimages/
- image files
vendor/
- vendor folder used for version controlGopkg.toml
- vendor dependency management file
app/ directory
The app/
directory contains the source code and templates for your application.
app/controllers/
- All controllers are required hereapp/views
- All templates are required here
Beyond that, the application may organize its code however it wishes. Revel
will watch all directories under app/
and rebuild when it
notices any changes. Any dependencies outside of app/
will not be watched for
changes, it is the developer’s responsibility to recompile when necessary.
Additionally, Revel will import any packages within app/
(or imported
modules) that contain init()
functions on startup, to ensure
that all of the developer’s code is initialized.
The app/init.go
file is a conventional location to register all of the
interceptor hooks. The order of init()
functions is
undefined between source files from the same package, so collecting all of the
interceptor definitions into the same file allows the developer to specify (and
know) the order in which they are run. (It could also be used for other
order-sensitive initialization in the future.)
conf/ directory
The conf/
directory contains the application’s configuration files. There are
two main configuration files:
app.conf
- the main configuration file for the applicationroutes
- the URL routing definition file.
messages/ directory
The messages/
directory contains all localized message files.
public/ directory
Resources stored in the public/
directory are static assets that are served
directly by the web server. Typically it is split into three standard
sub-directories for images/
, css/
stylesheets and js/
JavaScript files.
The names of these directories may be anything and the developer need only update the routes.
vendor/ directory
Used by the dep
tool for storing dependent packages (instead of using the GOPATH)
see versions. To initialize a vendor application see the Revel tool