Using constants and functions in vue components
I've learned that you can't access things not defined in the Vue component instance.
For example, you can't import a constant or a function and use it in the template:
This doesn't work
<template>
  <button></button>
</template>
<script>
  import { BUTTON_LABEL } from 'i18n'
  export default {
    ...
  }
</script>
Expose constants #
It seems that the best way to expose constants is by defined in the created lifecycle method to avoid Vue applying it's observable sorcery on it:
<template>
  <button>{{ label }}</button>
</template>
<script>
  import { BUTTON_LABEL } from "i18n";
  export default {
    created() {
      this.label = BUTTON_LABEL;
    },
  };
</script>
Expose utility functions #
The same happens with functions:
This doesn't work
<template>
  <select :options="getUserOptions(user)">
</template>
<script>
  import { getUserOptions } from 'helpers/userHelpers'
  export default {
    ...
  }
</script>
But this does:
<template>
  <select :options="getUserOptions(user)">
</template>
<script>
  import { getUserOptions } from 'helpers/userHelpers'
  export default {
    methods: {
      getUserOptions,
    }
    ...
  }
</script>