I just uploaded my @meteorjs ready-to-use boilerplate app (Blaze + FlowRouter) on @github, with a bunch of handy functions. Feel free 2 share / fork / star it !
reactive window resize
20+ functional programming functions / aliases
non-global session reactive dict
10+ useful global helpers
20+ ready-to-use utility functions
7 pre-installed packages
30+ packages ready to be installed (just need to uncomment them)
All in ES6
Feel free to give me your opinion about it, Iād like to improve it with as much useful generic functions as possible !
Just started looking, nice idea and nice work. Got this error: Error: The babel-runtime npm package could not be found in your node_module directory. Please run the following command to install it: meteor npm install --save babel-runtime
Yes, npm modules arenāt uploaded with on the repo, so you have to do a meteor npm install.
Donāt hesitate to share your thoughts or submit PR. Id like to strengthen the repo to make it a really solid boilerplate in order to save dev time to those using it
Other meteor devs might have good habits / modules / generic handy libs to share to make it more and more useful !
I like your approach and that you are sticking with Blaze. Question: why do you have in index.js file that imports the associated view.html and view.js files? I see this on the home and main layout ui folders.
Also, for those of us that forget or donāt think about it - maybe a reminder in the readme about running npm install.
Well, actually, I also developp with React, but as this boilerplate is mainly aimed to be used for one of my job (I train dev and IT teams about Meteor and associated technos), and that Blaze is still very much capable to very decently solve almost any problem, and that itās so easy to learn, so when I provide professional training, Itās a good thing to start with it.
And Blaze is still much better than react when it comes to fast prototyping (which is my other job), so, using it or not is really a question of need regarding the work to be done.
You are right, I add a warning right now to the README
With the index.js, I can write in my main.js : import '/imports/ui/components/navbar';
So, itās simply to makes things a bit more easy and readable in the main.js, keeping things as clear and simple as possible. I prefer that kind of import which is more react-like (I want to import components / modules, not each of its file one by one).
Donāt hesitate to star the repo if it pleases you
I did star it because I like your layout of the project but I ran into problems trying to use the first module - funcProg.js. Calling ātimestampā I get: āCannot read property āgetTimeā of undefinedā
Importing "now and today " work fine. But the def of timestamp in your code is:
export const timestamp = date => date.getTime();
Iām new to ES6 but I donāt think that is right. You donāt define date so we get the error. Besides, why would you use .getTime() anywhere in code since .now() is twice as fast and gives the same result? To use the .getTime() the Date object has to be created with a new Date() - like you did with your today() function.
do you include these for folks who donāt want to use moment.js?
Well, I myself use all these Date functions rather than momentJs in most cases. The reason is simple : Iāve always been less than a potato when it comes to working with Dates. So, like with everything that upset me because Iām not understanding it easilyā¦ Well, I recode it myself until I get the mechanism and logic behind it well carved in my brain cells
Iāve only finished to extract that boilerplates from my production apps this morning, and havenāt thoroughly test all of it yet, so it is possible that there are some hidden bugs. If you find some, donāt heistate to open an issue so I can see it asap.
PS : Hereās the new timestamp code export const timestamp = date => ( ( date && date.getTime() ) || now() );
Just pushed my last commit : I added a super useful feature I forgot.
Changes to globals ( /both/_globals.js )
Lodash
This app already has erasaur:lodash package installed and aliased to ā_ā instead of underscore
Lodash is known to have the same API as UndescoreJs, but with better performances, and more features
Meteor.user
I optimized the Meteor.user() function
It can now be used with a string as parameter to alias a findOne on a specific user
In addition, you can pass an array of string to automatically filter the fields you need in order to reduce the number of useless re-renders / autorun invalidation
Indeeds, the default Meteor.user() function return the whole user document, which means that any reactive computation would be invalidated if any field of the doc change, which can be very bad for debugging and performances, specially on mobiles
Use it like this :
Meteor.user() // return the whole current user doc
Meteor.user( āaUserIdStringā ) // return the whole specified user doc
Meteor.user( [ āfield1ā, āfield2ā, ā¦ ] ) // return the filtered current user doc
Meteor.user( āaUserIdStringā, [ āfield1ā, āfield2ā, ā¦ ] ) // return the filtered specified user doc
Last update for along time I think (v1.0.1). There is now everything I could think to untill now. Next patches will be purely new features I havenāt designed yet
Thanks for sharing this. Since I have not started a new project since 1.0, Iām using this as a starting point for my 1.4 project since 1) it looks pretty good, and 2) there doesnāt seem to be any other current boilerplates for using Blaze. Iāll let you know how it goes. I will be adding CoffeeScript, Pug (Jade), Stylus, and ViewModel to my version.
Do you have a preference for passing along suggestions? This thread or github?
First suggestions (preferences, really):
Add a notFound page for the router
create an image in public/img so the directory exists
show usage examples and reasons why to use them for some of the library and modules you have obviously spent some time creating.
Do you have any specific request for completing the docs about libs and modules ? They are quite a lot and it will take time to code examples for each of them (specially for the Functional Programming file).
I might start by the one others devs are the more interested in.
EDIT : I just pushed the 1.1.3, with meteor version updated to 1.4.3 + not found page + DDPLogging fixed