Qt Quick Underscore.js: Difference between revisions

From Qt Wiki
Jump to navigation Jump to search
(Add "cleanup" tag)
(Convert ExpressionEngine links)
Line 8: Line 8:
Unfortunately you cannot just import Underscore like:
Unfortunately you cannot just import Underscore like:
<code>import "underscore.js" as Underscore<code>
<code>import "underscore.js" as Underscore<code>
due "immutable root object":http://doc.qt.io/qt-5/qtqml-javascript-hostenvironment.html#javascript-environment-restrictions
due [http://doc.qt.io/qt-5/qtqml-javascript-hostenvironment.html#javascript-environment-restrictions immutable root object]


The workaround is to modify ''underscore.js'' so that it returned underscore object via special ''init'' function.
The workaround is to modify ''underscore.js'' so that it returned underscore object via special ''init'' function.

Revision as of 15:34, 4 March 2015

This article may require cleanup to meet the Qt Wiki's quality standards. Reason: Auto-imported from ExpressionEngine.
Please improve this article if you can. Remove the {{cleanup}} tag and add this page to Updated pages list after it's clean.

h1. Using Underscore.js library in Qt Quick

Underscore is a JavaScript library that provides a whole mess of useful functional programming helpers without extending any built-in objects.

(http://underscorejs.org/)

Unfortunately you cannot just import Underscore like:

import "underscore.js" as Underscore<code>
due [http://doc.qt.io/qt-5/qtqml-javascript-hostenvironment.html#javascript-environment-restrictions immutable root object]

The workaround is to modify ''underscore.js'' so that it returned underscore object via special ''init'' function.

This is a diff output for Underscore.js version 1.4.4:

1,2c1,4 < // Underscore.js 1.4.4 < // = --- > // Underscore.js 1.4.4 > // http://underscorejs.org > // (c) 2009-2013 Jeremy Ashkenas, DocumentCloud Inc. > // Underscore may be freely distributed under the MIT license. 4,10c6,9 < // > http://underscorejs.org < // > (c) 2009-2013 Jeremy Ashkenas, DocumentCloud Inc. < // > Underscore may be freely distributed under the MIT license. < < // Baseline setup < // -------------- < var init = function() { --- > (function() { > > // Baseline setup > // -------------- 58,65c57,64 < // if (typeof exports ! 'undefined') { < // if (typeof module ! &#39;undefined&#39; &amp;&amp; module.exports) { < // exports = module.exports = _; < // } < // exports._ = _; < // } else { < // root._ = _; < // } --- > if (typeof exports ! 'undefined') { > if (typeof module !== 'undefined' && module.exports) { > exports = module.exports = ; > } > exports. = ; > } else { > root. = ; > } 1227,1228c1226 < return; < } — > }).call(this);

Now you can use it in your project:

import "underscore.js" as Underscore // … property var _: Underscore.init();

Drawback of this approach is the following warning in application console: