App.js 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. import Vue from 'vue'
  2. import NuxtLoading from './components/nuxt-loading.vue'
  3. import '../node_modules/element-ui/lib/theme-chalk/index.css'
  4. import '../assets/css/main.css'
  5. import _6f6c098b from '../layouts/default.vue'
  6. const layouts = { "_default": _6f6c098b }
  7. export default {
  8. head: {"title":"boss","meta":[{"charset":"utf-8"},{"name":"viewport","content":"width=device-width, initial-scale=1"},{"hid":"description","name":"description","content":"boss ssr ver"}],"link":[{"rel":"icon","type":"image\u002Fx-icon","href":"\u002Ffavicon.ico"}],"style":[],"script":[]},
  9. render(h, props) {
  10. const loadingEl = h('nuxt-loading', { ref: 'loading' })
  11. const layoutEl = h(this.layout || 'nuxt')
  12. const templateEl = h('div', {
  13. domProps: {
  14. id: '__layout'
  15. },
  16. key: this.layoutName
  17. }, [ layoutEl ])
  18. const transitionEl = h('transition', {
  19. props: {
  20. name: 'layout',
  21. mode: 'out-in'
  22. },
  23. on: {
  24. beforeEnter(el) {
  25. // Ensure to trigger scroll event after calling scrollBehavior
  26. window.$nuxt.$nextTick(() => {
  27. window.$nuxt.$emit('triggerScroll')
  28. })
  29. }
  30. }
  31. }, [ templateEl ])
  32. return h('div', {
  33. domProps: {
  34. id: '__nuxt'
  35. }
  36. }, [
  37. loadingEl,
  38. transitionEl
  39. ])
  40. },
  41. data: () => ({
  42. layout: null,
  43. layoutName: ''
  44. }),
  45. beforeCreate() {
  46. Vue.util.defineReactive(this, 'nuxt', this.$options.nuxt)
  47. },
  48. created() {
  49. // Add this.$nuxt in child instances
  50. Vue.prototype.$nuxt = this
  51. // add to window so we can listen when ready
  52. if (typeof window !== 'undefined') {
  53. window.$nuxt = this
  54. }
  55. // Add $nuxt.error()
  56. this.error = this.nuxt.error
  57. },
  58. mounted() {
  59. this.$loading = this.$refs.loading
  60. },
  61. watch: {
  62. 'nuxt.err': 'errorChanged'
  63. },
  64. methods: {
  65. errorChanged() {
  66. if (this.nuxt.err && this.$loading) {
  67. if (this.$loading.fail) this.$loading.fail()
  68. if (this.$loading.finish) this.$loading.finish()
  69. }
  70. },
  71. setLayout(layout) {
  72. if (!layout || !layouts['_' + layout]) {
  73. layout = 'default'
  74. }
  75. this.layoutName = layout
  76. this.layout = layouts['_' + layout]
  77. return this.layout
  78. },
  79. loadLayout(layout) {
  80. if (!layout || !layouts['_' + layout]) {
  81. layout = 'default'
  82. }
  83. return Promise.resolve(layouts['_' + layout])
  84. }
  85. },
  86. components: {
  87. NuxtLoading
  88. }
  89. }