app.js 1.09 KB
import Vue from 'vue';
import App from './app.vue';
import {createRouter} from './router';
import {createStore} from './store';
import 'filters';
import 'directives';
import titleMixin from './mixins/title';
import pluginCore from './plugins/core';
import lazyload from 'vue-lazyload';
import reportError from 'report-error';
import dayjs from 'dayjs';
import 'dayjs/locale/zh-cn';
import relativeTime from 'dayjs/plugin/relativeTime';

Vue.use(lazyload, {
  preLoad: 3,
  loading: 'data:image/gif;base64,R0lGODlhAQABAJEAAAAAAP///93d3f///yH5BAEAAAMALAAAAAABAAEAAAICVAEAOw==',
  error: 'data:image/gif;base64,R0lGODlhAQABAJEAAAAAAP///93d3f///yH5BAEAAAMALAAAAAABAAEAAAICVAEAOw==',
});
Vue.use(pluginCore);
Vue.mixin(titleMixin);
dayjs.locale('zh-cn');
dayjs.extend(relativeTime);

export function createApp(context, state = {}) {
  const router = createRouter();
  const store = createStore(context, state);

  const app = new Vue({
    router,
    store,
    errorCaptured(error) {
      reportError(context, 'server')(error);
      return false;
    },
    render: h => h(App)
  });

  return {app, router, store};
}