Yes! If anyone is interested in helping with this, please see the following as a starting point:
Yes! If anyone is interested in helping with this, please see the following as a starting point:
Maybe they are focusing on React and Apollo with the hope that Facebook will acquire the team and technology. Vue would just distract from a strategy like that.
I’m not sure about that, I think they’re just tight on resources with too many fronts. It seems that if the community can support in providing the guide and tutorial material for vue they might endorse it officially.
When talking about view layer integration, at least when it comes to Vue, I think an important aspect is often overlooked - that the integration itself is actually quite thin. @akryum, a core team member of the Vue project, has done the work. vue-meteor-tracker is 261 lines of code and vue-component is approximately 1500 lines of code. The former gets us tracker integration and the latter enables use of Vue’s single file components with Meteor. It seems to me that these two packages really cover the most important elements of what is necessary between Vue and Meteor. And this is a good thing. The connection area between a framework and library should be small and well defined (and I’d call sub 2k LOC reasonably small here). Less chances of things breaking in the future and less worries about maintenance.
A good Vue integration in my opinion is not one which provides a lot of behind-the-scenes automatic connections between Vue’s reactivity and Meteor’s reactivity, but quite the opposite - a good integration is one where the link between Vue and Meteor is as small and deliberate as possible. So that the Vue code you write for a Meteor project would be as close as possible to Vue code you’d write with any other backend and the small parts of your code where you inject Meteor’s reactivity to Vue’s reactivity would be clearly visible and understandable. This will give you three major benefits. Firstly, you’ll be able to effortlessly onboard new people into your Vue/Meteor project from the vast pool of Vue devs that are not familiar with Meteor. Secondly, if you’d ever want to switch away from Meteor, most of your Vue code would likely be easily transferable to the new backend as it is not coated with a heavy layer of Meteor specific abstractions (an important insurance policy for most CTOs I’d say when an employee tries to sell them on Meteor). And thirdly, you need not worry about the implementaiton of the integration falling out of date since it’s only a small chunk of code and presumably easy to maintain, even if a completely new maintainer would need to pick it up. It seems to me that these two packages mentioned above have opted for such an approach and this is a really good choice in my opinion by @akryum .
People put value in ‘official support’ of view layers in Meteor to alleviate their fears that at some point an integration will be abandoned and they will be left in a bad place with their project. Taking the above into account, a good first step to address such fears with regard to Vue and Meteor would be a blog post by @akryum on the official Meteor blog describing what are the dots that he has needed to connect between Vue and Meteor to make the integration work. And importantly, describing that the integration is effectively very thin (you will not depend too much on him continuing to maintain that 2k lines of code) and that the integration is thin not because of lack of resources or commitment, but because this is the best solution that makes your Vue/Meteor project future proof and avoids vendor lock in and enables bringing in new developers quickly.
Also, a very helpful resource for me has been this repo by @efrancis . From the little contact I’ve had with him he seems a very nice guy. If we’d be able to convince @akryum to make the initial post describing the Vue-Meter integration itself, then perhaps @efrancis could follow with a blog post describing the choices he has made in his opinionated starter kit. Two very big ifs. But who knows, maybe if there’s enough peer pressure on the forums the guys will find the time?
This regarding communication. Regarding the Vue integration itself, it is likely that when more people pick up Vue with Meteor there will be a need to improve certain aspects of it. In my opinion this would be a good place for some modest crowd funded action, similar to what took place recently with mup here, if @akryum would be interested. Although I must say that one essential reason why Vue is as good as it is today is in my opinion that Evan You keeps the focus on things and filters out the good feature requests from the many bad ones. Having the same kind of filter on the Meteor integration would be essential to prevent it from bloating up. So crowd funding, if necessary at all, would require someone with authority (be it @akryum or anyone else) to be able to keep things lean and in focus as well.
@vooteles Thank you for taking the time to write this and break things down.
@akryum you have done a lot of the work already, please help us cross the chasm and make meteor the tool of choice. Also for people like me who depend very much on meteor (having learnt it from 4 years) and helped hugely by the simplicity of blaze, to have a front end layer like vue will just be amazing. The very best of all the worlds!
@hwillson you have always been there when we needed you, we need you again…
@abernix and others, we are waiting for a vue version of the meteor guide, to give us some faith that mdg will at least keep an eye out for vue and projects that run with it.
Thank you all!
Please keep me honest, but here is a proposal for moving forward with this. If the folks in the community who are using vue can show meteor some love by:
Then MDG can:
4. Support the vue/meteor integration effort (closing any open issues etc.)
5. Update their website to add vue to their main page
Thanks for catching this! sorry I’m a react user
Read this thread to find the answer:
Taking nothing away from @mitar’s efforts, bottom line, it’s going to be difficult for the community to get any traction on first-class Vue + Meteor integration without help from either the Vue team or MDG somehow (IMO).
I think @maxhodges point was, Laravel adoped one of the top 3 front end frameworks and user adoption when up as a result.
Yet Meteor will not devote resources to change out their front end* (for reasons @hwillson points out above), AND the community around Meteor doesn’t have the inclination/resources to do it themselves, hence user adoption is possibly not what it could have been at this point.
I have legacy applications on Meteor + Blaze, so I’m not going anywhere anytime soon. Also, love the enhancements to Meteor being worked on all the time these days, thanks for this!
*Note: I have my own opinons on the shift from Meteor to Apollo, and I’m just now starting to see MDG’s vision.
Thanks for the clarification @aadams I was the under the impression that there is a first-class integration already but looking at this issue it seems that it’s stuck between a rock and a hard place, sigh.
Meteor competes more with LAMP / WebPack and doesn’t compete at all with vue.js. You can just use vue.js now, without any extra effort above what it takes to use Blaze or React.
On Meteor vs. WebPack - I’ve used both, and I prefer Meteor. It’s so much easier to both setup and to keep it working. I just update, and go. To me, that’s the value. And we get things you can’t get at all with other packages - perfect code splitting, the coming dual bundles system. It’s pretty great in Meteor these days.
I’m really not clear what is working and what is missing from the vue integration, I guess because I don’t use it. I’m hearing conflicting messages, on one hand I see people using it and creating starter kit and on the other hand we’ve this open issue that seems to be stuck.
That’s for a specific type of vue.js integration (and looks like it was rejected because it dug too deeply into vue.js internals). You don’t need that at all to use Vue.js from npm. Just install vue.js, and get started.
I think that this issue only relates to Tracker integration, required to use Blaze and Vue together. Without Blaze, the work that Akryum has done is sufficient.
Right, that issue is realted to “first-class” – drop-in replacement of Blaze – the kind of integration you’d expect in the Meteor community. Right now you can use Vue of course, but there’s going to be edge case issues, bumps in the road so to speak IMO. YRMV, so good luck.
Do we actually need that “first-class” integration? is this even desirable?
In our react project we minimized the use of tracker or any other meteor specific libraries because we want our view to be portable and we want to stick wth the rest of the ecosystem, so perhaps this also make sense for the vue integration. Perhaps we can leave concepts like tracker to Blaze (which I still love and use), and keep the integration thin and pure as @vooteles suggested. It’s really hard to beat meteor/blaze speed and simplicity of development, all you need is basic html, css and JS knowledge and you got to go! it’s really a league on it’s own. These view layers are targeting more complex apps and designed to work with rest, apollo or other data layers so why’re we expecting the meteor/blaze paradigm from this integration?
Furthermore, if you observe the work being done to Meteor last two years, you can clearly notice the focus toward positioning Meteor as a build system with loosely coupled modules, take a look at the minimal flag coming in 1.6.2, it doesn’t even have tracker. Thus having a tight/highly coupled integration to the view doesn’t seem aligned with the overall direction.
I still think Meteor should list vue as potential integration just like what we’ve with react and angular, I mean we don’t have an official tracker integration with those view layers either.
Do I understand correctly that if I create a “minimal” app and run my own socket.io server that there shouldn’t be any performance problems, because the Meteor Server itself won’t be running?
Had that problem recently when trying to port the lance pong game onto Meteor.
Core Meteor devs can keep me honest here, but it seems they’ve removed DDP package with the minimal flag as well, so I think you’ll have the HTTP server but no socket connection opened by default, and if my understanding is correct yeah it should be similar to any other node backend in terms of performance.
Really nice to see, hard to beat that landing page, best backend framework ever!
We also need a tutorial, guide section and a blog post going to officially welcome the vue folks