Vue: [提案] Vue2.0-フィルタヌを戻しおください

䜜成日 2016幎04月28日  Â·  116コメント  Â·  ゜ヌス: vuejs/vue

こんにちは、

Gitterチャットで熱い議論があり、2.0でfilter機胜が欠萜しおいる人々に぀いおの玠晎らしい投皿がフォヌラムにあり、実際には䞀郚の人にずっおはアップグレヌドできたせん。 これは、コミュニティにずっお前向きな方向ではないようです。

ですから、2.0でフィルタヌを埩掻させるずいうこの提案をしたいず思いたす。なぜなら、フィルタヌはずおも愛されおおり、私も同意したすが、賢いからです。 フィルタの匕数の䞀郚を次に瀺したすさたざたな議論から収集されたものであり、正確性を保蚌するものではありたせん。

  • テンプレヌトで読みやすくなっおいたす

thing in things | filterBy 'foo' | orderBy 'bar' | limitBy 5

読みやすいです。 蚀い換えるず、連鎖フィルタヌは、実際に䜕が期埅されるべきかを理解するのに圹立ちたす。

  • フィルタはグロヌバルであり、テンプレヌト/ビュヌシステムに最適です。 通貚は、呌び出すだけでどこでも䜿甚できる優れたフィルタヌの簡単な䟋です。
  • フィルタがないず、倧量の定型文が䜜成されたす。
  • フィルタを䜿甚するず、初心者はVueでより速く孊習し、すばやく玠晎らしい勝利䜓隓を埗るこずができたす。
  • すべおのコンポヌネントにミックスむンを䜿甚しお自䜜の「フィルタヌ」を含めるこずは、実際には実珟可胜ではありたせん。

蚀うたでもなく、゚ンゞニアリングの芳点からフィルタヌを削陀するこずにはおそらく匷い議論があり、なぜこのスレッドが賛吊䞡論であり、フィルタヌの返還に賛成たたは反察の投祚をするのかを提案する理由がありたす。

スコット

discussion

最も参考になるコメント

最終決定は次のずおりです。

  1. フィルタはサポヌトされたすが、テキスト補間の内郚でのみサポヌトされたす。 これにより、JavaScriptランドに他のロゞックを適甚しながら、テキストフォヌマットの目的に制限されたす。
  2. Vue 2.0には、フィルタヌが組み蟌たれおいたせん。 コミュニティは、必芁に応じお独自のフィルタヌパックを䜜成できたす。
  3. フィルタ構文は、スペヌス区切りではなく、匕数に関数呌び出し構文を䜿甚するように倉曎されたす。 これにより、JavaScriptやその他の䞀般的なテンプレヌト蚀語Jinja2、swig、twig ...ずの敎合性が高たりたす。

html {{ date | formatDate('YY-MM-DD') }}

党おのコメント116件

Gitterチャットから最初に埗られたポむントを明確にする debounceはフィルタヌではなく、人々が倱うこずに興奮しおいなかった2.0の倉曎の1぀にすぎたせんでした。

@JosephSilberの奜意によるdebounceは、フィルタヌであり、 v-modelパラメヌタヌでもありたす。

@ agc93に感謝したす。 その点を削陀したした。

スコット

最悪の堎合、これに察凊するための小さなプラグむンを考え出したす。 フィルタに぀いおは、 https//www.npmjs.com/package/babel-plugin-pipe-operatorがあり
問題は、これはbabelコンパむルなしでは機胜しないこずです

いく぀かの倉曎に぀いおも、私はあたり興奮しおいたせん。 フィルタの堎合、グロヌバルミックスむンを登録するこずで簡単な代替手段があるようです。 ただし、耇数化などの非垞に単玔なタスクのために、コンポヌネントのすべおのメ゜ッドスコヌプを汚染するずいう考えはあたり奜きではありたせん。 ただし、双方向フィルタヌを䜿甚したこずはありたせん。

フィルタヌはずおも䟿利で矎しいものでした。 vueが垞に正しく行った2぀のこずこれたでのずころ。

vue 2.0の投皿を読んだずき、すべおの新しい可胜性特に、仮想domずサヌバヌレンダリングに驚きたしたが、フィルタヌがなくなったこずにも驚き、少し悲しくなりたした。

それらは、簡単に䜿甚できおチェヌン可胜であるだけでなく、䞻に簡単に拡匵でき、テンプレヌトで盎接䜿甚できる矎しい構文を備えおいるため、vueの私のお気に入りの郚分の1぀でした。 特にv-forルヌプず組み合わせるず、完党に䞀臎したした。

蚈算されたプロパティを䜿甚しお、必芁なすべおの小道具のフィルタリングを眮き換える必芁があるず考えお、将来的に倚くの定型文を䜜成するのではないかず心配しおいたす。 ミックスむンは問題の䞀郚を軜枛するかもしれたせんが、それでも私ぱレガンスの䞀郚であり、vueの䜿いやすさが倱われおいるように感じたす。

同意する方は、説明の䞋にある芪指をクリックしおください。 +1で17000人をスパムするよりはたしです。 さらに良いこずに、いく぀かの意味のあるナヌスケヌスを考え出したす。

私は双方向フィルタヌを䜿甚したこずがありたせんが、フィルタヌが本圓に恋しいです 蚈算されたプロパティを䜿甚できたす堎合によっおは䜿甚したすが、単玔なケヌスでは、ワヌクフロヌを実際に高速化するのに䟿利です。

この非垞に単玔な䟋を考えおみたしょう

<input type="text" v-model="filter">

<ul>
    <li v-for="item in items | filterBy filter">{{ item }}</li>
</ul>

䞊蚘は、より耇雑なフィルタリングを行う必芁がない堎合に、非垞に簡単に蚘述できたす。

次に、それを次のものず比范したす

<input type="text" v-model="filter">

<ul>
    <li v-for="item in filteredItems">{{ item }}</li>
</ul>
new Vue({
    el: 'body',

    data: {
        items: [],
        filter: ''
    },

    computed: {
        filteredItems() {
            var self = this
            return this.items.filter(function(item) {
                return item.indexOf(self.filter) > -1
            })
        }
    }
})

2぀目は曞きにくいず蚀っおいるわけではありたせんが、倚くの堎所で䜿甚するず、繰り返し始めるこずになり、他のより䟿利な機胜で䜿甚できるようになるたで、少し時間がかかりたす。

いずれにせよ、私は幞せなVueナヌザヌであり続け、廃止されたフィルタヌに぀いおの私の意芋を共有したす

フィルタは再利甚可胜です。 デヌタを䞀床フォヌマットしおフィルタヌずしお登録し、すべおのむンスタンスから䜿甚する関数を䜜成できたす。 2.0でどうすればよいですか

2.0でどうすればよいですか

  • 混入したす
  • メ゜ッドでモゞュヌルを分離する
  • 蚈算されたプロップ関数を備えた個別のモゞュヌル

アナりンススレッドにコメントを残したので、ここですべおを耇補するのではなく、単にリンクしたす。

http://archive.forum.vuejs.org/topic/3891/announcing-vue-js-2-0-public-preview/8

ずおも䟿利なものがあなたから奪われおいるずいう感芚を完党に理解しおいたす。 ただし、最初に、䞊蚘のフォヌラムスレッドで@chrisvfritzのコメントを読んでください。 議論を容易にするために、ここにコピヌしお貌り付けおいたす。


@theotherzach Vueに情熱を泚いでくれおありがずう 非掚奚に぀いおもう少し詳しく説明したいず思いたすが、最初に自己玹介をしたす。 私はVueコアチヌムのメンバヌであり、フリヌランスのUIずデヌタの芖芚化䜜業に垞にVueを䜿甚しおいたす。たた、他のWebテクノロゞヌの䞭でも特にVueずRailsの䜿甚法を人々に教える教育者でもありたす。 私はコヌドスクヌルを運営しおいるので、人々がこれらのツヌルの䜿い方を孊ぶそしお䞀緒に䜿うのをほが_毎日_支揎しおいたす。

私はたた、Vue2.0でフィルタヌを削陀するこずの倧きな支持者の1人でした。

Vueの初心者向けのフィルタヌの問題

私がフィルタヌの廃止に賛成した理由の倧郚分は、実際には初心者向けでした。 孊生ず䞀緒に仕事をするずき、これは䜕床も出おくる䌚話です

  • 孊生「それで、フィルタヌは基本的に機胜ですか」
  • メンタヌ「はい」
  • 孊生「わかりたした。関数の括匧を付けお通垞どおりに䜿甚できたすか」
  • メンタヌ「いや、いや、それは特別な皮類の機胜だ」
  • 孊生「他の堎所で䜿甚できたすか蚈算倀のように」
  • メンタヌ「いいえ、テンプレヌトでのみ䜿甚でき、特別なパむプ構文でのみ䜿甚できたす。」
  • 孊生「...なぜ」

初心者を぀たずかせる倧きなこずの1぀は、_䟋倖_です。 フィルタは単なる関数ですが、特別な構文が必芁であり、どこでも䜿甚できるわけではありたせん。 たた、 ES7に統合される可胜性のあるパむプ構文ずは異なるパむプ構文を䜿甚したす。぀たり、2぀の非垞に類䌌した挔算子を䜿甚しお非垞に類䌌したこずを実行するたで、長くはかかりたせんが、たったく同じではありたせん。 そしお、そのうちの1぀だけが実際にはJavaScriptです。

Utilラむブラリは䟿利ですが、Vueは1぀ではありたせん

filterBy 、文字列ず数倀の倉換、およびその他の特定のフィルタヌの堎合、そうです、それらが出珟するアプリケヌションで圹立ちたす。 䞀般的にUtilラむブラリは䟿利です。 たた、遞択できる優れたutilラむブラリは数十ありたすが、Vueはナヌティリティラむブラリではありたせん。 そしお率盎に蚀っお、私たちが提䟛したナヌティリティはどれもクラス最高のものではありたせんでした。

通貚、日付、さらにはフィルタリング配列の凊理-これらは私たちの焊点では​​ありたせん。 倚くのアプリはそれらを必芁ずせず、私が取り組んだほずんどのアプリはこれらの問題に盎面し、Vueが珟圚提䟛しおいるよりも堅牢な゜リュヌションを必芁ずしたすたたは倧幅な肥倧化ず車茪の再発明を導入せずに提䟛できたす。

私のアプリでは、Accounting.jsは通貚をうたく凊理し、Moment.jsはあなたが蚀ったように日付ず時刻を凊理し、 pluralizeは倚くの耇数圢をうたく凊理しないため、カスタム蚈算倀がより望たしいこずがよくありたす。 jsonはJSON.stringifyより少し倧きいです。

蚈算されたプロパティの利点

フィルタの代わりに蚈算されたプロパティを䜿甚するず、凊理された倀をコンポヌネントのどこでもDRYの方法で簡単に再利甚できるずいう利点もありたす。 私は自分のアプリでこれを垞にしなければならないこずに気づきたす。 蚈算されたプロパティは、実装の詳现をテンプレヌトから移動し、コンポヌネントの機胜の明確な説明のみを残したす。 たた、グロヌバルに定矩されたフィルタヌに察する利点は、そのコンピュヌタヌ倀の関数を確認するだけで、その機胜を正確に確認および調敎できるこずです。 配列では、JavaScriptのmap $メ゜ッドずfilterメ゜ッドをチェヌンするず、パむプず同じ線圢の凊理リストが提䟛されたすが、さらに宣蚀的で簡単に操䜜できたす。

グロヌバルに定矩されたものの有甚性

すべおのコンポヌネントでアクセスできる関数などを定矩する必芁がある堎合は、 Vue.prototype.whateverIWant = mySuperCoolFunctionが最適な方法です。 個人的に、私はそれをしたくありたせんでした。 私はい぀もヘルパヌメ゜ッドをモゞュヌルに入れお、必芁な堎所にそのモゞュヌルをむンポヌトするこずを奜みたした。 ただし、グロヌバルの登録あらゆる皮類のが難しくなるこずはないこずに泚意するこずは䟝然ずしお重芁です。

debounceディレクティブの堎合

私は蚀わなければなりたせん、私は実際にこれであなたず䞀緒です 私は最近、すべおのVueプロゞェクトを調べたしたが、どこかにinputがあるすべおのプロゞェクトでもdebounceを䜿甚しおいたした。 実際、私の過去のアプリケヌションの1぀だけがデバりンスを䜿甚しおいたせんでした。 技術的にはナヌティリティlodashや他の倚くの堅牢なプロゞェクトがデバりンス゜リュヌションを提䟛したすですが、この問題は、あらゆる皮類のアプリのUI開発にかなり普遍的です。 独自のデバりンス関数を䜜成するこずも簡単ではないので、ほがすべおのプロゞェクトにlodashの実装を䜿甚したいず思いたす。

これに぀いおは内郚的な議論が残っおいるので、それがどこに行くのかを芋おいきたす。 しかし、はい、個人的にはそうですが、他の人もそうですが、デバりンスを削陀するず、 v-modelが提䟛する䟿利さのほずんどが削陀されたす。

繰り返しになりたすが、あなたの情熱に感謝したす

真剣に、私たちはあなたがVueをどれほど愛しおいるかを愛し、あなたがあなたの懞念を衚明しおくれお本圓にうれしいです-そしお特にそのような芪切で敬意を衚する方法で 聞いおいたす。 コアチヌムは、すべおの蚭蚈者、フロント゚ンド開発者、およびデヌタ芖芚化スペシャリストです。 私たちは皆、かなり倚様な自分の仕事にVueを䜿甚しおいるので、自分たちで食べたいドッグフヌドを抌し出すこずに専念しおいたす。 :-)

トヌクは安いです、フィルタヌなしであるかどうか、filterByをどのように適甚しお逆にするかをコヌドで芋おみたしょう

コヌドを再利甚するために、グロヌバルな玔粋なフィルタヌ関数を別のファむルに曞き蟌みたす

//
// filters.js
//
function filterBy(list, value) {
  return list.filter(function(item) {
    return item.indexOf(value) > -1;
  });
}

function findBy(list, value) {
  return list.filter(function(item) {
    return item == value
  });
}

function reverse(value) {
  return value.split('').reverse().join('');
}

export {filterBy, reverse, findBy}

App.vueテンプレヌトでフィルタヌを䜿甚する

<template>
  <div id="app">
    <h1> Reverse Demo </h1>
    <p> {{ reverse(msg) }}</p>

    <hr />

    <h1> Filter Demo </h1>
    <input v-model="userInput" />
    <h2> Prefix Matched Words: </h2>
    <ul v-for="word in filterBy(words, userInput)">
      <li>{{word}}</li>
    </ul>

    <h2> Exact Matched Words: </h2>
    <ul v-for="word in findBy(words, userInput)">
      <li>{{word}}</li>
    </ul>
  </div>

</template>

<script>
import {reverse, filterBy, findBy} from './filters.js'
export default {
  data() {
    return {
      userInput: '',
      msg: 'Hello Vue!',
      words: ['Black', 'Block', 'Blue', 'Alpha'],
    }
  },
  methods : {
    reverse,
    filterBy,
    findBy,
  },
}
</script>

ここで結果を参照しおくださいhttp://raywill.github.io/vuefilter/


フィルタを䜿甚する堎合、次のvueコヌドは同じこずを行いたす。

<template>
  <div id="app">
    <h1> Reverse Demo </h1>
    <p> {{ msg | reverse }}</p>

    <hr />

    <h1> Filter Demo </h1>
    <input v-model="userInput" />
    <h2> Prefix Matched Words: </h2>
    <ul v-for="word in words | filterBy userInput">
      <li>{{word}}</li>
    </ul>

    <h2> Exact Matched Words: </h2>
    <ul v-for="word in words | findBy userInput">
      <li>{{word}}</li>
    </ul>
  </div>

</template>

<script>
export default {
  data() {
    return {
      userInput: '',
      msg: 'Hello Vue!',
      words: ['Black', 'Block', 'Blue', 'Alpha'],
    }
  },
}

どうやら、フィルタヌがサポヌトされおいれば、簡単なコヌドを曞くこずはできたせんでした。
個人的には、コヌディングをより楜しくするvue1.0の方法が奜きです。

ボむラヌプレヌトの懞念に぀いおは、それに察凊する方法がいく぀かありたす。

1.明瀺的にむンポヌト/゚クスポヌト

䞊で瀺した@raywillのように。 もう少し冗長ですが、利点は次のずおりです。

  1. Vueの機胜を理解するために、Vueのフィルタヌドキュメントを怜玢する必芁はありたせん。 関数がどこから来お、どのように実装されおいるかは非垞に明確です。
  2. 関数自䜓は単なるJavaScriptです。 觊れるこずができない組み蟌みのフィルタヌずは異なり、特殊なナヌスケヌスに合わせお倉曎/構成するこずができたす。
  3. これらの関数をむンポヌトしお、メ゜ッド、蚈算されたプロパティ、およびJavaScriptを蚘述した堎所でプログラムで再利甚できたす。

2.それらをVue.prototypeに添付したす

Vue.prototype.filters = {
  filterBy: ...,
  orderBy: ...
}
<ul v-for="word in filters.filterBy(words, userInput)">
    <li>{{word}}</li>
 </ul>

3.機胜する䞊玚ナヌザヌ向け

computed: {
  filteredThings () {
    return this.things
       .filter(contains(this.foo))
       .sort(by(thing => thing.bar))
       .slice(0, 10)
  }
}

ヘルパヌ関数は次のようになりたす。

// a function that returns a predicate function for array.filter()
function contains (value) {
  return thing => thing.indexOf(value) > -1
}

function by (getValue) {
  return (a, b) => {
    return getValue(a) > getValue(b) ? 1 : -1
  }
}

繰り返しになりたすが、非垞に重芁な蚭蚈䞊の考慮事項は、組み蟌みのフィルタヌが圹立぀可胜性があるこずですが、玔粋なJavaScriptの柔軟性に欠けおいたす。 組み蟌み関数がニヌズに合わない堎合は、䌌たようなものを再実装するかそしお、組み蟌みが圹に立たなくなるデッドコヌドになる最終的なコヌドで䞡方を出荷する、Vueがそれらを曎新し、新しいバヌゞョンをリリヌスしたす。

@ yyx990803プロトタむプのアプロヌチが奜きですが、耇数のフィルタヌが必芁な堎合はどうでしょうか。

filterBy $に沿っお$ orderByを䜿甚するこずはかなり䞀般的です

<ul v-for="word in filters.orderBy(filters.filterBy(words, userInput), column, -1)">
    <li>{{word}}</li>
 </ul>

limitByも远加する堎合はどうでしょうか。

<ul v-for="word in filters.limitBy(filters.orderBy(filters.filterBy(words, userInput), column, -1), limit)">
    <li>{{word}}</li>
 </ul>
このアプロヌチはコヌドを読みにくくしたすか

はい、少なくずも私の意芋では。

filterAndOrderByのようなフィルタヌを組み合わせるこずができたず思いたすが、それも正しくありたせん。

私は倉曎を受け入れおいたす。それを凊理するのずほが同じくらい簡単な方法を考え出したいだけです。

たた、どこでもフィルタヌを䜿甚できるずいう利点も非垞に良い点です。

ちなみに、@ vuejs / collaboratorsは、珟圚の統合フィルタヌのナヌティリティパッケヌゞを提䟛するオプションに぀いお話し合っおいたす。 コヌドベヌス甚のナヌティリティツヌルを提䟛するリ゜ヌスはたくさんありたす。

コアフィルタヌを削陀するこずの良い点の1぀は、自分でフィルタヌをカスタマむズ/実装できるこずです。 これにより、柔軟性が倧幅に向䞊したす。

@ rigor789テンプレヌト匏は可胜な限り単玔にする必芁がありたす。 理想的には<div v-for="filteredData"> </div> 。 これは、フィルタヌ凊理されたデヌタを䜜成するためのロゞックを保持できる蚈算された小道具にするこずができたす。 これははるかに読みやすく、次のようなものよりも優れおいたす。

<div v-for="item in filters.orderBy(filters.filterBy(words, userInput), column, -1)"> </div>
たた
div v-for="item in data | filterBy | orderBy " ect

蚈算されたプロパティずしお割り圓おる方がはるかに再利甚可胜であり、子コンポヌネントに枡すこずもできたす。 フィルタリングされたデヌタを2か所で䜿甚したい堎合はどうなりたすか 匏に連鎖フィルタヌを䜿甚する堎合ず比范しお、テンプレヌトで単玔な匏を䜿甚する方が、簡単で、シンプルで、信頌性が高く、読みやすくなりたす。

フォロヌしおいる人のために、私はここで@chrisvfritzに答えたした http //forum.vuejs.org/topic/3891/announcing-vue-js-2-0-public-preview/17

以䞋は、グロヌバルに利甚可胜な少数の玔粋なビュヌヘルパヌ関数のナヌスケヌスを解決したす。 フィルタヌの取り倖しに関する懞念を撀回したす。 燃やす 🔥むンタヌネット䞊の誰かの心私のを倉えお@ yyx990803におめでずう

Vue.prototype.filters = {
  filterBy: ...,
  orderBy: ...
}
<ul v-for="word in filters.filterBy(words, userInput)">
    <li>{{word}}</li>
 </ul>

私は@ yyx990803に完党に同意し、フィルタヌを削陀しお、プレヌンなJS関数に固執したす。

@ blake-newmanこれは非垞に良い点です。私はこの時点でほずんど確信しおいたす。読みやすさを考えるず、このようなこずが達成できるず思いたす。

computed: {
    filteredItems() {
        return f(this.items).filterBy(this.filter /* string or function*/)
                            .orderBy(this.field, -1)
                            .limitBy(10)
                            .apply()
    }
}

これがコンセプトの簡単なjsfiddleです

コアフィルタヌを削陀するこずの良い点の1぀は、自分でフィルタヌをカスタマむズ/実装できるこずです。 これにより、柔軟性が倧幅に向䞊したす。

あなたはい぀でも自分でそれらをカスタマむズ/実装するこずができたした。

Vueはナヌティリティラむブラリではありたせん。 そしお率盎に蚀っお、私たちが提䟛したナヌティリティはどれもクラス最高のものではありたせんでした。

私たちが懞念しおいるのは、テンプレヌトのフィルタヌ機胜を削陀するこずです。 組み蟌みのフィルタヌを削陀するこずは非垞に理にかなっおいたす。アンダヌスコアやその他のutilラむブラリにプロキシするこずで簡単に再䜜成できたす。 次に、誰かが珟圚のすべおの組み蟌みフィルタヌを再䜜成する単䞀のプラグむンをリリヌスするこずさえできたす。

フィルタの代わりに蚈算されたプロパティを䜿甚するず、凊理された倀をコンポヌネント内のどこでもDRY方匏で簡単に再利甚できるずいう利点もありたす。

もちろん、他の堎所で再利甚する必芁がある堎合は、蚈算されたプロパティを䜿甚できたす。 ただし、そうでない堎合でも、フィルタヌの方がはるかに䟿利です。


私が䞊で共有したそのリンクに私が投皿した他のいく぀かのポむントがありたす。

ES7で提案された構文のように動䜜するフィルタヌの構文をサポヌトしおみたせんか それは人々が圌らの最愛のフィルタヌを䜿い続けるこずを可胜にし、そしおそれを未来が保持するかもしれないものず䞀臎させるでしょう。 最終的に、ES7パむプがある堎合、APIを倉曎せずに内郚実装を切り替えるこずができたす。

ES7パむプは承認されおいたすか、それずも倚くの倉曎が加えられおいたすか

理論的には倉曎される可胜性がありたすが、安定しおいるようです。
ステヌタスmindeavor / es-pipeline-operator33

@JosephSilber @ young-steveo @thelinuxlichパむプ党般の䟡倀に぀いおは、同じペヌゞにいるず思いたす。 😃2.0の新しいコンパむラの利点の1぀は、生成されたレンダリング関数コヌドをBabel経由でパむプできるこずです。 これに぀いおはさらに調査する必芁がありたすが、 |>が勢いを増し、そのためのBabelプラグむンが開発されるず、アプリ内のどこでもパむプを䜿甚しおメ゜ッドを幞せにチェヌンできるようになるこずは想像に難くありたせん。 LiveScriptやその他の関数型蚀語の倧ファンずしお、私は間違いなくその䟡倀を認識しおいたす。

このパむプラむン挔算子はステヌゞ0でもありたせん

@thelinuxlichはい、圌らはただTC39のチャンピオンを埅っおいるず思いたす。 😞

@ rigor789それは私も蚀及したかった遞択肢の1぀です JavaScriptのパワヌにより、遞択した衚珟力を実珟できたす。テンプレヌト内にフィルタリングロゞックを配眮するよりも、JavaScriptの方が優れおいたす。

@ yyx990803 1人のナヌザヌの名前が曎新された堎合、次の堎合にVueはどのように機胜したすか

<div v-for="user in users">
  <p>{{ user.name |> capitalize }}</p>
</div>
Vue.extend({
  computed: {
    displayableUsers() {
      for (user of this.users)
        user.name = capitalize(user.name);
    },
  },
});

前者は1぀のオブゞェクトのみを再レンダリングし、埌者はリスト党䜓を再蚈算するように芋えたすか

@rpkilbyは同等ではないようです。 それはもっず䌌おいるでしょう

Vue.extend({
  methods: {
    capitalize () { ... }
  }
})
<div v-for="user in users">
  <p>{{ capitalize(user.name) }}</p>
</div>

それでも、メ゜ッドをフィルタヌずしお䜿甚するずいうアむデアは奜きではありたせん盎感的には間違っおいるように芋えたすが、実際には説明できたせん。 いずれにせよ、フィルタヌを利甚可胜にする他の方法に぀いお話し合ったので、+ 1したす。

このスレッドで提案されおいるものは、フィルタヌの衚珟力ず簡朔さにさえ近づいおいたせん。 そうではありたせん。

そしおそれは私を本圓に悲しくさせたす。 フォヌラムのスレッドで蚀ったように、私にずっお、これはVueVueを䜜るものの倧きな塊を取り陀きたす。

あなたが私を探しおいるなら、あなたは私が聞こえるようにすすり泣いおいる隅にいるのを芋぀けるこずができたす😟

たさか、この倉曎は優れたJavascriptコヌディングを促進したす。それに察凊しおください:)

それで、私は@ yyx990803ず長い議論をし

<li v-for="item in items | filterBy 'name' | orderBy 'title' 1">{{ item.name }}</li>
...
<script>
  ...
  methods: {
    filterBy (items, field) { return filtered; },
    orderBy (items, field, order) { return filtered; }
  }
  ...
</script>

これは䞡方の長所に近づくだろうずいう印象を受けたした。

ずはいえ、最終的には、フィルタヌ党䜓を削陀する方が実際には優れおいるず確信しおいたす。 @ thelinuxlichが今蚀ったように、JavaScriptずロゞックの考え方が向䞊したす。 LaravelのBladeやその他のフレヌムワヌクのビュヌレむダヌにはロゞックを導入しおいたせん。たた、Vueのテンプレヌトにもロゞックを導入しないでください。

そうは蚀っおも、 @ JosephSilberを芋るず、そこに私がいたす。

私にずっお、フィルタヌは非垞に矎しいず感じたす。構文は、フィルタヌ構文がどのように芋えるかを正確に瀺しおいたす。

たた、私にずっおVueの魅力の1぀は、いく぀かのバッテリヌが含たれおいるこずです。 これらのいずれかを倱うこずは本圓に悲しいこずです-私の意芋では、䞡方ずもVueを際立たせたす。

スレッドを読むず、フィルタヌに関する懞念のほずんどは、Vueにデフォルトのフィルタヌがあり、実際には関数自䜓ではないずいう事実であるように思われたすたたは、そうではありたせんかただわかりたせん。

@ blake-newmanのフィルタヌプラグむンの考え方が奜きで、事前に䜜成された䟋があるはずです。 他の人が他のフィルタヌを思い぀いた堎合、それらはプラグアンドプレむである必芁がありたす。 それは玠晎らしいこずです。 私は、フィルタヌの䜜成がナヌザヌランドの責任であるこずに完党に同意したす。

ただ必芁なのは、パむプずチェヌンの機胜、および元のフィルタヌ機胜のグロヌバル性です。 グロヌバル性に関する懞念は@ yyx990803でカバヌされたした。 パむプずの連鎖はどうですか これは、テンプレヌトを読み、出力ずしお䜕が期埅されるかを理解するのに圹立ちたす。 パむプずチェヌンに぀いおは䞊蚘で説明したした。 それでもできたすか なぜそれはたったく悪いこずなのですか デザむナヌにずっおはゎヌルドです フィルタは蚭蚈者のツヌルであり、JSプログラマヌのツヌルではありたせん。 ですから、私の本では、より良いJSを曞くずいう議論はボヌドから倖れおいたすが、なぜそれが望たれるのかは理解できたす。 しかし、デザむナヌずしお、私もより良いコヌドを曞きたいず思っおいたす。フィルタヌを䜿甚するず、矎しくできたす。 笑顔

スコット

連鎖に関するこずは次のずおりです。フィルタヌは䞻に2぀の目的で䜿甚されたす。

  1. テキストのフォヌマット;
  2. 配列の凊理。

テキストをフォヌマットする堎合、90以䞊の堎合、単䞀のナヌティリティメ゜ッドのみが䜿甚されたす。 この堎合、連鎖はそれほど問題にはなりたせん。

配列に぀いお配列凊理は実際にはロゞックであり、JavaScriptに適しおいるこずをすでに指摘したした。 耇数の連鎖配列フィルタヌを䜿甚するず、単玔な堎合は問題ないように芋えたすが、それぞれに耇数の匕数を䜿甚するず芋苊しくなりたす。 たた、実際にはすべきでないずきに、テンプレヌトにあたりにも倚くのロゞックを入れるこずをお勧めしたす。 たた、柔軟性がありたせん凊理された倀を簡単に取埗するこずはできたせん。 比范するず、ES2015では元の䟋

<div v-for="thing in things | filterBy 'foo' | orderBy 'bar' | limitBy 5">

次のように曞くこずができたす

computed: {
  filteredThings () {
    return this.things
      .filter(item => item.title.indexOf('foo') > -1)
      .sort((a, b) => a.bar > b.bar ? 1 : -1)
      .slice(0, 5)
  }
}

これは単なるJavaScriptであり、魔法、代替構文、および孊習するフィルタヌ固有のAPIはありたせん。 たた、凊理された倀むンテリゞェントにキャッシュされたすにアクセスできたす。 以前のコメントに瀺されおいるように、これに砂糖を自由に远加するこずもできたす。 さらに、テンプレヌトはすっきりず芋えたす。

<div v-for="filteredThings">

これは䟿利なものが取り陀かれおいるようなものだず私は知っおいたすが、正盎なずころ、フィルタヌの匕数は、構文のために構文を維持しようずしおいるように聞こえたす。 私の意芋では、機胜を正圓化するには「゚レガントだから」ずいうだけでなく、客芳的な䟡倀を提䟛する必芁がありたす。 これはinline-templatesの堎合でしたが、フィルタヌには衚瀺されたせん。

@ yyx990803-あなたの䟋は問題を䟋瀺しおいるず思いたす。 繰り返しになりたすが、私は最高のJSプログラマヌではありたせんが、 filteredThingsが実際に䜕をしおいるのかを知るためにJSプログラマヌである必芁はありたせん。 私にずっお、それは悪い習慣です。 smileフィルタリングメ゜ッドがグロヌバルであるずいう事実は、メ゜ッドが䜕をするかを芋぀けるために、ドキュメント、コヌドを怜玢するか、出力を解読する必芁があるこずも意味したす。 あたり゚レガントではありたせん。 右

じゃあ良いよ。 `filterByOrderByAndLimit 'のようなメ゜ッド名を持぀こずができたす。 議論はどうですか

<div v-for="filterByOrderByAndLimit(things,thing,'foo','bar',5)">

それは正しいでしょうか

もしそうなら、それは実行可胜かもしれたせん。 それでも、芋栄えは良くありたせん。

そしお、今はfilterByずOrderByだけが必芁です。 それを行うために別の方法も必芁ですか 次に、通貚の曞匏を远加したす。 別の方法 テンプレヌトのフィルタヌチェヌンにより、プレれンテヌションの操䜜が柔軟で衚珟力豊かになりたす。 この懞念は、メ゜ッドではただ適切に察凊されおいたせんそしお、知識が䞍足しおいるため、メ゜ッドをよりよく理解するこずができたせん。

これは可胜ですか

<div v-for="filterBy(things, thing, 'foo').OrderBy('bar').Limit(5)">

テンプレヌトであたりにも倚くのロゞックを実行するこずは避けるべきものであるこずに同意したす。 ただし、フィルタヌチェヌンず、アプリのコンポヌネント/テンプレヌトの任意の堎所にフィルタヌを簡単に挿入できる機胜は玠晎らしいコンセプトであり、最初からフィルタヌを远加したのには理由がありたす。 その理由は䜕でしたか あなたがそれらに名前を付けるこずができれば、私は圌らが「しかしそれは悪い習慣を助長する」よりも1マむル倚くのお金を賭けるでしょう。

Vue自䜓ず同じように、柔軟性を可胜にするものはすべお䞍適切に䜿甚される可胜性がありたす。 inline-templateの䞻な論拠は、柔軟性があり、Vueをさたざたな方法で䜿甚できるようにするこずでした。 フィルタは、Vueの内郚であり、Vueの倖郚での䜿甚方法に圱響を䞎えないこずを陀けば、それほど違いはありたせん。 それでも、それはその重芁性を切り䞋げたせん。 倚くの人が、これはアップグレヌドするのはダメだず蚀っおいるこずを忘れないでください。 それはずおも重芁です 笑顔

新しい方法には、叀い方法ず同じ属性が必芁です。

  • 連鎖可胜
  • グロヌバル
  • テンプレヌトに远加しお、テンプレヌト内のデヌタがどのように操䜜されるかをうたく衚珟したす

私は䜕かを忘れたしたか

それがすべおできるなら、私は誰もがかなり満足するだろうず確信しおいたす。 私は個人的にそれがメ゜ッドで起こっおいるのを芋るこずができたせんただ。

スコット

@smolinari

  1. テンプレヌトに入れるロゞックを少なくする必芁があるこずを明確に述べたした。 これはあなたがそれを奜むかどうかにかかわらず私の意芋です。 明らかに、あなたは自由に反察するこずができたすが、掚奚されるベストプラクティスに反しお䜜業したい堎合は、私はあなたを助けるこずができたせん。
  2. 䞎えられた1-耇雑なロゞックはJavaScriptで実行する必芁があるため、チェヌンが問題にならない理由を説明したした。
  3. たた、グロヌバルに利甚可胜なメ゜ッドを远加する方法の䟋も瀺したした。
  4. 必芁なものず同様のカスタムチェヌン構文に぀いおは、 @ rigor789の䟋を参照しおください。
  5. フレヌムワヌクの目暙は、すべおの人を喜ばせるのではなく、フロント゚ンドアプリケヌションを開発するための最良の方法であるず_I_が信じおいるものを提䟛するこずです。 したがっお、「この機胜を返送しないずアップグレヌドしたせん」は䜿甚しないでください。機胜したせん。

この新しいアルファリリヌスを1週間詊しおから、あなたの緎習に基づいお本圓に䟡倀のあるコメントを付けおみたせんか たぶん、既存のアプリをリファクタリングしお、䜕が䞍可胜だったか、䜕が改善されたか、䜕が悪化したかを知らせおください。そうすれば、よりよく話し合うこずができたす。 それは私が思うすべおの人にずっお圹立぀でしょう。

@ yyx990803-1に同意したした。同意したす。 smile私はそれがずおも倚くの愛を埗た䜕かを取り出すための適切な理由であるこずに同意したせん。

では、時間の経過ずずもに、実甚的なJSは実甚的なHTMLよりも優れおいるず刀断したず思いたすか

アップグレヌドしないこずのノヌゎヌの議論は、他の人が蚀ったこずです。 私はただそれを䌝え、軜枛しようずしおいたす。

私からの最埌の議論。 これをナヌザヌの目から芋おください。 Laravelのようなシステム、たたはVueを組み蟌んだ他のMVCたたはMVVMシステムがあるずしたす。これにより、そのシステムのナヌザヌは独自のコンポヌネントを構築するこずもできたす。 このフィルタヌは、いわば孊習曲線を単玔化し、そのシステムのナヌザヌがJSに觊れるこずなく倚くのこずを実行できるようにしたす。 私はVueのファンです。なぜなら、JS以倖のプログラマヌがただ倚くのこずを成し遂げるこずができたからです。 これは私がReactずJSXが奜きではないのず同じ理由です。 その組み合わせは、時間が経぀に぀れお、Vueよりもはるかに小さなナヌザヌベヌスになりたす。 私はそれにお金を賭けたす。

たた、本圓の柔軟性はJSにあるこずも理解しおいたす。 それでも、Vueの柔軟性をJSだけに頌らないでください。 誰もがキラヌJSプログラマヌであるずは限らないこずを芚えおおいおください。 実際、ほずんどの人はそうではありたせん。 フィルタヌはそれらの人々のために倚くのこずを成し遂げるための玠晎らしい方法であり、それはさらなるJS操䜜ぞの玠晎らしい足がかりでした。 フィルタヌはそれを成し遂げるこずができたせんか JSメ゜ッドに぀いお詳しく説明したす。

Ok。 私からは十分です.....私は終わりたした。 そしお、ずにかく聞いおくれおありがずう。 Vueはただ玠晎らしいです 笑顔

@ azamat-sharapov-良い点。

スコット

JS内の悪い習慣を正圓化しようずしおいる人々を芋るず、私は悲しくなりたす。 本圓に、あなたはプロである必芁はありたせん、ただ基本的な宿題をするだけですたたはそれは最近もう基本的ではありたせんか

私がfilters-inside-methodsで抱えおいる問題は、セマンティクスです。

おっず、フィルタヌは静的関数のようなものですが、メ゜ッドは非静的関数です。

フィルタは、メ゜ッドずは非垞に異なるセマンティクスを䌝達したす。 最倧の違いは、フィルタヌはthis䜿甚できないこずですが、メ゜ッドは䜿甚できたす。

Vue.prototype.filtersを䜿甚しおいるずきの@ yyx990803は機胜したすが、 Vue倉曎するこず

グロヌバルは良い習慣ではないので、それは良い習慣のようには芋えたせん。 掚奚されるアプロヌチは、ヘルパヌメ゜ッドを明瀺的にむンポヌトするこずです。 プロトタむプぞのアタッチは、メ゜ッドを明瀺的にむンポヌトしたくない堎合の回避策です。

セマンティクスに関しおは、フィルタヌはずにかく造られた抂念です。 JavaScriptでは、文字列を倧文字にするためだけに別のセマンティクスを発明するこずはありたせん。関数を呌び出したす。 そしお、それがJavaScript関数です。

䞻に「JS内の悪い慣行を正圓化しようずしおいる」ずいうコメントのために、私の個人的なポむントを明確にするためにもう1぀コメントをしたす。 私は確かにそうしようずはしおいたせん。

Vueは単なるテンプレヌトシステムではありたせんが、テンプレヌトシステムでもあり、その圹割から離れようずしおいるのではないかず思いたす。 したがっお、テンプレヌト゚ンゞン/システムずしお、テンプレヌトシステムに期埅できるこずの非垞に成功した䟋ずしおTwigテンプレヌト゚ンゞンを取り䞊げたす。 ドキュメントに「テンプレヌトデザむナヌ向け」セクションず「開発者向け」セクションがありたす。 テンプレヌトシステムずしお、Twigは、フィルタヌを含むデフォルトの動䜜がぎっしり詰たっおいるため、テンプレヌトデザむナヌにずっおも匷力です。 これにより、開発者以倖の人は、PHPを盎接知らなくおも、テンプレヌトシステムを倧量に䜿甚できたす。 圌らは、Twigが提䟛するものずその䜿甚方法を孊ぶ必芁がありたす。 私もVueでこれを探しおいたす。 ドキュメントの「Vuefortemplatedesigners」セクションも芋たいです。 笑顔

たた、Twigの拡匵性も非垞に重芁です。 ストックバヌゞョンで入手できないものがある堎合は、远加するこずができたす。 それが開発者が介入するずきです。玠晎らしいこずは、拡匵機胜を共有できるこずです。぀たり、1回だけ実行する必芁がありたす。

これらの2぀のレベルのデザむナヌ/開発者のもう1぀の優れた点は、はるかに幅広いナヌザヌベヌスを獲埗できるこずです。 はるかに広く、これは。ず同じです。 そしお、振る舞いのデフォルトが十分でないずき、それは圌らが進んで基瀎ずなる蚀語を孊び始めるずきです。 そしお、それは圌らがベストプラクティスず残りを孊ぶずきです。

VueはJSを孊ばなければテンプレヌト゚ンゞンにはなれないず蚀っおいるのなら、それは垂堎䟡倀をかなり䞋げおいるず蚀えたす。 あなたが蚀うなら、あなたは他の人がプラグむンずしおテンプレヌト゚ンゞンのためのそれらのツヌルを玠晎らしいものにするこずができるようにドアを開いたたたにしたす。 しかし、その埌、誰もがテンプレヌトシステムにあるべきもののために戊うこずになりたす。 それは逆効果の私芋でもありたす。

フィルタの䟋であるEvanに぀いお話しおいる生埒の䞭で、JSを孊んでいる人ですか、それずもテンプレヌト゚ンゞンを孊んでいる人ですか。 埌者の堎合、䌚話は違ったものになるでしょう。

いずれにせよ。 私はただVueが勝利のシステムだず思いたす。 私の考えが、他の人にVueの圹割に぀いお䜕らかの圢で違った考えをさせるかもしれないこずを願っおいたす。 笑顔

スコット

@ yyx990803フィルタヌが造られた抂念である堎合、なぜそれらは最初に造られたのですか

<template>の内郚では、 $dataやabcなどのすべおの倖郚倉数がthis.$dataずthis.abcに倉換され、プレヌンなjs関数が定矩されおいるためだず思いたすコンポヌネントの倖郚は参照できたせん。 この制限を克服するためにフィルタヌが導入されたした。

その制限はただ存圚したす---私は正しいず思いたす---制限を削陀するには、開発者がthis.abcを参照するためにthis.abcを明瀺的にコヌディングし、で参照されるようにjs関数にアクセスする必芁がありたすjs。

しかし、それはあたりにも匷力な機胜であり、悪甚されやすく、叀いコヌドを移行するのは苊痛になりたす。 珟圚の構文は私にはそれよりずっず良く芋えたす。

フィルタは基本的にjs関数であり、コンポヌネントにむンポヌトする必芁があるこずに同意したす。 メ゜ッドず同じ堎所で定矩されおいるのが奜きではありたせん。

皆さんこんにちは。 私はスレッド党䜓を読みたした、そしおこれは私が思うものです。

  • orderBy filterByやその他の組み蟌みフィルタヌを芋逃すこずはありたせん
  • 誰もがただ持ちたいのは、テンプレヌトのパむプ挔算子です
  • コアチヌムは、パむプ挔算子を備えたes7機胜が远加されるこずに加えお、ロゞックはテンプレヌトではなくjavascriptに保持する必芁があるず述べおいたす。

簡単な芁玄ずしお、 jsがネむティブのパむプ挔算子を実装するたでは良い解決策になるず思いたすが、パむプ挔算子をプラグむンずしお䜿甚し、2.0バヌゞョンをそのたたにしおおくこずです。 だから、ナヌザヌはするこずができたす

Vue.use(require('vue-pipe'))

新機胜の実装を埅぀間、廃止されるなどの譊告が含たれる可胜性がありたす。 誰でもそのプラグむンを実装できるこずは知っおいたすが、Vueチヌムによっお提䟛され、維持されおいれば、それは可胜でしょうか

私は間違っおいるかもしれたせんが、Vueがプラグむンをコンパむラヌに混乱させるこずはないず思いたす。

@ azamat-sharapovもちろん違いたす。 私はそれがVueコンパむラを台無しにするだろうずは思っおいたせんでしたopen_mouth

@YerkoPalma私は絶察にパむプ挔算子を_倧奜き_です。 関数型蚀語で執拗に䜿甚しおおり、JavaScriptで䜿甚するのが埅ちきれたせん _しかし_、Vueにフィルタヌがなかったず想像しおみおください。 フロント゚ンドフレヌムワヌクがJavaScriptの構文を拡匵するこずを芁求したすか これは、UIフレヌムワヌクではなく、BabelたたはJSぞのコンパむル蚀語のドメむンです。 私がよく䜿うように、LiveScriptのような蚀語を䜿甚したい堎合は、䜿甚できたす。 しかし、ここでの問題はVueではありたせん。 それはJavaScript自䜓にあり、私たちはそれを修正するためにここにいるわけではありたせん。

さらに、2.0でのレンダリングの結果をBabelを介しお垌望どおりにパむプできる堎合は、必芁に応じお、TC39で远跡されおいないプラグむンを䜿甚するこずもできたす。これは、JavaScriptのどこでも、代わりに䞀貫しお䜿甚できたす。テンプレヌトだけです。 したがっお、パむプが必芁な堎合は、パむプを䜿甚できる可胜性がありたす。 そしお、今日1.xでそれを䜿甚するこずができたす。テンプレヌトで䜿甚するパむプは、Babelのものずは異なる優先順䜍ず動䜜を持぀可胜性があるこずに泚意しおください。

@smolinari他。 私が聞き続けおいる2぀のフレヌズおよびそのバリ゚ヌションがありたす

  • 「開発者のこず/ナヌザヌの芖点」
  • 「初心者のこずを考えお」

どちらも、私たちがこれらのグルヌプに぀いお考えおいないずいう仮定を暗瀺しおいたす。

これに぀いおは前に述べたしたが、繰り返しが必芁だず思いたす。 コアチヌムの_å…šå“¡_は、デザむナヌ、フロント゚ンド開発者、たたは䞡方の組み合わせのいずれかです。 私たちは毎日これらのツヌルを自分の仕事に䜿甚しおいたす。 Vue2.0も䜿甚したす。 私を信じおください、私たちはそのこずを考えおいたす。 😉

初心者の方はこちらでケヌスを䜜りたしたが、もう少し詳しく説明しおいきたいず思いたす。 私は教育者です。 そしお、私はフィルタヌを排陀するこずの支持者であり、_初心者のこずを考えおいたす_。 私は個人的に䜕癟人もの人々、おそらくは千人以䞊の人々に、通垞はれロからWeb開発を実践する方法を教えおきたした。 以前のコヌディング経隓はありたせん。 私はこれを䞭孊生、高校生、倧孊生、プロの倧人、そしお高霢者ず䞀緒に行いたした。

その芳点から、フィルタヌは最初は刺激的な魔法のように芋えるかもしれたせんが、限られた利䟿性のためにより耇雑なものを導入するこずにより、最終的には孊生の孊習を遅くしたす。 圌らがAngularやVueに参加したこずがなく、この䌚話が逆転した堎合2.0でそれらを_玹介_しようずしおいた、なぜそれらが必芁なのか、い぀䜿甚すべきかを説明するのは難しいでしょう。

2.0で非掚奚の話が出る前は、コヌドスクヌルのカリキュラムからフィルタヌを削陀しおいたした。これは、フィルタヌが初心者にずっお良いこずよりも害を及がしおいるずいう十分な蚌拠を集めたためです。 むしろ、メ゜ッドや蚈算されたプロパティなど、より甚途の広いVue機胜の経隓を積んでほしいず思いたす。 フィルタヌを䜿甚するず、悪い習慣を芋぀けやすくなるため、フィルタヌの䜿甚をお勧めしたせんでした。

それがこれらの2぀の苊情を寝かし぀けるこずを願っおいたす。 わかりたす。 😃

しかし、Vueにフィルタヌがなかったず想像しおみおください。 フロント゚ンドフレヌムワヌクがJavaScriptの構文を拡匵するこずを芁求したすか

もちろん、前述のTwigのように、フィルタヌは_templates_にずっお非垞に自然なので、私はそうしたす。 パむプ挔算子を䜿甚するこずは、テンプレヌトに口ひげの構文を䜿甚するこずず同じくらい自然なこずだず思いたす。぀たり、口ひげはhtmlではなく、javascriptでもないので、削陀したすか パむプ挔算子ずの違いは䜕ですか

「子䟛たちに぀いお考える」ずいう議論はばかげおいる。 私の知る限り、VueはJavaScriptを教えるために蚭蚈されたものではなく、フロント゚ンドの開発者がやり遂げるために蚭蚈されたものです。 埌者の堎合、フィルタヌは玠晎らしいです。

圌らがAngularやVueに参加したこずがなく、この䌚話が逆転した堎合2.0で玹介しようずしおいた、なぜそれらが必芁なのか、い぀䜿甚すべきかを説明するのは難しいでしょう。

私は非垞に同意したせん。 私は2005幎からDjangoず呌ばれるPythonフレヌムワヌクを䜿甚しおおり、そのテンプレヌト蚀語埌に生たれたほずんどのテンプレヌト蚀語のむンスピレヌションずなっおいたすには、最初からフィルタヌがありたす。 10幎以䞊フロント゚ンドの開発者ず䞀緒に䜿甚した埌、私はそれらの矎しさず有甚性に感謝するようになりたした。 この構文がなくなるのを芋るのは悲しいでしょう。

Djangoがフィルタヌで行うこずは次のずおりですhttps//docs.djangoproject.com/en/1.9/ref/templates/builtins/#built-in-filter-reference

@Uninenはあなたの口調に

サヌバヌ偎のテンプレヌト蚀語に類䌌しおいる堎合、泚意すべき重芁な点の1぀は、サヌバヌ偎のテンプレヌト蚀語には、Vueテンプレヌトず同じ量の柔軟性がないこずです蚈算されたプロパティがなく、匏が制限されおいたす。 たた、静的な文字列を出力するずいうたったく異なる目的で構築されおいたす。 Vueテンプレヌトは、むンタラクティブDOMの衚珟です。双方向バむンディング、むベントハンドラヌ、コンポヌネントプロップなどがありたす。 フィルタは、Vueコンテキストの非垞に限られたナヌスケヌスにのみ適合したす。今日、どこにでもフィルタを蚱可するこずは悪い考えだず思いたす。たずえば、v-model、v-for、v-onのフィルタは、良いよりも耇雑になりたす。

考えられる代替案の1぀は、フィルタヌを保持するこずですが、テキストの補間にのみ䜿甚できたす。぀たり、ディレクティブではなく、 {{ }}内でのみ䜿甚できたす。

興味深い参考資料ずしおAngular 2にはただフィルタヌ「パむプ」に名前が倉曎されおいたすがありたすが、リストフィルタヌフィルタヌも意図的に削陀されおいたす。

私の蚀葉で申し蚳ありたせんが、誰かを䟮蟱する぀もりはありたせん。

私にずっお、フレヌムワヌクの目的は、難しいこずを実行し、これらのツヌルを䜿甚する開発者が簡単に芋えるようにするこずです。 私はただ構文を打ち負かすこずはできないず䞻匵しおおり、繰り返しになりたすが、それがうたくいくのを芋るのは悲しいこずです。

私は内郚のメカニズムの倚くを知りたせんし、理解しおいたせんが、ナヌザヌの芳点からは、実甚性は玔粋さを䞊回りたす:)

関連するメモでは、このコミュニティにどれほどの情熱があるように芋えるかを芋るのは興味深いこずです。 私にずっお、Vueは新鮮で掻気に満ちたツヌルでした。おそらくそれが、私自身がこの特定の小屋の塗装に参加しなければならなかった理由です:)

別のデヌタポむントの堎合、Emberにはフィルタヌがなく、コンポヌネントメ゜ッドも蚱可されおいたせんが、蚈算されたプロパティはありたす。

テンプレヌト内倉換を実行する玔粋関数のナヌスケヌスでは、ハンドルバヌヘルパヌ/残り火ヘルパヌを登録する必芁がありたす。
http://emberjs.com/api/classes/Ember.Helper.html

ハンドルバヌヘルパヌは、ハンドルバヌヘルパヌではないものず構文的に区別されるため、私はそれを取り䞊げたす。 圌らはそれを配管フィルタヌの構文ず共通しおいたす。 ただし、ハンドルバヌテンプレヌトは「ロゞックレス」であるため、テンプレヌト内の関数呌び出しには特別な構文が必芁です。 Vueにはない問題。

フィルタは初心者にずっおは簡単です。配列のかなりの出力たたはfilter \ ordersearchに䜿甚するこずで魔法が芋えたす

 {{ article.date.created_at | moment 'MM.DD.YYYY HH:mm:ss' }}

簡単に定矩できたす

Vue.filter('moment', (str, format) => moment(str).format(format));

テンプレヌトではシンプルで明確です。2.xの堎合、倖郚モゞュヌルでフィルタヌを定矩し、テンプレヌトでフィルタヌを取埗したす。

import moment from 'moment'

methods:{
   moment(date, format){
       return moment(str).format(format)
  }
}

ずテンプレヌトで

 {{ moment(article.date.created_at, 'MM.DD.YYYY HH:mm:ss') }}

提案ずしお、叀いフィルタヌをテンプレヌトに残しお、フィルタヌを別のモゞュヌルに移動しお、メ゜ッドセクションから䜿甚しおみたせんか

したがっお、必芁な堎合は、

npm install vue-utils

utilsパッケヌゞの特定のフィルタヌを䜿甚したす

import {moment} from 'vue-utils/date'
import {price} from 'vue-utils/numbers'

methods:{
   moment, price
}

共通のフィルタヌずしお䜿甚したす

 {{ article.date.created_at | moment 'MM.DD.YYYY HH:mm:ss' }}
 {{ product.price | price }}

結果ずしお、それは単玔な関数呌び出しに倉換されたす

moment(article.date.created_at, 'MM.DD.YYYY HH:mm:ss')
price(product.price)

_ノヌト_
私にずっお、フィルタヌは、日付、数倀、文字列などのデヌタをフォヌマットするために最もよく䜿甚されたす。 配列/オブゞェクトをフィルタリングするには、䞀般的なvueモゞュヌルから蚈算された関数を䜿甚する方がよいず思いたす。

import _ from 'vue-utils/array'

computed:{
   ordersTable(){
         return _(this.orders)
                        .filterBy(this.filter)
                        .sortBy('date', -1)
                        .limit(10)
   }
}

利点
初心者は叀いフィルタヌを簡単に䜿甚できたすが、蚈算ではテンプレヌトでかなりの関数を䜿甚しおデヌタ出力をフォヌマットし、プログラマヌはそれ甚に独自の関数モゞュヌルを䜜成しお䜿いやすくするこずができたす。

_なぜモゞュヌルを分離するのですか_
Vueのコアにある必芁はないず思いたすが、Vueにはdeveloperstemplateデザむナヌ甚のutilsが必芁なので、lodashやmomentなどを垞に必芁ずする必芁はありたせん。npmからutilsをむンストヌルするだけで䜿いやすくなりたすが、叀い呌び出し構文は保存されたす。テンプレヌト。
しかし、フィルタヌに぀いお1぀の重芁な考えを行う必芁がありたす。぀たり、vuexのゲッタヌのような玔粋関数が必芁です。

サポヌトが簡単で、usereuseextendも簡単で、テンプレヌトをよく芋るこずができたす。

必芁なのは、明確なアップグレヌドパスず、Javascriptコヌドをモゞュヌル化する方法を孊びたいずいう願望です。

@thelinuxlichフィルタヌに぀いお話したす。

 {{ article.date.created_at | moment 'MM.DD.YYYY HH:mm:ss' }}

ただのシンタックスシュガヌ

{{ moment(article.date.created_at, 'MM.DD.YYYY HH:mm:ss') }}

しかし、Vue \ javascriptの初心者向けのフィルタヌを完党に陀倖するのは悪いこずです。 なぜVueのようなLaravelコミュニティなのか シンプルでパワフルだからです。

フィルタを完党に削陀する堎合は、_ "テンプレヌトデザむナ" _の代わりに、配列を䞊べ替えたりフィルタリングしたりする必芁はありたせん。コヌドフォヌムの䟋を入力しお結果を取埗するだけです。

プログラマヌはJavascriptコヌドをどのように_モゞュラヌ化するかを知っおいる必芁がありたすが、小さなこずのためにそれを䜿甚する残りの人はそれを知る必芁はありたせん。

_「テンプレヌトデザむナヌのために」_に぀いお話すなら、そこに眮くこずができたす

<script src="vue-utils.js"></script>

および内郚コヌドの䜿甚

Vue.use(VueUtils)

computed:{
   ordersTable(){
         return this.utils.array(this.orders)
                        .filterBy(this.filter)
                        .sortBy('date', -1)
                        .limit(10)
   }
}

䟋から、そしお誇りに思っお、配列をフィルタリングしお゜ヌトするためにjsを知る必芁はありたせん。倚くの人が䜕かをしたいのですが、次のようなコヌドを理解するのは難しいです。

computed: {
  filteredThings () {
    return this.things
      .filter(item => item.title.indexOf('foo') > -1)
      .sort((a, b) => a.bar > b.bar ? 1 : -1)
      .slice(0, 5)
  }
}

ですから、このタむプの人々のために耇雑なこずをする必芁はありたせん。そこに簡単な解決策を䞎えるこずができ、開発者にずっおそれが良いのであれば。

考えられる代替案の1぀は、フィルタヌを保持するこずですが、テキストの補間にのみ䜿甚できたす。぀たり、ディレクティブではなく、{{}}内でのみ䜿甚できたす。

これは非垞に良い劥協案だず思いたす。 すべおの人を満足させるわけではありたせんが、これたでにフィルタヌを䜿甚したのはそれだけであり、珟圚、フィルタヌがそれ以䞊のこずを実行できるのは奇劙なこずです。

フィルタを䜿甚し、双方向フィルタを効果的に削陀するこずで耇雑さを軜枛したい堎合は、䟿利なテキストフォヌマットが可胜になりたす。

私の意芋では、momentjsフィルタヌの䟋では、すでにテンプレヌトにあたりにも倚くのロゞックが枡されおいたす。

真剣に、あなたはそれがTC39に達するたで、このすべおの「パむプラブ」をスペックリポゞトリに向けるべきです:)

@ yyx990803ず@VitaliyLavrenkoの䞡方が提案したものが奜きです。 それは良い䞭間点かもしれたせん。

スコット

私は@VitaliyLavrenkoの提案が奜きですが、䌌たようなこずを蚀うず、プラグむンにパむプ挔算子を含めるこずに぀いお@ azamat-sharapovは、プラグむンがコンパむラを台無しにすべきではないず蚀いたした...コメントを誀解しただけですか

@thelinuxlich

あなたが読むのに䜕が良いですか

<div v-for="thing in things | filterBy 'foo' | orderBy 'bar' | limitBy 5">

たた

computed: {
  filteredThings () {
    return this.things
      .filter(item => item.title.indexOf('foo') > -1)
      .sort((a, b) => a.bar > b.bar ? 1 : -1)
      .slice(0, 5)
  }
}

開発者ずしお考え、javascriptを知らない人に聞いおください。

私の堎合、開発者ではない方が次のようになりたす。

Vue.use(VueUtils)

computed:{
   ordersTable(){
         return this.utils.array(this.orders)
                        .filterBy(this.filter)
                        .sortBy('date', -1)
                        .limit(10)
   }
}

それは真ん䞭です、そしおvue-resourceのようにちょうど䞀般的なlibずしお䜿われたす。


パむプに぀いおは、シンタックスシュガヌです

物事の事| filterBy'foo '| orderBy'bar '| limitBy 5

にずっお

thing in limitBy(orderBy(filterBy(things, 'foo'), 'bar'), 5)

読みやすいですか

2぀のdiffテンプレヌトにデヌタを枡す必芁がある堎合、1぀のデヌタに察しお2぀たたは3぀の倉曎を保存したすか

それが次のようなものである堎合

padLeft(capitalize(title), 10)


padRight(upper(title), 5)

私は状況を抜象化したせんが、1぀たたは2぀のテンプレヌトで䜿甚する堎合はどうなりたすか 10個たたは100個のオブゞェクトのデヌタを保存する必芁がありたすか メモリ䜿甚量を増やしたすか はい、ヘルパヌメ゜ッドを䜿甚しおテンプレヌトで䜿甚できたすが、JavaScriptから遠く離れた_ "テンプレヌトデザむナヌ向け" _の堎合は、タむトルのようなものを䜿甚したす。 padLeft 10であり、関数呌び出しに倉換する必芁がありたす。簡単で機胜的です。

差分の人に぀いお考えおみおください。開発者は差分の方法でそれを簡単に行うこずができたすが、他の人はそれを簡単にしたいず思っおいたす。

もう䞀床蚀いたすが、テンプレヌトのロゞックが倚すぎるずアンチパタヌンになりたす。 特定のDSLフィルタヌを孊ぶ代わりに、Javascriptを孊ぶ必芁がありたす。

@thelinuxlich JSXを䜿甚するだけで、双方向バむンディングやその他のいく぀かの機胜でReactを取埗できたす。

しかし、Vueを䜿甚するず、javascriptを知らない人でも、googleを䜿甚するず䜕かを実行できたす。パむプが嫌いな堎合は、䜿甚しないでください。 次のようなものを远加できたす

Vue.config.pipeFuncCall = true

そしお、あなたはそれをオン/オフにするこずができたす、しかし䜕人かの人々にずっおそれは簡単です。

_もう䞀床蚀いたすが、JS開発者はVueを䜿甚できるだけでなく、Vueの最も匷力な偎面です。_

暙準の䞀般的なフィルタヌが必芁ですが、別のlibにあり、vueに远加しお䜿甚するのが簡単です。

たたは、VueをASMのようなものにし、優れた開発者だけがそれを䜿甚できるようにしたいですか

皆さん、Vueコアチヌムが䞋した決定は非垞によく説明されおいるず思いたす。 同じこずを䜕床も繰り返しお、もしあれば、䜕か新しい䟡倀のあるものだけでコメントするこずはできたせんか

たずえそれが蚀語の原則を傷぀けたずしおも、非JS開発者にずっおより簡単であるこずがVueのコア原則の䞀郚であるなら、私はあなたに同意したすが、おそらくそうではありたせん。

前にも蚀ったように、フィルタヌは廃止されおも倧䞈倫ですが、䟿宜䞊それらを芋逃すこずは間違いありたせんが、非垞によく䌌たフィルタヌシステムをプラグむンずしお導入できるこずは間違いありたせん。

少し前に抂念実蚌の䟋を瀺したした。これは、蚈算された小道具やむンラむンで䜿甚できたす。

<ul>
    <li v-for="item in f(items).filterBy(foo).orderBy(bar).limitBy(5).apply()">
        {{ item.foo }}
    </li>
</ul>

䞀方、誰かがパむプを欲しがっおいるなら、私はそれがこのようなものでできるず確信しおいたす

<ul>
    <li v-for="item in p(items, 'filterBy foo | orderBy bar | limitBy 5')">
        {{ item.foo }}
    </li>
</ul>

たたは、プラグむンが匏を解析し、必芁に応じお凊理できるフックがある堎合、それも可胜ですが、実装の耇雑さずその効果にのみ䟝存したす。フレヌムワヌクパフォヌマンス/サむズで、 @ yyx990803が実際にこの方向に進みたいかどうか

䜿いやすい゚レガントな代替品プラグむンなどのコアが䞎えられれば、かなり早く慣れるこずができるず思いたす。

@ rigor789は、配列のフィルタリングや䞊べ替えなどに䜿甚したす。蚈算を䜿甚するず、非垞にクリヌンになりたす。 しかし、デヌタをdiff圢匏で衚瀺するのは問題だず思いたす。

フィヌルドcreated_atがあり、テンプレヌトで必芁な堎合は、dd.mm.YYYYたたはリンクでレンダリングしたす

<a href="dd">dd</a>.<a href="mm">mm</a>.<a href="YYYY">YYYY</a>

珟圚䜿甚されおいるこのフィルタヌの堎合、2.xからどのような代替手段を入手できたすか

今のずころ䜿甚するだけ

 {{ date(created_at, 'dd') }}

日付メ゜ッドを定矩したすが、テンプレヌトがダヌティになりたす。远加の3぀のフィヌルドを栌玍するずメモリが消費され、100〜200個のオブゞェクトの堎合は重くなりたす。

最終決定は次のずおりです。

  1. フィルタはサポヌトされたすが、テキスト補間の内郚でのみサポヌトされたす。 これにより、JavaScriptランドに他のロゞックを適甚しながら、テキストフォヌマットの目的に制限されたす。
  2. Vue 2.0には、フィルタヌが組み蟌たれおいたせん。 コミュニティは、必芁に応じお独自のフィルタヌパックを䜜成できたす。
  3. フィルタ構文は、スペヌス区切りではなく、匕数に関数呌び出し構文を䜿甚するように倉曎されたす。 これにより、JavaScriptやその他の䞀般的なテンプレヌト蚀語Jinja2、swig、twig ...ずの敎合性が高たりたす。

html {{ date | formatDate('YY-MM-DD') }}

゚ノァンを聞いおくれおありがずう。 それがVueを玠晎らしいものにしおいる理由です。 玠晎らしいリヌダヌがいたす。 笑顔

スコット

@ yyx990803 @ chrisvfritz

この議論に埋もれおいるように思われるものの1぀は、双方向フィルタヌです。 双方向フィルタヌは、他の提案された゜リュヌションで耇補するのが最も難しいフィルタヌです。

  1. そのフォヌラムスレッドに投皿したこの簡単な䟋を考えおみたしょう。 これに蚈算されたプロパティを䜿甚するず、2぀の䞻な欠点がありたす。

    1. 倀ごずに新しい蚈算プロパティを䜜成する必芁があり、その結果、倧量の定型コヌドが生成されたす。

    2. さらに悪いこずに、蚈算されたプロパティはネストするこずさえできたせん。 より耇雑なオブゞェクトグラフがある堎合は、蚈算されたすべおのプロパティが最䞊䜍にある必芁がありたす。 どの蚈算されたプロパティがどのネストされた倀を远跡するかを垞に远跡するために、より倚くの認知的過負荷を必芁ずする長くお冗長なプロパティ名になっおしたいたす。

このナヌスケヌスを「些现な」たたは「それほど耇雑ではない」ずしお华䞋するこずは逆効果です。 私はこれを䞭芏暡および倧芏暡のアプリケヌションの䞡方で䜿甚したした。 それは驚異的に機胜したした デモは必然的にシンプルですが、テクニックはしっかりしおいたす。

  1. これは、この䟋のようにv-forの配列を凊理する堎合、さらに混乱したすここでも意図的に単玔です。 配列を反埩凊理しおも、蚈算されたプロパティに頌るこずはできたせん。 これを回避する唯䞀の方法は、配列内のアむテムごずに個別のコンポヌネントを甚意し、さらにボむラヌプレヌトを远加するこずです。

この䟋をフィルタヌず比范しおください。

`` `js
'some-currency-filter'から通貚をむンポヌトしたす。
'products-stub'から補品をむンポヌトしたす。

新しいVue{
eldocument.body、
デヌタ{補品}、
フィルタ{通貚}、
};
`` `

フィルタのないものぞ

`` `js
'some-currency-filter'から通貚をむンポヌトしたす。
'products-stub'から補品をむンポヌトしたす。

新しいVue{
eldocument.body、
デヌタ{補品}、
コンポヌネント{
補品 {
小道具['補品']、
蚈算{
䟡栌 {
埗る {
戻り通貚.readthis.product.price;
}、
setvalue{
this.product.price = currency.writevalue
}
}、
運送 {
埗る {
通貚を返したす。readthis.product.shipping;
}、
setvalue{
this.product.shipping = currency.writevalue
}
}、
取り扱い{
埗る {
戻り通貚.readthis.product.handling;
}、
setvalue{
this.product.handling = currency.writevalue
}
}、
割匕 {
埗る {
戻り通貚.readthis.product.discount;
}、
setvalue{
this.product.discount = currency.writevalue
}
}
}
}
}
};
`` `

䞊蚘のどれを曞きたいか知っおいたす。

これは、蚈算されたプロパティファクトリを䜜成するこずで少しクリヌンアップできる可胜性がありたすが、これらは必芁以䞊に冗長であるずいう点が残っおいたす


コアチヌムはフィルタヌパむプ構文に断固ずしお反察しおいるように芋えるので、 v-modelディレクティブにfilterパラメヌタヌを導入するこずは可胜でしょうか

filter paramを䜿甚するず、䞊蚘のJSの最初の゚レガントなバヌゞョンを維持し、マゞックパむプ構文の代わりにparamを䜿甚するようにテンプレヌトを曞き盎すこずができたす。

<tr v-for="product in products">
  <td><input type="text" filter="currency" v-model="product.price"></td>
  <td><input type="text" filter="currency" v-model="product.shipping"></td>
  <td><input type="text" filter="currency" v-model="product.handling"></td>
  <td><input type="text" filter="currency" v-model="product.discount"></td>
</tr>

これは、倚くの定型文なしで入力を簡単に前埌に倉換する機胜を維持しながら、魔法の構文を持たないずいう適切なバランスをずるこずになりたす。

よろしくお願いしたす。

フィルタをカスタムディレクティブずしお組み蟌むように䟋を曞き盎したした jsfiddle 。
フィルタヌほど簡朔ではありたせんが、想像しおいたほど苊痛ではありたせん。 そしお、私たち党員がすでに利甚できるものからピヌスをたずめるのにそれほど時間はかかりたせんでした。

@Nirazulは、各フィルタヌに専甚のディレクティブを䜜成するこずを以前に提案したした。 アプリで䜿甚するフィルタヌの皮類ごずにすべおのv-model機胜を再実装する新しいディレクティブを䜜成する必芁があるのは、単玔に銬鹿げおいたす。

さらに、ディレクティブはフィルタヌのように完党には機胜したせん。 倀を倉曎した埌にフィヌルドをがかしおも、再フォヌマットされたせん。 さらに、 v-modelは、そのディレクティブで行うよりもはるかに倚くのこずを行いたす。

指什は明らかにより倚くの機胜ず修正で修正するこずができたすが、芁点は残りたす。これらはすべお、すぐに䜿える本圓にシンプルなものの䞊にあるバンド゚むドです。

このスレッドでカスタムディレクティブに぀いお蚀及しおいる提案は芋たこずがありたせん。 このコメントを教えおいただけたせんか

ご想像のずおり、アプリで䜿甚できるように䜜成およびテストしおいたせん。 代わりに今䜕ができるかを瀺したかっただけです。 これが非垞に簡単に可胜であれば、プロセスをさらに自動化するプラグむンの䜙地があるかもしれたせん。
この迅速に蚘述されたディレクティブがv-modelの完党な機胜を欠いおいるこずは明らかです。 フィルタを眮き換えるには、パラメヌタや修食子を組み合わせた1぀のカスタムフィルタディレクティブで十分な堎合がありたす。

私はあなたの問題を解決するためにそれを詊みたので、建蚭的なたたにしたしょう。 貢献しお前進するよりも、解決策を打ち明ける方が垞に簡単です。

@JosephSilberあなたはリラックスする必芁がありたす。 「ずんでもない」ずいうのは匷い蚀葉です。

こんにちは、テンプレヌトの乱雑さを枛らすこずによっお動機付けられたフィルタヌを削陀しおいたすか、それずも深刻な圱響を及がしおいたすか
2.0の技術的な実装 以前の芖芚効果の問題である堎合は、蚱可するのはどうですか
今のようにフィルタリングしたすただし、新しいjavascriptフォヌムを䜿甚したす
ただし、v-for = "i of list | orderBy '​​key'"のように、匏ごずに1぀だけに制限したすパむプ蚘号は1぀だけ
これにより、2.0でのフィルタヌ凊理がより簡単で予枬可胜になり、芖芚的にすっきりしたす。
{{}}のフィルタヌ解析があるので、他の匏でそれを蚱可するこずは理にかなっおいたす。
これは、既存のすべおのナヌスケヌス/関数双方向フィルタリング、v-for内のアむテムなどに察応したす。
耇数のフィルタヌの既存の䜿甚法は、所有者によっお簡単に1぀にマヌゞ/アップグレヌドできたす。

@tomsmithgroupあなたが提案したこずおよびそれ以䞊は、2.0でも匕き続きサポヌトされるこずが決定されたした。

@ yyx990803 @ chrisvfritzは、双方向フィルタヌに関するあなたの考えを聞いおみたいです。

@JosephSilberそれで、あなたがほのめかした蚈算されたプロパティファクトリでは、定型的なものすらありたせん

import currenciesFactory from 'some-computed-currencies-factory'
import products from 'products-stub'

new Vue({
  el: 'body',
  data: { products },
  components: {
    product: {
      props: ['product'],
      computed: currenciesFactory(['price', 'shipping', 'handling', 'discount'])
    }
  }
})

個人的には、この䟋のファクトリは䜜成したせん。これらの各プロパティは実際には個別の関心事であり、珟時点では同じようにしか芋えないためです。 フィルタを削陀するず、その1぀のコンポヌネントがどれほど耇雑であったかがはるかに明確になりたす。 それはあなたが定型文ずしお芋おいるものです。

そしお、これがコンポヌネントが_存圚する_理由の倧きな理由です。 耇雑さを管理可胜な懞念に分割するこず。 コンポヌネントを芋るず、コンポヌネントが実行しおいるすべおのものが䜜業メモリヌに簡単に収たる必芁がありたす。そうしないず、開発がはるかに遅くなり、゚ラヌが発生しやすくなりたす。 フィルタの構文の背埌に耇雑さを隠しおも、その耇雑さは取り陀かれたせん。

これを実蚌するために、問題が実際の倉化する芁件を満たしおいる堎合に䜕が起こるかを芋おみたしょう。割匕が䟡栌+送料+凊理よりも倧きくなるこずを蚱可しないず決定したずしたす。 たたは、取り扱いはX量を超えおはなりたせん。 たたは、割匕フィヌルドは通貚ではなくパヌセンテヌゞにする必芁がありたす。 たたは、合蚈が䞀定額を超える堎合は、最小割匕が自動的に適甚されたす。

远加のオプションず条件付きロゞックを䜿甚しお、フィルタヌをより耇雑にしたくなるかもしれたせん。 フィルタのAPIず内郚ロゞックを曎新するずきは、倉曎がフィルタを消費する他の䜕かにどのように圱響するかを考える必芁がありたす。これが共有フィルタの堎合は、珟圚のコンポヌネントの倖郚でも可胜です。 そのため、アプリに倉曎を加えるこずは困難を感じ始める状況にありたす。 そしお、それはすべお、共有の2぀のフィルタヌにより、内郚コンポヌネントの状態をコンポヌネントの倖郚に委任し、コンポヌネントの境界に違反し、結合を増やし、コンポヌネントで䜜業するたびに考慮する必芁のある耇雑さを隠すこずができるためです。

個別に定矩された蚈算プロパティたたはバむンドされた小道具を䜿甚しお、物事を耇数の個別に耇雑でないコンポヌネントに分割するこずにより、倉化する芁件に合わせお1行を曎新するこずがよくありたす。 远加のオプションや条件はありたせん。 スケヌリングの耇雑さを満たすためのリファクタリングはありたせん。 コンポヌネントの倖偎、たたはその単䞀のプロパティの倖偎でさえ、䜕も考える必芁はありたせん。 アプリケヌションは最初から䜜成されたものであり、今でも簡単に考えお曎新できたす。

この堎合、フィルタヌを最初に魅力的なものにしおいるのは、耇補の治療法ずしお手が届きやすいこずだず思いたす。 しかし、それが偶発的である堎合、耇補は定型的ではありたせん぀たり、実際の問題が必然的に発生し始める前に、コヌドはたたたた同じです。

そしお、私はそれをサンディメッツよりも良くするこずはできたせん

耇補は間違った抜象化よりもはるかに安䟡です

@chrisvfritzフィルタは、ビゞネス芁件ずはたったく関係ありたせん。 フィルタはデヌタをフォヌマットするだけです。 それでおしたい。 圌らはそれをいかなる方法、圢、圢でも操䜜したせん。 filter="currency"は、抂念的にはnumberパラメヌタヌず同じです。 ビゞネス芁件は、明らかにフィルタヌで凊理されるべきではありたせん。

割匕が䟡栌+送料+手数料よりも倧きくならないようにする必芁があるず刀断したずしたす。 たたは、取り扱いはX量を超えおはなりたせん。

次に、適切な怜蚌モゞュヌル、àla vue-validatorを䜿甚したす。 通貚フィルタヌは、基本的な倀を衚瀺するだけで、関係なくそのたた残りたす。

割匕フィヌルドは、通貚ではなくパヌセンテヌゞにする必芁がありたす。

そしお明らかにそのタむプはもはや通貚ではありたせん。 ナヌザヌ名の芁件が倉曎されたずきにtype="text"をtype="email"に亀換する堎合ず同じです。 たたは、フィヌルドが数倀でなくなったずきにnumberパラメヌタを削陀した堎合でも。

合蚈が䞀定額を超える堎合は、最小割匕が自動的に適甚されたす。

この堎合も、最小倀が適甚されたすが、通貚フィルタヌはそのたた残りたす。 それでも、通貚ずしお衚瀺する必芁がありたす。

フィルタのAPIず内郚ロゞックを曎新するずきは、倉曎がフィルタを消費する他の䜕かにどのように圱響するかを考える必芁がありたす[...] 2-フィルタにより、内郚コンポヌネントの状態をコンポヌネントの倖郚に委任できたす

いいえ。ロゞックや状態をフィルタヌ自䜓に入れるこずは_決しお_ありたせん。 フィルタは、倀をフォヌマットするためのべき等関数です。 理想的には、VMのコンテキストで実行するこずすらすべきではありたせん。 远加のデヌタをプルするためのthisがないはずです。

耇補は間違った抜象化よりもはるかに安䟡です

...あなたが蚀ったように、あなたがたたたた同じであるコヌドを抜象化しおいるずき。 䞀方、フィルタヌは、倀をフォヌマットする単玔なべき等関数です。 それらはたったく抜象化ではありたせん。


tl; drフィルタヌは抜象化ではなく、明瀺的なビゞネス芁件の代わりにはなりたせん。 フィルタに内郚ロゞックが含たれるこずはなく、必芁になるこずもありたせん。 これらは、抂念的にはHTMLのtype属性ずv-modelのnumberパラメヌタヌに䌌おいたす。

双方向フィルタヌは確かに抜象化です。 v-model双方向フィルタヌの珟圚の動䜜は、内郚に倚くの魔法を隠したす。具䜓的には、入力のDOM倀を䞀時的に基になるモデルず同期させず、次の堎合にのみ「同期」したす。フィヌルドをがかしたす。 ずころで、 @ JosephSilberこの動䜜は、特にあなたの芁求のために実装されたので、なぜあなたがそれに぀いおずおも匷く感じおいるのか理解できたす。

ただし、双方向フィルタヌで私が目にする最倧の問題は、基になるロゞックがブラックボックスであり、ナヌザヌが機胜芁求を行う以倖にそれをさらにカスタマむズする方法がないこずです。 私にずっお、より良いオプションは、そのような動䜜を自分で実装するための適切なビルディングブロックを提䟛するこずです。 そしお、それが2.0でどのように可胜であるかをお芋せしたしょう。

https://jsfiddle.net/yyx990803/5bnu6xb6/

ここに、珟圚の双方向フィルタヌの「非同期になるたでがやける」動䜜を実装する基本のCustomInputコンポヌネントがありたす。 2.0での倉曎により、コンポヌネントがvalueプロップを受け入れ、 inputむベントを攟出する限り、カスタムコンポヌネントでv-modelを盎接䜿甚できたす。 さらに、 changeむベントの倀もフォヌマットしたす。これは、珟圚、双方向フィルタヌでは䞍可胜です。 このコンポヌネントをさらに埮調敎しお、フレヌムワヌクによる双方向フィルタヌの実装方法に瞛られるこずなく、必芁な動䜜を実珟できたす。

基本コンポヌネントは解析/フォヌマットロゞックを実装しおいたせん。 parseおよびformatメ゜ッドを䜿甚しお拡匵し、特定のナヌスケヌスに合わせたカスタム入力コンポヌネントを取埗したす。 この堎合、 CurrencyInputコンポヌネントです。

以前の魔法の動䜜を自分で実装しおいるため、基本コンポヌネントは双方向フィルタヌよりも耇雑です。 ただし、このコンポヌネントを定矩する必芁があるのは1回だけです。 その芋返りずしお、埌で倉曎したい堎合に備えお、どのように動䜜するかを完党に制埡できたす。 これは䟡倀のあるトレヌドオフだず思いたす。

これは、再利甚性のための統䞀された抜象化であり、ほずんどの制埡が可胜であるため、コンポヌネントに぀いおより深く考える必芁がある䟋です。 2.0 select2の䟋も参照しおください。以前は1.0でこれはディレクティブずしお実装されおいたしたが、珟圚は同じv-modelむンタヌフェむスを持぀コンポヌネントになっおいたす。

私にずっお、より良いオプションは、そのような動䜜を自分で実装するための適切なビルディングブロックを提䟛するこずです。

これは玠晎らしく、間違いなくVueが必芁ずしおいるものですが、これを読みたかったのですが

私にずっお、より良いオプションは、Vueで開始するための適切なビルディングブロックを提䟛し、新しいフィルタリング動䜜でVueを自分で拡匵するこずです。

蚀い換えれば、通貚入力コンポヌネントず他の倚くのデフォルトのフィルタリングコンポヌネントをVueの䞀郚にするこずはできたせんでしたか なぜなら、誰もがい぀か通貚を䜿うからですよね 同じ仕事を䜕床も繰り返すのはなぜ他の人に任せるのですか 通貚の曞匏蚭定は、Vue独自のフィルタリングコンポヌネントツヌルバッグの䞀郚にするのに十分な暙準であり、他の人が独自のフィルタリングコンポヌネントを䜜成する方法を孊ぶための優れた基本的な䟋です。

そしお.....完成した通貚入力コンポヌネントであるずいう䟋から欠萜しおいるのは1぀だけであり、それはi18n機胜であり、Vueにも必芁であるず私は信じおいたす。 通貚番号のフォヌマットは、その人芖聎者が遞択したロケヌルに応じお倉曎する必芁がありたす。 ぀たり、ロケヌルデヌタを意味したす。 「DE_de」は、このロケヌル゚クスプロヌラヌ暙準に由来に衚瀺されるように通貚およびその他の数倀をフォヌマットしたす。 これをVueに远加するず、Vueに組み蟌たれた優れた通貚/数倀フォヌマットコンポヌネントシステムが埗られたす。Vueを䜿甚する他の䜕千人もの開発者は、自分で䜜成する必芁はなく、Vueを入手したずきにその堎で䜿甚できたす。 。 これにより、Vueは匷力なテンプレヌトシステムになりたす。

この「i18nフォヌマットコンポヌネント」を1.0のようにフィルタヌずしお連鎖的に䜿甚できない堎合は、プラグむン可胜である必芁がありたす。 それもいいでしょう。 それがAureliaが行っおいるこずであり、Twigもその拡匵機胜を䜿っお行っおいるこずです。 通貚入力コンポヌネントは、匕き続き<currency-input>である可胜性がありたす。

このi18nおよびその他の暙準テンプレヌトフィルタヌは、必芁がなければ、他の人が垞に再珟する必芁のないものである必芁がありたす。 そのようなプラグむンの䜜り方を教えおいただければ、i18​​nプラグむンもお届けしたす。 私はこれ党䜓に興味がありたすsmile

スコット

なぜなら、誰もがい぀か通貚を䜿うからですよね

そうではありたせん。 私は、実際にそれを䜿甚したこずはありたせん:)同じこずが他のすべおの組み蟌みフィルタヌにも圓おはたりたす-他のフィルタヌが圹に立たないずきに、それらのいく぀かは私たちの䞀郚に圹立ちたす。 このトピックに取り組んでいる間、ほずんどの堎合、組み蟌みのフィルタヌを䜿甚したかったのですが、ずにかく独自のバヌゞョンを䜜成しお、組み蟌みのバヌゞョンのデッドコヌドをレンダリングするこずになりたした。

i18n機胜。Vueにも必芁だず思いたす。

これもたた、非垞に議論の䜙地がありたす。 包括的なi18nサポヌトはかなり耇雑になる可胜性があり、IMOはVueに属しおいたせん。特に、ほずんどのナヌザヌがずにかくそれを必芁ずしない堎合はそうです。

ここで、これを提起したいず思いたす。Vueず別のテンプレヌト/フレヌムワヌクを比范するたびに、芚えおおくべき重芁なこずが1぀ありたす。Django/ Laravel / Twigずは異なり、Vueは本質的にクラむアントラむブラリであるため、できるだけ軜量にする必芁がありたす。 いわゆる「有甚性」たたは「゚レガンス」のためだけに「機胜」ず「ナヌティリティ」を远加するのではなく、もちろんすべおの_core_機胜を保持しながら、十分に単玔に保぀方が理にかなっおいたす。 コア機胜以倖のものが必芁な堎合は、プラグむンを䜿甚するか、独自のプラグむンを開発するこずをお勧めしたす。 これを䟋ずしお取り䞊げたす。䞀般的に芋られるSPAの堎合、i18n / currencyはルヌタヌや状態管理者よりも重芁ですか そうは思いたせん。 それでも、vue-routerずvuexはVueに属しおいたせんが、独自のリポゞトリを持っおいたす。 蚀い換えれば、 Vueはプログレッシブです。

そのようなプラグむンの䜜り方を教えおいただければ、i18​​nプラグむンもお届けしたす。 私はこれ党䜓に興味がありたす

これはより賢明なアプロヌチだず思いたす。ご関心をお寄せいただきありがずうございたす:)

䞀郚の領域でi18nを䜿甚する必芁がある堎合矎しさのために、コヌドを調べお、いく぀かの名前を手動で倉曎できるず思いたす。
䟋ほんの数時間前、私はbutstrap.datepikkerを取りたした-そのような可胜性があるずいう事実にもかかわらず、私は接続したせん、i18n。 クむック60秒。 「手動で」曜日ず月の名前を眮き換えたした。すべお-OK 

@ phanan-あなたの議論は私が「プラグむン」に蚀及した理由です。 私は同意したす、誰もが通貚やi18n機胜を望んでいるわけではなく、アプリを軜く保぀こずができないものもありたすが、テンプレヌトシステムずしお、Vueもそのような暙準機胜を利甚できるはずですこれは私の個人的な意芋ですそれも。 さらに重芁なこずに、そしお私の懞念は、誰もがi18nたたは通貚フィルタヌコンポヌネントホむヌルを再発明しなければならないずいうこずではないずいうこずです。 蚀い換えれば、Vue-RouterずVuexがVueに远加できるように、通貚やi18nなどの暙準フィルタヌも倚数ある可胜性がありたす。

ああ、そしお興味深いこずに、Angularにはi18nが組み蟌たれおいるようです。

https://docs.angularjs.org/guide/i18n

Angularは、日付、数倀、通貚のフィルタヌでi18n / l10nをサポヌトしおいたす。

EmberずReactは、「開発者の䞖界に自分たちでやらせお」ずいう道を進んだようです。
面癜いビデオ。
https://www.youtube.com/watch?v=Sla-DkvmIHY

たぶんVueはFormatJSぞの統合だけが必芁ですか VueIntl 笑顔

線集それはそれほど単玔なこずではありたせんね https://github.com/learningequality/vue-intl/blob/master/index.js

スコット

Angularにはi18nが組み蟌たれおいるようです。

Angularにはng-routerも付属しおいたすが、これは私が聞いたずころによるず、ng-communityによっお避けられおui-routerが採甚されおいたす。

さお、Angularチヌムがng-routerをui-routerに眮き換えるず、重倧な倉曎ず苊痛が発生したす。

圌らがng-routerを改善しようずするず、より良い゜リュヌションui-routerがすでに存圚するため、時間を無駄にしおいたす。

Vueがコアでi18n、通貚などをサポヌトし始めた堎合、同じ状況がvueにも起こりたす。

組み蟌みのフィルタヌは䟿利だず思いたすが、この点ではvuejsチヌムに同意したす。

次に、フィルタヌがVueコアにないこずに同意したす。 私は実際にはコンポヌネント化のファンでもありたす。 しかし、Vueはフィルタヌをコアプラグむンずしおも提䟛できたせんでしたか VuexやVue-Routerのように

スコット

しかし、Vueはフィルタヌをコアプラグむンずしおも提䟛できたせんでしたか VuexやVue-Routerのように

それはたさに@ blake-newmanが以前に共有したものです。

こんにちは最終決定ペヌゞには、テキストのフィルタヌのみを蚱可するこずが瀺されおいたす
衚瀺{{}}v-text
v-for = "item of list | sortBy"のような他の匏ではありたせん
それずも私は誀解したしたか
私が意味したのは、1.0のようにフィルタヌを䜿い続けるこずでしたが、フィルタヌを1぀だけ制限したした
匏ごず

2016幎5月1日午埌10時24分、 PhanAnnotifications @ github.comは次のように曞いおいたす。

@tomsmithgrouphttps //github.com/tomsmithgroupあなたが提案したこず
そしおそれ以䞊が決定されたした
https://github.com/vuejs/vue/issues/2756#issuecomment -215868244 to
2.0でも匕き続きサポヌトされたす。

—
あなたが蚀及されたので、あなたはこれを受け取っおいたす。
このメヌルに盎接返信するか、GitHubで衚瀺しおください
https://github.com/vuejs/vue/issues/2756#issuecomment -216093937

@ yyx990803返信から

@fnlctrlそれは正しいです。 独自のコンポヌネントを䜜成するだけです。

少し話題を倖したす。これらの双方向フィルタヌは、本番環境で本圓に圹立぀のでしょうか。
぀たり、ナヌザヌが入力に䜕かを入力し、がやけた埌にそれを再フォヌマットできるようにするこずは本圓に倧䞈倫ですか
私のビゞネスチヌムは垞に、このように動䜜するように入力を芁求したす。間違ったものを入力するこずはできたせん。 したがっお、 Vueを䜿甚する堎合でも、即時の双方向倉曎が非掚奚になったため、その目的でjquery.inputmaskを䜿甚したすこれは私が本圓に芋逃しおいるものです...
぀たり、これらの双方向フィルタヌに本圓に問題があるのでしょうか、それずも人々がそれを考えすぎおいるのでしょうか。 :)

@fullfs双方向フィルタヌは、䟿宜䞊、本番アプリ倚くの<input> sで広く䜿甚されおいたすが、今のずころ、倀を1回だけフィルタヌするのではなく、リアルタむムでフィルタヌするのはなぜですか。サヌバヌにPOSTされたしたか コヌドのリファクタリングには少し時間がかかりたすが、芋逃すこずはないず思いたすD

UIを楜芳的に曎新する堎合特にモバむルの堎合、今日のIMHOの暙準です、入力が提䟛された時点で実際に適切にフォヌマットされた入力が必芁になりたす。

スコット

2りェむフィルタヌはvueで本圓に玠晎らしいです。 フィルタの有無にかかわらず、い぀でも独自のカスタマむズされたコンポヌネントを䜜成できたすが、それには時間がかかりたす。 ラむブラリは柔軟性を提䟛するだけでなく、物事を行うためのより速くお䟿利な方法を提䟛する必芁がありたす。 2りェむフィルタヌを含めるこずで、必芁に応じお独自のコンポヌネントを䜜成するこずを劚げるこずはありたせんが、既存の機胜がニヌズに合っおいる堎合は、ほずんどの堎合、開発を迅速化できたす。 それは垞にAPIの衚面ず利䟿性の間の劥協点です。 バランスを芋぀ける必芁があり、Vueにはすでに玠晎らしいバランスがありたす。 フィルタを取り陀くこずは、バランスのずれた適切なポむントから䞀歩埌退しおいるようです。 ラむブラリは小さくなりたすが、それを䜿甚するすべおのプロゞェクトのコヌドベヌスずボむラヌプレヌトは倧きくなりたす。

フィルタが実際に非掚奚になる堎合は、v-modelディレクティブのパヌサヌずフォヌマッタヌを簡単に指定できる代替手段を提䟛するずよいでしょう。 フィルタを䜿甚するず、提䟛されおいる䟋@ yyx990803のこの郚分だけを蚘述できたす。

const CurrencyInput = CustomInput.extend({
  methods: {
    parse(val) {
      var number = +val.replace(/[^\d.]/g, '')
      return isNaN(number) ? 0 : number
    },
    format(val) {
      return '$' + Number(val).toFixed(2)
    }
  }
})

双方向フィルタヌがなければ、1぀も曞く必芁がありたす

const CustomInput = Vue.extend({
  template: `
    <input type="text"
      @focus="onFocus"
      @blur="onBlur"
      @input="onInput"
      @change="setDisplayValue">
  `,
  props: ['value'],
  watch: {
    value() {
      if (!this.focused) {
        this.setDisplayValue()
      }
    }
  },
  ready() {
    this.setDisplayValue()
  },
  methods: {
    onInput() {
      this.$emit('input', {
        target: {
          value: this.parse(this.$el.value)
        }
      })
    },
    onFocus() {
      this.focused = true
    },
    onBlur() {
      this.focused = false
      this.setDisplayValue()
    },
    setDisplayValue() {
      this.$el.value = this.format(this.value)
    }
  }
})

したがっお、柔軟性が向䞊したすが、同じ結果を埗るためのコヌドも増えたす。

@ aristidesfl-フィルタヌは非掚奚ではありたせん。 郚分的に戊いに勝ちたした。 笑 これらは、テキスト補間でのみ䜿甚されるように制限されたす。 ここを参照しおください https //github.com/vuejs/vue/issues/2873

スコット

ありがずう@smolinari 。 私は特に2りェむフィルタヌに぀いお蚀及しおいたした。

戻っお来おください 私たちはそれが必芁です、私はあなたが蚀ったこずすべおに同意したす。 しかし、それはずおも簡単です、私たちは怠惰なナヌザヌです、私たちはただ怠惰で簡単な方法を望んでいたす。 キヌプアラむブのように。

カスタムvモデル修食子を远加する方法があるはずですhttp://rc.vuejs.org/guide/forms.html#Modifiers

それらは双方向フィルタヌのように機胜したす。

@ecmelは同意したした。 これが進むべき道です。

機胜リク゚ストの問題を開いおから:)

@ecmel同様のアむデアは、型修食子ずしお説明されおいたすが、ここで説明されおいたす。

@rpkilbyその議論も閉じられおいたすが、カスタムvモデル修食子甚に新しい議論を開く必芁があるかもしれたせん。

これを行うこずができなくなりたした

<span :title="item.Modified | date('dd-mmmm-yyyy H:MM:ss')">{{item.Modified | date('dd-mmmm-yyyy')}}</span>

フィルタを{{ }}に制限するのは奇劙に思えたす。属性バむンディングでフィルタを䜿甚したい堎合が倚くあり小道具を枡さない、属性で{{ }}を䜿甚できなくなりたした。 

@LinusBorgオヌプンhttps://github.com/vuejs/vue/issues/3666

フィルタを{{ }}に制限するのは奇劙に思えたす。属性バむンディングでフィルタを䜿甚したい堎合が倚くあり小道具を枡さない、属性で{{ }}を䜿甚できなくなりたした。 

それらは、蚈算されたプロパティずメ゜ッドで簡単に眮き換えるこずができるため削陀されたしたが、APIはより制限されおおり、結果をキャッシュする可胜性はありたせん。

そう

  • APIが1぀少ない
  • テンプレヌトずJSコヌドで同じメ゜ッドを䜿甚したす。アプリコヌドで䜿甚するために、フィルタヌの動䜜を耇補する必芁はありたせん。
  • 蚈算された小道具はキャッシュするこずができたす
  • JSだけなので、柔軟性が向䞊したす

先の擬䌌コヌド

<!-- method, suitable in v-if  -->
<span :title=" date(item.Modified, 'dd-mmmm-yyyy H:MM:ss')>

<!-- computed prop, more suitable for single values -->
<span :title="formattedModified">
<script>
computed: {
  formattedModified () { return date(this.item.Modified, 'dd-mmmm-yyyy H:MM:ss') }
}
</script>

申し蚳ありたせんが、私は「新しい」だけです。
しかし、フィルタヌがないAngular 1から来るず、本圓に奇劙で盎感に反したす。すべおの開発者が独自のフィルタヌセットを開発し、蚈算された゚ントリを自分で蚭定するなど、組み蟌みよりも優れおいるのはなぜですか
そしお、芁玠内のオブゞェクトによっお、非垞に倧きな配列をフィルタリングするためのベストプラクティスず珟圚考えられおいるこず。 Angularの堎合、これは1行のコヌドでした。 怜玢入力甚に配列をフィルタリングするこずは可胜であり、それはフレヌムワヌクの機胜であるはずのすべおの魔法を実行したす。

そしお、非垞に倧きな配列をフィルタリングするためのベストプラクティスず珟圚考えられおいるこず

本圓に倧きな配列ずは䜕ですか 理論的には、蚈算されたプロパティはフィルタリングにも圹立ちたす。

https://jsfiddle.net/sat25z51/3/

すべおの開発者に独自のフィルタヌのセットを開発させ、蚈算された゚ントリを自分で蚭定するなど、それを組み蟌むよりも優れおいるのはなぜですか

以前は同じように考えおいたしたがそしおなぜスレッドを始めたのか、基本的にこれらの皮類のフィルタヌを自分で䜜成するのは簡単なこずであり、各開発者が望むものはたくさんあるこずを孊びたしたフィルタたたは蚈算されたプロパティずしお、フィルタが組み蟌たれおいないこずはそれほど倧きな問題ではないこずに気づきたした。

スコット

私の堎合、Firebaseデヌタベヌスによっお提䟛されるjsonの> 10.000行に盞圓したす。
なぜあなたがそのように考え、機胜を削陀するこずを決定するのかがわかりたすが、それでも開発者にずっおはかなり面倒です。

私はフィドルを私のデヌタ構造ず䞀臎するようにフォヌクしたした
https://jsfiddle.net/nw5yhLwv/
だから私は手で私のオブゞェクトの文字列の怜玢をコヌディングする必芁がありたすか

私はあなたの質問を理解しおいたせん。 ごめん。 フィドルは私が投皿したもののように芋えたす。

スコット

蚈算されたフィルタヌずフィルタヌ

why not both

フィルタは、レンダリングごずに蚈算されメ゜ッドず同じように、蚈算されたプロパティは簡単に実行でき、必芁な堎合にのみ再蚈算されるため、パフォヌマンスが䜎䞋する可胜性がありたす。それ以倖の堎合は、結果がキャッシュされたす。぀たり、Vueが飛ぶこずができたす。

ああ。 䞡方ありたす。 😄

スコット

ねえ、私はいく぀かのいじりをしたした、そしお今私はそれを手に入れたした、それは玠晎らしいコンセプトです 😄

これに぀いおの議論は長い間終わっおいるので、私は今このスレッドをロックしたす-Vue 2.0は数ヶ月間リリヌスされおおり、フィルタヌのドロップに関する批刀はおおむねおさたりたした。

このスレッドでのこれ以䞊の議論は生産的ではありたせん。 話し合いが必芁だず思われるトピックに新しい角床が芋られる堎合は、新しい問題を開いおください。

このペヌゞは圹に立ちたしたか
0 / 5 - 0 評䟡