Qt Quick Underscore.js: Difference between revisions
No edit summary |
No edit summary |
||
Line 1: | Line 1: | ||
h1. Using Underscore.js library in Qt Quick | |||
<blockquote>Underscore is a JavaScript library that provides a whole mess of useful functional programming helpers without extending any built-in objects.<br />(http://underscorejs.org/) | |||
</blockquote> | </blockquote> | ||
Unfortunately you cannot just import Underscore like:<br /><code>import "underscore.js&quot; as Underscore<code><br />due "immutable root object&quot;:http://doc.qt.io/qt-5/qtqml-javascript-hostenvironment.html#javascript-environment-restrictions | |||
Unfortunately you cannot just import Underscore like: <br /> due | |||
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. | ||
This is a diff output for Underscore.js version 1.4.4:<br /> | This is a diff output for Underscore.js version 1.4.4:<br /></code><br />1,2c1,4<br />< // Underscore.js 1.4.4<br />< // = | ||
--- | |||
&gt; // Underscore.js 1.4.4 | |||
&gt; // http://underscorejs.org | |||
&gt; // (c) 2009-2013 Jeremy Ashkenas, DocumentCloud Inc. | |||
&gt; // Underscore may be freely distributed under the MIT license. | |||
4,10c6,9 | |||
&lt; // &gt; http://underscorejs.org | |||
&lt; // &gt; (c) 2009-2013 Jeremy Ashkenas, DocumentCloud Inc. | |||
&lt; // &gt; Underscore may be freely distributed under the MIT license. | |||
&lt; | |||
&lt; // Baseline setup | |||
&lt; // -------------- | |||
&lt; var init = function() &#123; | |||
--- | |||
&gt; (function() &#123; | |||
&gt; | |||
&gt; // Baseline setup | |||
&gt; // -------------- | |||
58,65c57,64 | |||
&lt; // if (typeof exports ! 'undefined') {<br />< // if (typeof module ! &#39;undefined&#39; &amp;&amp; module.exports) &#123; | |||
&lt; // exports = module.exports = _; | |||
&lt; // &#125; | |||
&lt; // exports._ = _; | |||
&lt; // &#125; else &#123; | |||
&lt; // root._ = _; | |||
&lt; // &#125; | |||
--- | |||
&gt; if (typeof exports ! 'undefined') {<br />> if (typeof module !== 'undefined' && module.exports) {<br />> exports = module.exports = '';<br />> }<br />> exports.'' = '';<br />> } else {<br />> root.'' = '';<br />> }<br />1227,1228c1226<br />< return'';<br />< }<br />—<br />> }).call(this);<br /><code> | |||
Now you can use it in your project:<br /> | Now you can use it in your project:<br /></code><br />import "underscore.js&quot; as Underscore<br />// …<br />property var _: Underscore.init();<br /><code> | ||
Drawback of this approach is the following warning in application console: | Drawback of this approach is the following warning in application console: |
Revision as of 10:55, 24 February 2015
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&quot; as Underscore<code><br />due "immutable root object&quot;:http://doc.qt.io/qt-5/qtqml-javascript-hostenvironment.html#javascript-environment-restrictions
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:<br />
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:<br />
import "underscore.js" as Underscore
// …
property var _: Underscore.init();
Drawback of this approach is the following warning in application console: