Full Text Search: The Key to Better Natural Language Queries for NoSQL in Node.js
Just a short time ago, I wrote an article on qooxdoo's Virtual List, and its contribution to the realm of data binding and the challenges of handling of large data sets. Now, the makers of qooxdoo have continued to make strides in other areas of Web development and design with their newest release, version 1.4. I'd like to provide you with a rundown on a few of those innovations today.
Overview of qooxdoo
qooxdoo Version 1.4 was released in April of this year, around the same time as version 1.3. Whereas 1.3 was just an intermediary patch release to address bug fixes, version 1.4 not only includes many additional bug fixes, but also many new features and improvements.
qooxdoo Taps into Modern Browsers' Capabilities
Many modern browsers allow the user to apply a theme (also referred to as a "skin") to change the look and feel of the browser. Built into CSS3, themes simplify design by eliminating the need to rely on images for gradients, rounded borders or shadows. Some browsers even include interactive content that changes the way that the browser functions and adds varying elements to the user's internet experience.
To take advantage of these new capabilities, qooxdoo has introduced a new "Simple" theme. Moreover, the "Modern" default theme has been updated to also take advantage of CSS3 in newer browsers. Each theme utilizes a different degradation mechanism in legacy browsers: Modern falls back to the previous image-based theming, while the Simple theme has a bit less of a "shiny" appearance, but still looks plenty good.
HTML 5 Support
The new release comes with full support for the latest browsers, including IE9 and Firefox 4. HTML 5 support has also been improved and extended to include experimental wrappers to HTML 5 features such as Audio, Video, Geolocation, Web Storage, and Web Workers.
Low Level Framework
The selector is the HTML element(s) to change, and the url parameter specifies a web address for retrieving the data.
Conversely, the low-level $.ajax(options) function offers more functionality than the load(), get(), and post() higher level functions, but it also requires more thought and effort on the part of the developer to use.
While the qooxdoo low-level APIs do not include one for Ajax, it does provide several objects that are heavily relied upon by higher-level classes, but can also be called directly for low-level manipulations:
The classes contained in the
qx.bom.element package assists with the manipulation of DOM elements. Each class contains several
static methods that take a BOM element as their first argument.
The Document Object Model (DOM) is a tree model that represents the document in a browser. The classes provided by this packages allow you to query and manipulate all nodes contained in the DOM.
qx.dom package consists of three classes:
Element: manages children structures, inserts, removes and replaces nodes
Hierarchy: for querying nodes
Node: basic node creation and type detection
This package includes functionality to work with XML documents in a way that is browser agnostic. Its three classes are:
Document: for creating an XML document
Element: API to select, query and serialize XML elements
String: handles escaping and unescaping of XML strings
All of the above APIs will give developers more choices for low-level support in addition to JQuery, the established favorite.
Find out more about the Low Level Framework.
How to setup a Low Level Library.
Mobile App Support
Version 1.4 extends qooxdoo's object-oriented programming model and widgets into the mobile app for smartphones arena. It includes dedicated mobile widget libraries to create mobile apps that will run on both Android and iOS devices. In doing so, care has been taken so that code and application logic can easily be ported into more traditional web apps whose target devices are notebooks, laptops, and desktop computers.
Visit the mobile showcase to learn more about qooxdoo's mobile app widgets and features.
More Virtual Widgets
The Virtual List that I wrote about in my Qooxdoo Virtual List Widget's Most Impressive Features article was still considered experimental at the time. In version 1.4, it is officially production-ready. In fact, joining the virtual widget family are the Virtual SelectBox and Virtual ComboBox. Finally, a new experimental Virtual Tree has also been introduced.
Application-scope Environment Variables
More about qooxdoo's Environment implementation.
Built-in Unit Testing
Two testing tools that were introduced as a preview in the previous version, the Testrunner and Simulator, have been promoted to production-ready status. Based on data binding, the Testrunner comes with several different UIs: a rich user interface, a new lightweight HTML view, and a pure browser console view. More advanced capabilities include the use of spies, stubs, and mocks. The Simulator is qooxdoo's built-in solution for automated GUI tests using Selenium.
More information on the Testrunner.
More information on the Simulator.
qooxdoo's new 1.4 release has already been garnering some rave reviews. Based on my own experience with it, I can easily see why. From where I'm standing, the makers of qooxdoo have taken a really good JS library and turned it into an excellent one.