Packages Guide - mirror-media/mirror-media-nuxt GitHub Wiki

Packages

本頁維護此 repo 有使用到的 packages,其用法、設定與使用情境等,協助開發者快速熟悉其使用方式與使用目的。

Vue

  • 顧及 package size(minified + gzipped: 6.9 KB),不以 install plugin globally 的方式載入,而以 use locally 的方式使用:
<template>
  <div>
    <client-only>
      <infinite-loading @infinite="infiniteHandler">
        <!-- provide empty slot if we want to disable load messages locally -->
        <!-- see: https://peachscript.github.io/vue-infinite-loading/guide/configure-load-msg.html#via-slot-sepcial-attribute -->
        <div slot="spinner" />
        <div slot="no-more" />
        <div slot="no-results" />
        <div slot="error" />
      </infinite-loading>
    </client-only>
  </div>
</template>

<script>
import InfiniteLoading from 'vue-infinite-loading'

export default {
  components: {
    InfiniteLoading,
  },
  methods: {
    infiniteHandler() {
      // do something
    }
  }
}
</script>

<style lang="sass" scoped></style>

Nuxt

WIP

WIP

WIP

Jest

  • 目的:替代 component 中的 assets(如 images)。
  • 使用原因:Jest 測試環境中的 Vue Single File Component 並不會過 webpack,故 assets 無法正常解析,而 assets 並不是我們在測試中會關心的部分,故使用 stub 替代掉。
    // Foo.vue
    <template>
      <div>
        <img src="~/assets/foo.png" >
      </div>
    </template>
    //__tests__/Foo.spec.js
    import { shallowMount } from '@vue/test-utils'
    import Foo from '../Foo.vue'
    
    describe('', () => {
      test('', () => {
        const wrapper = shallowMount(Foo) // throw error due to ~/assets/foo.png
      })
    })
  • 相關設定:
    // jest.config.js
    module.exports = {
      transform: {
        '\\.(jpg|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga)$':
          'jest-transform-stub'
      }
    }
⚠️ **GitHub.com Fallback** ⚠️