Finished full integration of Vue with Meteor Tracker

I have finished integrating Tracker with Vue. I think the result looks amazing. There are some internals we could continue improving, but I think that interface for developers works well.

To showcase it, I implemented TodoMVC in it. See this file for an example of Vue component using familiar Meteor concepts, like reactivity, subscriptions and methods. (And also some custom packages, to show how they continue working as they worked in Blaze.)

Some instructions how to use it can be found here. After more people tested it and more feedback, we can work on putting this into a package and more reusable form.

Also, this is on purpose very non-MVVM and trying to be as close to what experience with Blaze is. (So subscribing to data, calling methods to modify data on events, without any fancy multi-way data binding.) Those things can be future work.

Comments and feedback welcome.

This is all possible because of the amazing work by @akryum! It is just combining things he made in a bit different way.

One potential step (which I am not planing to do personally, but would invite somebody to do) is to convert spacebars compiler to convert Blaze template syntax to Vue templates, in a similar way how Vue allows to use Pug/Jade.

See this issue for more information.

22 Likes

This is awesome news! Thanks for the great work @mitar.

I am at a crossroads on an app I am working on and would be interested in your feedback.

I have an app that has been developed on Blaze and is ~90% complete. This is a mobile app that will be made available in the Android and Apple app stores. I now need to work on a tablet version of the App (very different UI and layout but shared DB). Based on the performance I am seeing with cordova / crosswalk I have been contemplating using react-native for the tablet version. There is very little animations other than page transitions and an off canvas menu in the tablet version of the app (mobile as well). How would the performance of Vue compare to react native for a more data driven app?

Do you know if there are any plans/examples how to make use of 1.5 async loading? After looking into akryum:vue-router2 it wasn’t immediately clear to me if that router supports this new feature.

Vue is an order of magnitude faster than Blaze, soI think even a Cordova app will be pretty decent. That’s what I’m going for, because I don’t want to split up my project. If your app isn’t that big though, and you’re going to have a totally different UI anyway, then you can’t beat the performance of a native app.

Yes, this should already work. I have not used in my TodoMVC example, because there is not much routing there. But dynamic imports work. See this issue.

2 Likes

And now also you can render Blaze templates from Vue, even block helpers: https://github.com/meteor-vue/vue-meteor/issues/225

4 Likes