How do I get my helper functions to load first? (Meteor, Node framework)

In my Meteor projects I have several helper functions of the sort

helpers.js

var tagStr = function () { return this.tags.join(', '); };

articles.js

Template.articles.tags = tagStr;

listing.js

Template.listing.tags = tagStr;

Now, I can define the function in either articles.js or listing.js, and it won't work in the other one. Or i can define it in helpers.js and it will work in neither..

So, how would I go about loading my helper functions before the rest of the scripts? Preferably in "the right way".

Thanks!

i think what you are looking for is a globally available handlebars helper - i keep mine in client/lib/handlebars.js - the contents of the 'lib' folder will get loaded first

define each helper like so:

Handlebars.registerHelper("joinArray", function(array) {
  if(array)
    return array.join(', ');
});

you would then use this in any template html file like so:

{{joinArray tags}}

you can read more about handlebars helpers here handlebarsjs.com/block_helpers.html


this is the 'right' way IMO, but if you want to use normal javascript functions and not handlebars helpers, that works also


you'll need to place the commonly used javascript function in a file like client/lib/helpers.js and do NOT use the 'var' declaration prefix

like so:

thisIsAGloballyAvailableFunction = function(){...};

not like:

var thisFunctionIsOnlyAvailableInThisFile = function(){...};

meteor does a slightly strange thing to control scoping. anything with 'var' is local to the scope of the file it occurs in, anything declared without 'var' is globally available across the app

The answer by nate-strauser was correct and helped me find the right solution but now (Meteor 1.0) Handlebars.registerhelper() is deprecated.

Now it works this way (if anyone is still interested):

Template.registerHelper()

The rest as explained by nate-strauser.