Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

Re events - You can type events in Vue with `defineEmits`: https://vuejs.org/api/sfc-script-setup.html#defineprops-defi...

Re global enums - I'm not sure what the author means about global enums - anything imported into your Vue file can be used in the `<template>`.

Re styles - Style is automatically scoped in Vue SFC files, too - I believe it was the first component framework to do this.

This article and migration seems not very thoroughly researched - seems the author just wants a reason to rewrite the front-end.



I've got a couple of templates where I've aliased the value of a TypeScript enum into a local variable before using it in the template, so I'm pretty certain at that point I was unable to use the value of the enum directly (that's also how I remember it). However, I just tried it and...it seems to just work now. So thanks for making me revisit that :D.


> Style is automatically scoped in Vue SFC files

<style> is global, <style scoped> is scoped. But comparing frameworks based on having to write at most one extra scoped property in each file, or having to wrap HTML template in a <template> is laughable. You get a hundred times the time back the first time you need a library not available in the smaller ecosystem.


That's my impression too.


edit: Disregard, this is wrong.

-----

I agree with the rest, but how do you use imported TS enums in your template? Something like this being impossible is regularly a pain point for me:

    slotProps.data.type === ArticleTypes.SomeType


`ArticleTypes` should be automatically available in the template just from importing it if you use script setup

Otherwise you also need to return it in the setup function (composition) or store a local copy of it in the data field (options)


It… does. Now I wonder if this was not in 3 from the beginning, or if I simply always assumed this behavior was the same after upgrading from Vue2. Wow. Thanks.


Store a reference to the enum locally then you can use it in templates




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: