Hacker News new | ask | show | jobs
by cxam 2224 days ago
This is great! I've always been interested in video related products and services and you've done a pretty good job on getting the annotations overlay the video.

> I switched away from Vue as soon as I hit my first refactor. I struggled to rebuild big parts of the application because Vue allowed me to do everything and nothing. I know I probably could have done this in React or continued with Vue, but because of the following reasons I decided against that

Funnily enough, I went through a similar thought process but between React and Vue. What's uncanny is that it was also for a video annotation service I was building (https://tagx.io/). I ended up going with Vue and like Plopdown, used Plyr (https://plyr.io/) as the video player (also a great project). Your three reasons for not continuing to use Vue, I'm wondering if that's really because Angular was your comfort zone?

  [1] Typescript + Vue works well (that's how I built mine). 
  [2] You could have used RxJS with Vue. 
  [3] Vue has less boilerplate code than Angular and wouldn't have made this project any more difficult to maintain
1 comments

Oh totally, I'm not gonna pretend that it wasn't because I knew how to organize an Angular project.

That said, I know how I'd manage multiple projects via NX, and knew the rules to effectively maintain this project for the foreseeable future.

I really do love Vue, but I need structure, because as a human I have terrible memory. I don't love unit testing, and I barely love integration testing, so strict typing and good naming is key to my style of coding.

I hit a wall with Vue, which I've similarly hit with AngularJS, at some point I hit a level of complexity that Angular doesn't allow, but Vue does.

> That said, I know how I'd manage multiple projects via NX, and knew the rules to effectively maintain this project for the foreseeable future.

I believe NX is aiming to bring in Vue support through their plugin system, but yea, I understand that it would make it easier in your case since it already supports Angular. If you like the monorepo setup and looking for a more generic solution then checkout lerna (https://github.com/lerna/lerna).

> I really do love Vue, but I need structure, because as a human I have terrible memory. I don't love unit testing, and I barely love integration testing, so strict typing and good naming is key to my style of coding.

Vue, as simple as it is, can have structure and easily adopt to large scale projects. As I mentioned in my previous comment, you would have not had any issues using TypeScript with it.

> I hit a wall with Vue, which I've similarly hit with AngularJS, at some point I hit a level of complexity that Angular doesn't allow, but Vue does.

What exact issues did you have with Vue? Just curious as nothing you've mentioned so far are actual issues, but rather, you having better experience with using Angular.

> looking for a more generic solution then checkout lerna (https://github.com/lerna/lerna).

Thanks, I've actually used lerna alongside NX in the past before! NX doesn't have a great system for publishing packages as they believe it defeats the purpose of a monorepo, using them in tandem seems totally fine.

> What exact issues did you have with Vue? Just curious as nothing you've mentioned so far are actual issues, but rather, you having better experience with using Angular.

I found service ownership and instancing to be cumbersome. When I'm communicating data to a bunch of different components, I want to know where in the hierarchy that service lives and either allow the same service to be used by everything or make multiple clones.

Because of the way vanilla Vue is architected, it seems like the component hierarchy and the data hierarchy are conflated, which I personally don't like.