Thanks BJ and Devin for looking at this. I think it is ok to remove the
redundant closure then. It always looked ugly :)
On 01/11/2016 11:36 PM, BJ wrote:
> Hi Devin,
> my plugin modules end up like this:
>
> ( function ( module , exports , console , setInterval ,
> clearInterval , setTimeout , clearTimeout , Buffer , $tw , require ) {
> ( function ( ) {
> /*\
> title: $:/core/modules/parsers/wikiparser/abstractwikiparser.js
> type: application/javascript
> module-type: global
>
> base class- individual wikiparser inherit from this class
>
> \*/
> ( function ( ) {
>
> /*jslint node: true, browser: true */
> /*global $tw: false */
> "use strict" ;
>
> var AbstrWikiParser = function ( specifier ) {
>
> exports [ "AbstrWikiParser" ] = AbstrWikiParser ;
>
> } ) ( ) ;
>
> ; } ) ( ) ;
> return exports ;
> } )
>
> so it looks like the IIFE is redundent.
>
> cheer
>
> BJ
> On Monday, January 11, 2016 at 1:01:10 AM UTC, Devin Weaver wrote:
>
> I was just curious about the use of IFE in the core plugins. Since
> using them as examples I felt the need to continue the style.
> However looking at how modules are handled in TiddlyWiki it seems
> that an IIFE might be redundant.
>
> For example:
>
> |
> /*\
> title: $:/plugins/my-plugin/plugin.js
> type: application/javascript
> module-type: startup
>
> An example startup plugin
>
> \*/
> (function(){
>
> exports.startup =functionstartup(){
> // Do stuff
> }
>
> })();
> |
>
> Since TiddlyWiki wraps code in a sandbox in order to manage the
> exports variable would it not be scoped in it's own /context/?
> Wouldn't this wrapping mean the (function() {…})() is redundant?
>
> This became a point of question for me while I was using Babel
> <https://babeljs.io/> which transpiles ES2015 (ES6) modules into
> CommonJS (which the TiddlyWiki code /mostly/ emulates). But unlike
> CoffeeScript it's output doesn't warp inside an IIFE. This is
> because Babel assumes that the files it outputs will be bundled
> with a module system like Browserify or AMD. TittleWiki is that
> bundling system using it's sandbox to evaluate plugin tiddlers.
>
> For completeness the above code would look like this in ES2015:
>
> |
> /*\
> title: $:/plugins/my-plugin/plugin.js
> type: application/javascript
> module-type: startup
>
> An example startup plugin
>
> \*/
> exportfunctionstartup(){
> // Do stuff
> }
> |
>
> Which outputs a file like:
>
> |
> "use strict";
>
> Object.defineProperty(exports,"__esModule",{
> value:true
> });
> exports.startup =startup;
> /*\
> title: $:/plugins/my-plugin/plugin.js
> type: application/javascript
> module-type: startup
>
> An example startup plugin
>
> \*/
> functionstartup(){
> // Do stuff
> }
> |
>
> So would this cause a startupfunction to be global? Or is the
> sandbox enough to prevent global pollution? And in the case of the
> later what is the benefit (if any) of wrapping the core code in IIFEs?
>
> --
> You received this message because you are subscribed to the Google
> Groups "TiddlyWiki" group.
> To unsubscribe from this group and stop receiving emails from it, send
> an email to [email protected]
> <mailto:[email protected]>.
> To post to this group, send email to [email protected]
> <mailto:[email protected]>.
> Visit this group at https://groups.google.com/group/tiddlywiki.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/tiddlywiki/3c1d9e6a-0693-4c04-926d-527ac52dc98c%40googlegroups.com
> <https://groups.google.com/d/msgid/tiddlywiki/3c1d9e6a-0693-4c04-926d-527ac52dc98c%40googlegroups.com?utm_medium=email&utm_source=footer>.
> For more options, visit https://groups.google.com/d/optout.
--
You received this message because you are subscribed to the Google Groups
"TiddlyWiki" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/tiddlywiki.
To view this discussion on the web visit
https://groups.google.com/d/msgid/tiddlywiki/BLU436-SMTP37F676F8168777007865D4CECA0%40phx.gbl.
For more options, visit https://groups.google.com/d/optout.