Edit in JSFiddle

var ListMixin = {
  data: function() {
    return {title: 'Just a List' }
  },
  template: '<div><div>{{titleReversed}}</div><app-list :items="items"></app-list></div>',
  computed: {
    titleReversed () {
      return this.title.split('').reverse().join('');
    }
  }
};

var UsersList = {
  mixins: [ListMixin],
  data () {
    return {
      title: 'Users',
      items: ['User 1', 'User 2', 'User 3']
    };
  }
};

var AppList = {
  template: '<ul><li v-for="i in items"><{{i}}/li></ul>'
};

var CompaniesList = {
  mixins: [ListMixin],
  data () {
    return {
      items: ['Company 1', 'Company 2', 'Company 3']
    };
  }
};

Vue.component('appList', {
  props: ['items'],
  template: '<ul><li v-for="i in items">{{i}}</li></ul>'
});

new Vue({
  el: '#app',
  components: {
    usersList: UsersList,
    companiesList: CompaniesList
  }
});
<script src='https://unpkg.com/vue@2.4.4/dist/vue.js'></script>
<div id='app'>
  <users-list></users-list>
  <companies-list></companies-list>
</div>