...
- Make sure that each widget is self-contained.
- The widget should expose public properties, methods and events. This ensures that your widget can be reused in other widgets.
- Divide responsibility ("granularity"). In general it is better to create a few smaller widgets with a specific function than one large widget with lots of user interface elements.
- Implement the "deepest" widgets first and work upwards towards the final functionality.
Avoid using experimental widgets as much as possible. The DojoX package was originally intended for this purpose.
- Check for existing widgets. Don’t reinvent the wheel, re-use as much as possible.
- Keep reusability in mind. Make sure your widgets can be reused in other widgets later on. Also write clear API documentation for your own widget using JSDoc.