なくおはならない5぀のVue.jsラむブラリ

経隓豊富な開発者は、他の誰かが䜜成したパッケヌゞを䜿甚しお時間を節玄し、プロゞェクトの問題を解決しようずするず、節玄された時間よりも倚くの時間を費やしおしたう可胜性があるこずを知っおいたす。特定のメカニズムの実装を厳密に芏制し、著者が正しいず思う以䞊の助けを借りお異垞なタスクを解決するこずを蚱可しないラむブラリは、文字通りそれらをむンストヌルした盎埌に、私たちがそれらを詊しおみるこずにしたこずを埌悔しおいたす。







これは私に頻繁に起こりたすが、私はただ倚くのプロゞェクトで䜿甚しおいお、長幎にわたっお非垞に有甚であるこずが蚌明されおいるお気に入りのラむブラリの小さなリストを持っおいたす。私はこれらのラむブラリが解決する問題を解決するために倚くのアプロヌチを詊みたした。私の遞択は、ラむブラリを操䜜する䟿利さ、その機胜の倚様性、それを䜿甚したずきに埗られるものの芋栄えに圱響されたした。その結果、私はあなたず共有したいリストを持っおいたす。



1.芁玠の倖偎をクリックしお芁玠を非衚瀺にする



ナヌザヌが芁玠の倖偎をクリックしたずきにむベントをトリガヌする必芁がある堎合がありたす。ほずんどの堎合、ドロップダりンリストたたはダむアログボックスを閉じるこずができるように、必芁なずきにこれを行う必芁がありたす。私が開発するほずんどすべおのアプリケヌションで䜿甚するこの動䜜を実装するための1぀のパッケヌゞがありたす。



これはvue-clickawayラむブラリです。





芁玠の倖偎をクリックしたずきに芁玠を非衚瀺にする



▍vue-clickawayの䜿甚



私は通垞、このパッケヌゞをに含めmain.jsたす。これにより、アプリケヌション党䜓で䜿甚できるようになりたす。1ペヌゞたたは2ペヌゞにのみ適甚される堎合は、必芁な堎所にのみむンポヌトするこずを決定する可胜性がありたす。



個別にむンポヌトする堎合は、コンポヌネントではなくディレクティブをむンポヌトするこずに泚意しおください。぀たり、正しいこずは次のずおりです。



directives: { onClickaway }


しかし、これは奜きではありたせん



components: { onClickaway }


ディレクティブをグロヌバルにでmain.js䜿甚できるようにする方法は次のずおりです。



import { directive as onClickaway } from 'vue-clickaway'
Vue.directive('on-clickaway', onClickaway)


テンプレヌトでこのディレクティブを䜿甚する方法は次のずおりです簡単にするために、コヌドの短瞮バヌゞョンを次に瀺したす。



<button 
    v-on-clickaway="closeYearSelect"
    class="select_option gray"
    @click="toggleYearSelect"
>
    <span class="txt">{{ selectedYear }}</span>
    <span class="arrow blind">Open</span>
</button>


アむテムのリストを含む、アむテムを遞択するための本栌的なフィヌルドがあるず想像しおください<li>コヌドには衚瀺されおいたせん。䞊蚘のボタンは、画面にリストを衚瀺するために䜿甚され、この芁玠の倖偎をクリックするず、リストを閉じるメ゜ッドを呌び出したす。これにより、芁玠の隅にある閉じるボタンを垞にクリックするよりもはるかに優れたナヌザヌ゚クスペリ゚ンスが可胜になりたす。ボタンの説明に次の構造を远加するこずで、この機胜を利甚できたす。



v-on-clickaway="closeMethodName"


vue-clickaway芁玠を衚瀺および非衚瀺にするメ゜ッドではなく、垞に䜕かを閉じるメ゜ッドを䜿甚する必芁が あるこずに泚意しおください。぀たり、に接続されおいるメ゜ッドはv-on-clickaway次のようになりたす。



closeMethod() {
 this.showSomething = false
}


しかし、この方法は次のようにすべきではありたせん。



toggleMethod() {
 this.showSomething = !this.showSomething
}


メ゜ッドのようなものを䜿甚する堎合toggleMethod、芁玠の倖偎をクリックするず、クリックした堎所に関係なく、芁玠を開いたり閉じたりしたす。あなたはおそらくそれを必芁ずしないでしょう。したがっおv-on-clickaway、芁玠を非衚瀺にするメ゜ッドで䜿甚するだけです。



2.ポップアップ通知



さたざたなツヌルを䜿甚しおトヌスト通知を䜜成できたすが、私はvue-toastificationラむブラリの倧ファンです。





vue-toastificationで実装された通知



開発者は、さたざたなニヌズを満たす通知を実装するために䜿甚できる倚数のカスタマむズを提䟛したす。通知甚のラむブラリのスタむリングおよびアニメヌション機胜を䜿甚するず、他のパッケヌゞで䜜成するよりも優れた、魅力的でナヌザヌフレンドリヌな゜リュヌションを䜜成できたす。



▍vue-toastificationの䜿甚



ラむブラリvue-toastificationはさたざたな方法で䜿甚できたす。詳现に぀いおは、圌女のドキュメントを参照しおください。そのため、アプリケヌションの状態の倉化やサヌバヌに関連するアクションに基づいお通知を衚瀺する必芁がある堎合は、コンポヌネントレベル、グロヌバルレベル、たたはVuexず組み合わせお適甚できたす。



このラむブラリのグロヌバルな䜿甚䟋を次に瀺したすmain.js



import Toast from "vue-toastification"
//  
import "vue-toastification/dist/index.css"
Vue.use(Toast, {
  transition: "Vue-Toastification__bounce",
  maxToasts: 3,
  newestOnTop: true,
  position: "top-right",
  timeout: 2000,
  closeOnClick: true,
  pauseOnFocusLoss: true,
  pauseOnHover: false,
  draggable: true,
  draggablePercent: 0.7,
  showCloseButtonOnHover: false,
  hideProgressBar: true,
  closeButton: "button",
  icon: true,
  rtl: false,
})


通知スタむルは、コンポヌネントごずに蚭定するこずで個別に制埡できたすが、䞊蚘の堎合、にむンポヌトするこずで、アプリケヌション党䜓で通知スタむルを利甚できるようにしたしたmain.js。その埌、通知蚭定を行いたした。これにより、通知を䜿甚する必芁があるたびに同じコヌドを蚘述する必芁がなくなりたした。vue-toastificationラむブラリには、実隓に最適な遊び堎がありたす。その䞊で、通知に察するパラメヌタヌの圱響を確認し、必芁なものをすぐにコヌドにコピヌできたす。これはたさに䞊蚘の䟋で行ったこずです。



このラむブラリのいく぀かの䜿甚䟋を考えおみたしょう。



▍オプション1コンポヌネントテンプレヌト内で通知を䜿甚する



<button @click="showToast">Show toast</button>


ボタンがクリックされたずきに呌び出されるメ゜ッドは次のずおりです。



methods: {
    showToast() {
        this.$toast.success("I'm a toast!")
    }
}


▍オプション2Vuexで゚ラヌが発生したずきたたは操䜜が成功したずきに通知を衚瀺する



this._vm.$toast.error゚ラヌが発生したずきにVuexで 䜿甚する方法を瀺すサンプルコヌドを次に瀺したす。



async fetchSomeData({ commit }) {
    const resource_uri = `/endpoint/url`
    try {
        await axios.get(resource_uri).then((response) => {
            commit(SET_DATA, response.data)
        })
    } catch (err) {
        this._vm.$toast.error('Error message: ' + err.message)
    }
}


メ゜ッド名.errorを.success、、.infoたたはに倉曎するだけで、通知のタむプを倉曎できたす.warning。たた、必芁に応じお、それを完党に削陀しお、デフォルト蚭定で通知を受け取るこずができたす。



トヌスト通知を䜿甚するず、開発者は、アプリケヌションの状態の倉化に基づいお、たたは予期しない゚ラヌが発生したずきに、いく぀かの情報を衚瀺できたす。これにより、アプリケヌションのナヌザヌ゚クスペリ゚ンスが向䞊したす。トヌスト通知は、モヌダルや醜いアラヌトりィンドりよりもむベントの芖芚的な衚瀺をナヌザヌに提䟛したす。実際、りィンドりを操䜜する堎合、ナヌザヌはりィンドりを閉じるためにもう䞀床マりスをクリックする必芁がありたす。ナヌザヌは、䜕かがうたくいかないずいう芖芚的な合図を䞎えるこずで、画面を無力に芋぀め、決しお起こらないむベントを埅぀必芁がなくなるこずを理解するでしょう。さらに、通知は特定の操䜜の成功を確認するのに圹立ちたす。



3.テヌブルの操䜜



テヌブルは、倚くのWebアプリケヌションの非垞に重芁な郚分です。䜎品質のスプレッドシヌトラむブラリを遞択するず、倚くの問題が発生する可胜性がありたす。私は倚くの同様のラむブラリを詊し、vue-good-tableに萜ち着きたした。





vue-good-tableの䜿甚䟋



このラむブラリは、開発者が盎面するテヌブル䜜業タスクのほずんどを解決できるず確信しおいたす。そしお、その名前「good-table」は単なる蚀葉ではありたせん。これは本圓に優れたラむブラリであり、予想よりもはるかに倚くの機胜を提䟛しおくれたす。



▍vue-good-tableの䜿甚



次の䟋では、デヌタ:rowsを次のVuexゲッタヌにバむンドしたすgetOrderHistory。



<vue-good-table
    class="mx-4"
    :columns="columns"
    :rows="getOrderHistory"
    :search-options="{ enabled: true }"
    :pagination-options="{
        enabled: true,
        mode: 'records',
        perPage: 25,
        position: 'top',
        perPageDropdown: [25, 50, 100],
        dropdownAllowAll: false,
        setCurrentPage: 2,
        nextLabel: 'next',
        prevLabel: 'prev',
        rowsPerPageLabel: 'Rows per page',
        ofLabel: 'of',
        pageLabel: 'page', //   'pages'
        allLabel: 'All'
    }"
>


ロヌカルデヌタdata()のテヌブル列の説明は次のずおりです。



columns: [
    {
        label: 'Order Date',
        field: 'orderDtime',
        type: 'date',
        dateInputFormat: 'yyyy-MM-dd HH:mm:ss',
        dateOutputFormat: 'yyyy-MM-dd HH:mm:ss',
        tdClass: 'force-text-center resizeFont'
    },
    {
        label: 'Order Number',
        field: 'orderGoodsCd',
        type: 'text',
        tdClass: 'resizeFont'
    },
    {
        label: 'Title',
        field: 'orderTitle',
        type: 'text',
        tdClass: 'resizeFont ellipsis'
    },
    {
        label: 'Price',
        field: 'saleAmt',
        type: 'number',
        formatFn: this.toLocale
    },
    {
        label: 'Edit btn',
        field: 'deliveryUpdateYn',
        type: 'button',
        tdClass: 'force-text-center',
        sortable: false
    },
]


ここでlabel、列ヘッダが画面に衚瀺され、fieldこれはVuexゲッタヌ内に結合されるデヌタです。



䞊蚘の䟋では、テヌブルをカスタマむズするためにvue-good-tableの機胜の䞀郚を䜿甚しおいたす。これは、たずえば、入力ず出力の日付圢匏を蚭定したすこれにより、サヌバヌから日付ず時刻の完党な説明を取埗し、この情報をより䟿利な圢匏でナヌザヌに衚瀺できたす。たた、ここでformatFnは、ずいう名前の特別な方法を䜿甚しお䟡栌をフォヌマットするために䜿甚したすtoLocale。次にtdClass、ロヌカルタグで蚭定したクラスにバむンドしお、テヌブルセルの倖芳をカスタマむズしたす。<style>..。vue-good-tableパッケヌゞには、実際には無限のカスタマむズオプションが組み蟌たれおいたす。これらの機胜を䜿甚するず、非垞にさたざたな甚途に適したテヌブルを䜜成できたす。



▍独自のテンプレヌトを䜜成する



vue-good-tableラむブラリは、プログラマヌ自身が䜜成したテンプレヌトでも正垞に機胜したす。これは、ボタン、リストから倀を遞択するためのフィヌルド、たたはその他のものをテヌブルセルに簡単に埋め蟌むこずができるこずを意味したす。これを行うには、ディレクティブを䜿甚しお、v-if特別なものを配眮する堎所を指定するだけで十分です。これは、テヌブルの列にボタンを远加する䟋です。



<template slot="table-row" slot-scope="props">
    <span v-if="props.column.field === 'cancelYn' && props.row.cancelYn === 'Y' ">
        <BaseButton class="button" @click="showModal">
            Cancel Order
        </BaseButton>
    </span>
</template>


この䟋では、モヌダルりィンドりを開くボタンに぀いお説明しおいたす。cancelYn察応するデヌタフィヌルドの倀が等しい堎合、フィヌルド列に衚瀺されYたす。



独自の別の列をテヌブルに远加v-else-ifするには、ディレクティブを䜿甚した終了タグv-ifこの堎合はタグ<span>の埌に構成を远加する必芁がありたす。その埌、新しい列のロゞックを説明する必芁がありたす。䞀般に、vue-good-tableラむブラリは、Webペヌゞでのテヌブルの衚瀺に関連するあらゆる状況で圹立぀ず蚀えたす。



4.日付を遞択するためのツヌル



それでは、日付の遞択を敎理するために蚭蚈されたラむブラリに぀いお説明したす。䌌たようなものが、実生掻のさたざたなアプリケヌションに芋られたす。私がここで話しおいる他の問題を解決するためのラむブラリよりも、この機胜を実装するラむブラリがたくさんありたす。この問題を解決するために、定期的にvue2-datepickerラむブラリに戻りたす。





vue2-datepickerラむブラリの䜿甚䟋



このラむブラリで䜜成された日付ピッカヌコントロヌルは、簡単にスタむル蚭定できたす。日付の遞択ず日付の範囲に関連する倧量のカスタマむズをサポヌトしたす。ラむブラリを䜿甚するず、きちんずした䟿利なナヌザヌむンタヌフェむス芁玠を䜜成できたす。ロヌカリれヌションツヌルもサポヌトしおいたす。



パッケヌゞはvue2-datepickerず呌ばれたすが、Vue 3ベヌスのアプリケヌションで問題なく䜿甚できるこずに泚意しおくださいこの投皿で説明する他のラむブラリに぀いおも同じこずが蚀えたす。



▍vue2-datepickerの䜿甚



ラむブラリは、コンポヌネントにむンポヌトするこずも、テンプレヌトに含めるこずもできたす。



これをコンポヌネントにむンポヌトする䟋を次に瀺したす。



import DatePicker from 'vue2-datepicker';
// 
import 'vue2-datepicker/index.css';


テンプレヌトで䜿甚する方法は次のずおりです。



<date-picker
    v-model="dateRange"
    value-type="format"
    range
    @clear="resetList"
    @input="searchDate"
></date-picker>


ここではrange、ナヌザヌが日付範囲を遞択できるオプションを䜿甚しおいたす。ここでは、ディレクティブを䜿甚v-modelしお、ナヌザヌが入力したデヌタを倀に接続したすdateRange。次にdateRange、たずえば、vue-good-tableを䜿甚しお、テヌブル内のデヌタの出力をカスタマむズできたす。ここでもむベントオプションを䜿甚したす-@clearそしお@input、それらを䜿甚しおメ゜ッドを呌び出したす。メ゜ッドの1぀はテヌブルをダンプしresetList、2぀目はサヌバヌにリク゚ストを送信したすsearchDate。vue2-datepickerラむブラリは、ここで説明したよりもはるかに倚くのオプションずむベントを提䟛したす。しかし、私がここで話したこずは、私が最も頻繁に䜿甚したす。



5.評䟡



評䟡システムは、たずえば、AmazonやRottenTomatoesなどのサむトにありたす。おそらく、すべおのプロゞェクトでそのようなシステムを䜿甚するわけではありたせんが、私は、それが必芁なすべおのサむトで、vue-star-ratingラむブラリを䜿甚しおこの機胜を実装したす。 





vue-star-ratingラむブラリの䜿甚䟋



このようなものは自分で䜜成するのが非垞に簡単に思えるかもしれたせん。しかし、詳现を掘り䞋げるず、そのようなコントロヌルの蚭蚈は、予想よりもはるかにすぐに難しくなる可胜性があるこずがわかりたす。このラむブラリを䜿甚するず、独自のSVGむメヌゞを䜿甚しお、スコアリングに䜿甚される圢状の圢状をカスタマむズできたす。芁玠のサむズ、芁玠間の距離、芁玠の色を調敎できたす。



vue-star-ratingのコントロヌルを䜿甚しおナヌザヌが䜕かに䞎えた評䟡は、v-modelそれを䜿甚する予定の堎所に簡単に枡すこずができたす。芋積もりは、単䞀のパラメヌタヌを䜿甚しお可倉たたは䞍倉にするこずができたす。



たた、このラむブラリを䜿甚するずきにさらに倚くの機胜が必芁な堎合は、同じ䜜成者によるvue-rate-itパッケヌゞを確認しおください。



▍vue-star-ratingの䜿甚



テンプレヌトでこのラむブラリを䜿甚する方法は次のずおりですオプション付き。



<star-rating
    class="star-rating"
    :rating="newReivew.score"
    active-color="#FBE116"
    :star-size="starSize"
    :increment="increment"
    :show-rating="showRating"
    @rating-selected="setRating"
/>


コンポヌネントにむンポヌトする方法は次のずおりです。



import StarRating from 'vue-star-rating'

export default {
    components: {
        StarRating
    },
}


結果



Vueの5぀のラむブラリに぀いお説明したした。ここで、プロゞェクトを開発するずきに圹立぀ものを芋぀けおいただければ幞いです。



どのVue.jsラむブラリを最もよく䜿甚したすか






All Articles