In this section, we provide guidance how to go about developing a Qooxdoo application.
If you are an experienced Qooxdoo developer who has worked with version 5 of the framework: You can reuse almost all of your previous knowledge since version 6 of the framework is, with some small exceptions, fully backwards-compatible. The major change concerns the tooling, which has changed from the Python-based
generator.py
script to a NodeJS-basedqx
CLI. The python tool chain will still work for all 6.* releases. However, it has been marked deprectated and will be removed in version 7.0.0. Since we won't be able to maintain the old toolchain or provide support for it, we strongly recommend to use the new one for your projects. To convert your existing applications, please review our guide to migrate your applications to the new NodeJS-based tooling .
Our getting started guide should give you a first impression on how to quickly create an application skeleton. We suggest you play with this skeleton application and, with the help of the Demo Browser, the Widget Browser and the API Viewer, add some widgets to get a feel for how Qooxdoo works. Before you start working on a first prototype of your application, we encourage you to review the following points.
Compiler and CLI
Read this more detailed introduction to the compiler and the CLI and in-depth information on the CLI commands.
Development tools
Here's a list of IDEs, code editors and other development tools with support for Qooxdoo's API, features, and semantics.
Application file layout
Application code is organized in a particular directory layout which is necessary for the tool chain to work properly. See the details on code organization.
Code compilation and transpilation
In general you need to invoke Qooxdoo's tool chain, particularly the Compiler, before you can run your application. Qooxdoo has a Java-like approach to source code, in that it just "sits around" like a bunch of resources. With the help of its configuration the Compiler casts all these resources in a runnable application, e.g. by creating a specific loader that loads all necessary class code. Using Babel and its own AST parser, it compiles your source code into a state that is optimized and polyfilled for the target runtime environment.
To help you with this requrired intermediate step, Qooxdoo provides continuous compilation in the background and a built-in web server.
'source', 'build', and 'deploy' targets
You will usually develop your application to a so-called "source" compilation target. In this mode, individual source code is preserved, except where it has to be transpiled for the given target platform. This will make it easier to debug the source code, however, it will make the application load much slower.
Once you are satisfied with your application, you will create a more efficient version of it, using the "build" target. This version will be compressed and optimized, and will be all geared towards deployment and runtime efficiency. But it will be much less amenable to development.
When you have tested this version and are ready to deploy it to a production
server, you create the final version
using qx deploy
, which is the "build" version of your code without all the metadata
files that are used to speed up compilation.
Writing API documentation
If you follow Qooxdoo's API source code documentation rules, you get Qooxdoo's attractive API Viewer for your own code, free of charge. See our guide on how to write API documentation.
Testing your code
Qooxdoo supports a Test-Driven-Development paradigm as unit tests can be easily
added as normal Qooxdoo classes alongside your library classes. It comes with a
testrunner application which executes these tests either on the command line or
in a browser. See the
documentation on testing.
Solving common app development requirements
See the HOWTO for a list of tasks that typically need to be solved during the development of a Qooxdoo application.
Dos and Donts
Once you have a good sense on how to work with Qooxdoo, review the notes on Best Practices and Antipatterns which might help you to avoid common pitfalls.
Debugging
Qooxdoo has its own debugging system which supports the special features of the library.
Creating custom libraries
Once your application has grown beyond a certain size, or when you start a second application that could re-use some of the code of the first, you start thinking about factoring code out into separately manageable units. This is when you create dedicated libraries .
Contributing
Once you have a firm grip of Qooxdoo development and you have created your own libraries and tools, you might want to contribute to the project.