Qt Quick Underscore.js: Difference between revisions

From Qt Wiki
Jump to navigation Jump to search
(Decode HTML entity names)
(Decode HTML entity numbers)
Line 36: Line 36:
58,65c57,64
58,65c57,64
< //  if (typeof exports ! 'undefined') {
< //  if (typeof exports ! 'undefined') {
< // if (typeof module ! &#39;undefined&#39; && module.exports) {
< // if (typeof module ! 'undefined' && module.exports) {
< //      exports = module.exports = _;
< //      exports = module.exports = _;
< //    }
< //    }

Revision as of 15:59, 13 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.

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 ! 'undefined' && 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: