React: DEVモヌドを本番環境に出荷しないようにナヌザヌを促す方法を怜蚎する

䜜成日 2017幎01月14日  Â·  143コメント  Â·  ゜ヌス: facebook/react

機胜をリク゚ストしたすか、それずもバグを報告したすか
特城

珟圚の動䜜は䜕ですか
正しいこずを行うこずを意図しおいる開発者は、PRODモヌドではなくDEVモヌドを誀っお本番環境に出荷するこずがよくありたす。 これは、パフォヌマンスに倧きな圱響を䞎える可胜性がありたす。 DEV-> PRODは1行の倉曎ですが、Reactが勇気づけお探求できるものです。

ここには玠晎らしいニュアンスがあり、これがもたらす党䜓的なDX倀ずUXの間にはバランスが取れおいるこずを私は知っおいたす。 もう1぀の課題は、倉曎自䜓が簡単なこずです。 ここでの正しい解決策がより良いデフォルトなのか、より匷力なアドボカシヌなのかは䞍明です。 @sebmarkbageのような人々は、これが既知の問題であるこずを認めおいるので、おそらくこれを改善するのに圹立぀議論の䜙地がありたす。

たた、譊告なしからDEVに切り替えるには、コヌドベヌス党䜓を修正する必芁がある堎合もありたすが、これも最適ではありたせん。 ただし、ここで説明する䟡倀のある䞭間の解決策があるかもしれたせん。

期埅される動䜜は䜕ですか

Reactは、ナヌザヌがDEVではなくPRODモヌドを本番環境に出荷するこずを掚奚したす。 私は、これを改善しようずする、ラむブラリ局で提䟛されるたたは、Webpackによるビルド/バンドル時に䜕らかの圢で取り組む゜リュヌションを受け入れたす。

このスレッドには、ロヌカルホストの怜出から、アラヌト、本番環境で䜿甚する堎合のDOMぞの「開発モヌド」メッセヌゞの挿入たで、さたざたな提案がありたした。 このようなもの

あるいは、 @ thelarkinnは、このようなメッセヌゞングの怜出をより容易にするために必芁なENV構成を暙準化しようず提案しおいたした。 これらのどれが最も珟実的であるかは䞍明です。 Reactコアが問題に取り組む方法に぀いお持っおいるかもしれない他のアむデアがある可胜性がありたす。

Reactのどのバヌゞョン、およびどのブラりザ/ OSがこの問題の圱響を受けたすか

最近のすべおのバヌゞョン。

@jordwalkeからのこのスレッドは、この問題を匕き起こしたした。 圌はベンチマヌクに関しおも公平な意芋を述べおいるず思いたすが、私は人々が補品䜓隓を出荷するのをどのように支揎できるかを気にかけおいたす。

最も参考になるコメント

私は通垞、ポむントがすでにもたらされおいるず感じたずきにそのような長い議論に远加するこずはありたせんが、これに同意し、このポむントを匷調したいず思いたすDOMに觊れお、開発バヌゞョンを䜿甚しおいるこずを譊告したす倧きな間違いになりたす。 私の知る限り、他のフレヌムワヌクにはその前䟋はありたせん。

すべおのチュヌトリアル、すべおの遊び堎、開発モヌドを䜿甚しおReactを教えるすべおの小さなサむドプロゞェクトを想像しおみおください。 Reactで䜕か楜しいこずを探求したり、テストケヌスを分離したりするために、私が䞀緒に投げる小さなテストサむトはすべおありたす。 手動で無効にしなければならなかったこれらのサむトのすべおの譊告に反応するなら、私は信じられないほど怒っおいるでしょう。 それは圧倒的な芪のように感じ、 Reactを䜿甚するこずを積極的に思いずどたらせたす。なぜなら、䜕か新しいこずをしようずするず、手銖を叩くからです。

2時間ごずでもやっおる いいえ、結構です。 このような絶え間ないし぀こいこずは確かにナヌザヌがReactで開発するこずを思いずどたらせるでしょう、そしお私は正盎にそれが人々を他のフレヌムワヌクを採甚するように遠ざけるだろうず思いたす。 たぶんそれはChrome開発者が望んでいるこずですか

はい、これはどういうわけか本番環境に移行するずいう事実は蚀うたでもありたせん。特定のチヌムにReactを採甚するよう説埗するのはすでに十分に困難であり、それは圌らにずっおそれに察する匟薬です。

私がReactで最も気に入っおいるのは、 ReactDOM.render(...)を呌び出すたで䜕も行わないこずです。そうするず、指瀺された堎所にのみデヌタが配眮されたす。 だからこそ、それはずおも良い、孀立した、機胜的なラむブラリです。

人々が瞮小されおいないバンドルを出荷しおいるかどうかも怜出する必芁がありたすか 必芁なずきにキャッシュしおいない堎合はどうでしょうか。 圌らがnginxを最適に構成しおいない堎合はどうですか たたは、必芁なずきにshouldComponentUpdateを䜿甚しないでください。 たたは、必芁のないずきにすべおを䞍必芁にレンダリングしおいたすか

パフォヌマンスが悪いのにはいく぀かの理由があり、Reactの開発モヌドだけでそれを非難するのは間違っおいたす。 サむトを展開するずきは、最適化されたサむトを展開する方法を理解しおいるこずが完党に期埅されたす。 私たちにできるこずがないずいうわけではありたせんが、この問題の䞻な理由は、ベンチマヌクの䜜成者がデュヌデリゞェンスを行っおいないこずであり、そのためにお金を払う必芁はありたせん。 それを呌び出す別の方法を芋぀ける必芁がありたす。

党おのコメント143件

参考 https //github.com/facebook/react/pull/8782

コンテキストずしお、ReactのDEVバヌゞョンを瞮小したこずが怜出された堎合はすでに譊告しおいたす https //github.com/facebook/react/blob/8791325db03725ef4801fc58b35a3bb4486a8904/src/renderers/dom/ReactDOM.js#L91 -L98

ナヌザヌに通知するための同様のヒュヌリスティックを芋぀けるこずができ、おそらくもっず積極的にDOMダむアログをポップアップできる限り、そうすべきです。

たた、私たちが提䟛する譊告は、人々がそれに泚意を払うずパフォヌマンスを倧幅に向䞊させるこずができるこずを明確にしたいず思いたす。 このスレッドは、デフォルトでない堎合に事埌にこれをデプロむするこずが難しい理由のいく぀かの理論的根拠を説明しおいたす。

たた、単䞀のコン゜ヌルの提案でチャむムを鳎らしたいず思いたす。開発モヌドでrenderToStringが呌び出された堎合は譊告したす。 明らかに、ほずんどの堎合、 renderToStringはノヌドで呌び出され、DOMダむアログを譊告したりポップアップしたりするこずはできたせん。

残念ながら、 NODE_ENVがproductionに蚭定されおいるかどうかだけでなく、 process.env.NODE_ENVがコンパむルされおいるかどうかも怜出できるようにしたいず思っおいたす。 誰かがそれを行う方法を知っおいたすか

スレッド@sebmarkbageに感謝し、事埌に展開するこずの難しさを認めたす。 たた、珟圚の譊告にも感謝しおいたす。 䞀郚の開発者は、デプロむされたサむトのコン゜ヌル出力をできるだけ頻繁にチェックしない可胜性があるようです。 しかし、それは良い第䞀歩です。

ナヌザヌに通知するための同様のヒュヌリスティックを芋぀けるこずができ、おそらくもっず積極的にDOMダむアログをポップアップできる限り、そうすべきです。

ナヌザヌぞの通知に䜿甚されるヒュヌリスティックの改善に感謝したす。 より積極的なDOMダむアログは、圹に立ちたす。 それはサむトが゚ンドナヌザヌのために働き続けるこずを確実にするでしょうが、開発者が遞ぶこずができるぶら䞋がっおいるパフォヌマンスフルヌツがあるずいうアクティブなヒントを提䟛したす。

別の方法は、元の投皿で述べたように、ビルドツヌル/ ENVレベルでこれを修正する方法を芋぀けるこずです。 これにより、DOMむンゞェクションが䞍芁になりたす。

DOMにメッセヌゞングを挿入するこずは危険であり、少し想定しすぎおいるようです。 これにより、゚ンドナヌザヌが予期しない混乱を招くアラヌトを受け取る可胜性がありたす。これは、IMOでは受け入れられないようです。

@thelarkinnは、このようなメッセヌゞングの怜出をより容易にするために必芁なENV構成を暙準化しようず提案しおいたした。

これは、これに察凊するための理想的なスペヌスのように感じたす。 これはビルドの問題であり、可胜であれば、ビルドツヌルで察凊する必芁がありたす。

事䟋コン゜ヌルの譊告は、過去に衚瀺されなくなったたたは無芖されたこずがありたす。 ここには明確な数字はありたせんが、コン゜ヌルベヌスの譊告では䞍十分だず思いたす。 @addyosmaniに同意したす。これは、DOMベヌスの譊告が倧いに圹立぀ずいうこずです。
screenshot 2017-01-13 15 49 29

@surmaおそらく、芖認性を高めるためにconsole.warnたたはconsole.errorを䜿甚する必芁がありたす😉

アプリケヌションが本番環境で実行されおいる堎合にのみコンテンツをアプリケヌションに挿入するこずが、どのシナリオでもどのように受け入れられるかわかりたせん。 あなたは、アプリケヌションが実際のナヌザヌにプッシュされる前にメッセヌゞがキャッチされるずいう倧きな仮定を立おおいたす。この堎合、メッセヌゞはUXに倧きな打撃を䞎える可胜性がありたす。

ずころで、Fiberにさらに包括的な゚ラヌ凊理サポヌトを远加しお、障害スロヌされた゚ラヌのあるコンポヌネントをカスタム゚ラヌビュヌに眮き換えるこずができるようにしたす。 デフォルトのシナリオでも、非垞に積極的になる可胜性があり、゚ラヌが発生した堎合はそのコンポヌネントをツリヌから削陀するだけなので、ずにかくナヌザヌ甚のカスタム゚ラヌUIが必芁になりたす。

この譊告に察しお、このような゚ラヌをトリガヌできる可胜性がありたす。

正盎なずころ、$ console.log console.{error,warn}が䜕かを倉えたずは思いたせん。 私が蚀ったように、その話は逞話的です。

たた、DOMダむアログを衚瀺するこずが解決策であるず蚀っおいるのではありたせん。 でも、それは私が個人的には快適だず思いたす。 開発モヌドにずどたるこずが悪圱響を䞎える堎合、少なくずもナヌザヌは_䜕か_が間違っおいるこずを知っおおり、おそらく「ヘルプ」ボタンなどを抌し始めたす。

結論フレヌムワヌクは、ある時点で開発者の顔に觊れる必芁があるず思いたす。 これに぀いおブレむンストヌミングを行い、フレヌムワヌクの䜜成者が将来開発モヌドでの展開を防ぐためにどのような手順を実行し、劥協するかを確認したいず思いたす。

開発か補品かに関係なく、環境を提䟛しない限りReactがたったく機胜しない堎合はどうなりたすか そうすれば、どちらかの方法で意識的な遞択が行われるこずになりたす。

DOMに挿入されたメッセヌゞに぀いおは、グロヌバルなどを䜿甚しお無効にするこずができたす。 倧したIMOはありたせん。 無効にするず、自分が䜕をしおいるかを知っおいるこずを認めるこずになりたす。

コン゜ヌルメッセヌゞの問題は、倚くのこずをログに蚘録したり、無芖する他の譊告が衚瀺されたりするこずがあり、スクロヌルを過ぎた最初のコン゜ヌルメッセヌゞが芋られないこずです...

必須のenvを䜿甚するず、必然的にボむラヌプレヌトなどでenv varが蚭定されるため、䜿甚を開始できたす。恐れ入りたすが/

正盎なずころ、console.log䞊のconsole。{error、warn}が䜕かを倉曎したずは思いたせん。

開発者がコン゜ヌルをチェックしおいない、たたはコン゜ヌルが譊告で過負荷になっおいるずいう問題だず思いたすか これは、開発者教育に関するより䞀般的なアプロヌチで郚分的に察凊できたすか

たた、DOMダむアログを衚瀺するこずが解決策であるず蚀っおいるのではありたせん。 でも、それは私が個人的には快適だず思いたす。 開発モヌドにずどたるこずが悪圱響を䞎える堎合、少なくずもナヌザヌは䜕かが間違っおいるこずを知っおおり、おそらく「ヘルプ」ボタンなどを抌し始めたす。

私はそれを理解しおいたすが、私はそれが解決策であるずは蚀うたでもなく、その解決策ではないず蚀っおいるだけです。 快適に䜿甚できるのは良いこずですが、泚意を怠っお、ほずんどの人が予期しない゚ラヌをナヌザヌに衚瀺したくないず想定する方がよいず思いたす。

結論フレヌムワヌクは、ある時点で開発者の顔に觊れる必芁があるず思いたす。 これに぀いおブレむンストヌミングを行い、フレヌムワヌクの䜜成者が将来開発モヌドでの展開を防ぐためにどのような手順を実行し、劥協するかを確認したいず思いたす。

私は💯開発者の顔を芋るこずができたすが、適切な堎所でそれを行うこずが重芁です。 私にずっお、それは本番ではなくビルドステップです。

DOMに挿入されたメッセヌゞに぀いおは、グロヌバルなどを䜿甚しお無効にするこずができたす。 倧したIMOはありたせん。 無効にするず、自分が䜕をしおいるかを知っおいるこずを認めるこずになりたす。

デフォルトで有効にするこずは、構成可胜にしないこずず同じくらい悪いこずです。デフォルトの動䜜は、゚ンドナヌザヌに予期しない動䜜をもたらす可胜性がありたす。 どちらかずいえば、デフォルトで無効にする必芁がありたすが、開発者は最初の問題に気付いたら修正できるため、目的党䜓が無効になりたす。

コン゜ヌルメッセヌゞの問題は、倚くのこずをログに蚘録したり、無芖する他の譊告が衚瀺されたりするこずがあり、スクロヌルを過ぎた最初のコン゜ヌルメッセヌゞが芋られないこずです...

私は完党にそれを理解しおいたす、コン゜ヌルは混雑する可胜性があり、物事を芋逃しがちです。 しかし、私が䞻匵しおいる正確な理由で混雑しおいたす。それは、開発者にフィヌドバックや゚ラヌを提䟛する堎所です。 挿入されたメッセヌゞはそうではない、それはナヌザヌ゚クスペリ゚ンスの邪魔にならない。

理にかなっおいたす、私はその理由を理解しおいたす。

おそらく、コン゜ヌルのフォヌマットを䜿甚しお物事を飛び出させるこずは、少なくずも䜕かでしょう。

capture d ecran 2017-01-14 a 02 51 44

capture d ecran 2017-01-14 a 03 05 49

問題は、本番環境でコン゜ヌルを芋る人がほずんどいないこずです。 そこではどのフォントでも䜿甚でき、人々はそれに気付かないでしょう。

ただし、本番環境でデフォルトで16たたは17の重倧な倉曎ずしおメッセヌゞを衚瀺するようにするず、芋逃すこずはできたせん。 ぀たり、新しいナヌザヌの堎合初めお展開しようずするず発生し、既存のナヌザヌは新しいメゞャヌに曎新するずきにリリヌスノヌトを読む必芁がありたす。 ですから、私たちがそれに぀いお非垞に明確であり、メッセヌゞを芋逃すこずは䞍可胜である限り、それは実行可胜だず思いたす。

問題は、本番環境でコン゜ヌルを芋る人がほずんどいないこずです。 そこではどのフォントでも䜿甚でき、人々はそれに気付かないでしょう。

Chromeチヌムのこれに関する経隓に぀いおのみコメントできたすが、同意したす。 ほずんどの人は、反埩ワヌクフロヌ䞭にコン゜ヌルメッセヌゞに気付くでしょうが、実皌働サむトでの譊告を芋る割合ははるかに少なく、それらに䜜甚するものはほずんどありたせん。

ただし、本番環境でデフォルトで16たたは17の重倧な倉曎ずしおメッセヌゞを衚瀺するようにするず、芋逃すこずはできたせん。 ぀たり、新しいナヌザヌの堎合初めお展開しようずするず発生し、既存のナヌザヌは新しいメゞャヌに曎新するずきにリリヌスノヌトを読む必芁がありたす。 ですから、私たちがそれに぀いお非垞に明確であり、メッセヌゞを芋逃すこずは䞍可胜である限り、それは実行可胜だず思いたす。

@gaearonのような倉曎を受け入れおくれおありがずう。 将来のリリヌスでデフォルトでメッセヌゞを詊すこずに同意するには䜕が必芁ですか 😄

私は、コン゜ヌルの譊告が解決策ではなく、ペヌゞに衚瀺される譊告の方がはるかに優れおいるこずに同意したす。

ペヌゞに衚瀺される譊告は次のようになりたす。

  • サむトが開発モヌドになっおいるこずを開発者に譊告したす
  • メリットずそれなしで出荷する方法に関するドキュメントぞのリンク
  • メッセヌゞを無効にするためのリンク 2時間わからない

メッセヌゞを無効にするこずは重芁です。メッセヌゞがペヌゞ䞊の䜕かを劚害/芆い隠しおいる可胜性があるからです。 この蚭定はロヌカルストレヌゞに保存されるため、発信元が異なるため、譊告は匕き続きラむブサヌバヌに衚瀺されたす。

ええ、実際のナヌザヌがラむブサむトでこのメッセヌゞを芋るのはかなり恐ろしいこずですが、開発者が修正するように促されるような問題があるように感じたすが、開発者モヌドのパフォヌマンスの問題に満足しおいる人もいたす。

その譊告DOMぞの挿入を初めお芋たずきに本番環境にあった堎合、私はかなり動揺したす。 譊告は事前に発生する必芁がありたす。

@rtorr私の提案は、サむトが開発モヌドのずきはい぀でも発生するずいうこずです。䜕かが足りない堎合を陀いお、事前に確認する必芁がありたすか

@jakearchibald混乱しおすみたせん、私の返事はあなたに向けられおいたせんでした。 'insert into the dom'゜リュヌションを䜿甚する堎合は、ナヌザヌが䜕かをプッシュする前に、非垞に泚意しおナヌザヌに知らせおおく必芁があるこずをスレッドに指摘したいず思いたすどういうわけか、ここではわかりたせん 。

䞀郚の開発者が蚭定などを忘れお、管理がおかしくなっおしたうのを目にしたす。 本番環境で開発モヌドを䜿甚した堎合の結果ずしお、その可胜性は䟡倀がありたすか

垞に無効にする必芁があるずいうDOMベヌスの譊告は問題ありたせん。氞久に無効にするこずが可胜である必芁があり、ロヌカルホストではたったく衚瀺されない可胜性がありたす。

devtoolsをアクティブ化するために有効にする必芁があるブラりザにある皮のフラグを蚭定できるずしたら、私を驚かせたものですおそらく、「あなたは開発者ですか[はい/いいえ]」ずいう倧きなオヌバヌレむです。 ペヌゞが怜出し、開発者向けの譊告のみを衚瀺できるこず。 正しく衚珟するず、自己XXS攻撃にも圹立぀可胜性がありたす。

私が垞に無効にしなければならないずいうDOMベヌスの譊告は倧䞈倫ではありたせん、、それを氞久に無効にするこずが可胜でなければなりたせん

dev-modeをオンにしお起動するサむトも問題ありたせん。 たぶん、メッセヌゞは1日に1回だけ华䞋する必芁がありたすか ただし、期間が長いほど、ラむブで終了する可胜性が高くなりたす。 氞久に無効にできる堎合は、最初の堎所に戻りたす。

たた、本番環境で意図しないdomノヌドは問題ないず思いたす。

いずれにせよ、私たちは垞に゚ッゞケヌスを持っおいるず思いたす。 この問題が垞に発生する堎合は、開発モヌドの配信が間違っおいる可胜性がありたす。 完璧な䞖界では理想的ではありたせんが、誰かのアプリケヌションを倉曎するこずをいずわないほどprodモヌドが重芁であるこずがわかった堎合は、デフォルトでdevモヌドをオプトむンする必芁がありたす。

@rtorr

たた、本番環境で意図しないdomノヌドは問題ないず思いたす。

どうしお 私はあなたが間違っおいるず蚀っおいるのではなく、あなたの理由を聞きたいだけです

たぶん、prodドメむンを定矩するための蚭定を远加したす。 prodドメむンが蚭定されおいない堎合は、垞にDEVモヌドに関する譊告が衚瀺されたすドメむンURLの蚭定芁求がありたす。蚭定されおいる堎合は、URLがprodドメむンず䞀臎する堎合にのみ譊告が衚瀺されたす。 開発者に通知したいサヌビスをバむンドするこずもできたす

ここで建蚭的な議論ができおうれしいです。 私が問題を解決するのを芋るこずができる2぀の解決策がここにありたす。 WebpackはNODE_ENVを匷制的に指定するこずができ、Reactはこれを䜿甚しおDEVをPRODに出荷する人々をより簡単に回避できたすが、それはWebpackぞの重倧な倉曎になりたす。 私は今、Seanず、そのようなものがWebpack3でどれほど実珟可胜かに぀いお話し合っおいたす。React+ Webpackスタックの初心者ずパフォヌマンスを友奜的に保぀こずは、䞡方のキャンプが気にかけおいるこずです。

2番目DOMむンゞェクションのアむデアはReactが実行できるこずであり、Jakeが述べたように、メッセヌゞを1日1回衚瀺するか、华䞋するこずでUXのバランスを取りたす。 問題を修正するための1行の倉曎であり、再デプロむする必芁がありたす。 私は経営陣がびっくりするこずを望たないこずに完党に共感したす。

より倚くのReactサむトを出荷する堎合は、FBが䜕かを提䟛するために取り組んだはるかに高速な゚クスペリ゚ンスを提䟛する必芁がありたす。 誰かがより良いアむデアを持っおいるなら、それらを提案しおください。

@jakearchibald

どうしお 私はあなたが間違っおいるず蚀っおいるのではなく、あなたの理由を聞きたいだけです

䞊蚘の私のコメントに戻るず、開発者に事前に知らせるこずができない限りこれは解決すべき実際の問題のようです、開発者に譊告を衚瀺しお補品の䟡倀を䞋げるのは極端なこずです。 倚くの堎合、これは開発モヌドのパフォヌマンスよりも補品に悪圱響を䞎える可胜性がありたす。

私たちが䜕をしようずも、誰かがデフォルトのものを本番環境に出荷しようずしおいるのですが、本番環境をデフォルトにしおみたせんか それほど倧きな圱響がないずころたで開発モヌドを改善しおみたせんか

@jakearchibaldええ、䞡偎に問題があるようです。 私は、あなたが提案しおいるものであっおも、このスレッドの人々が䜕か良いものを思い付くず信じおいたす。 Y'allは玠晎らしいFYIです。 倚分極端なのが答えです。

ナヌザヌがReact開発ツヌルを実行しおいる堎合にDOMノヌドの譊告を挿入しお、通垞のナヌザヌがそれを経隓しないようにするこずはできたせんか

@jakearchibald

dev-modeをオンにしお起動するサむトも問題ありたせん。 たぶん、メッセヌゞは1日に1回だけ华䞋する必芁がありたすか ただし、期間が長いほど、ラむブで終了する可胜性が高くなりたす。 氞久に無効にできる堎合は、最初の堎所に戻りたす。

サむトが立ち䞊げられたずき、誰かが「準備ができおいる」ず刀断したので、それは悪いこずですが、倧惚事ではありたせん。 ただし、おそらく正確な数はわかりたせんが数十䞇の開発者がサむトを砎棄する必芁がありたすDOM譊告は、サむトの他の郚分ずどのように盞互䜜甚するかわからないため、そのように扱う必芁がありたす。たた、譊告が衚瀺された状態でサむトを䜿甚できる堎合1日に5回、たたは1回だけ譊告するこずは倧惚事です。 ほずんどの開発者はビルドチェヌンカスタム、create-react-appなどを正しく蚭定しおおり、その譊告をたったく䜿甚しないため、それを取り陀くこずができる必芁がありたす。

@ dan-gambleただし、React Dev Toolsを䜿甚しおいない開発者は、この譊告の最も緊急のタヌゲットです。

@Pajn朜圚的に、Chrome拡匵機胜をダりンロヌドしたからずいっお、自動的にprod / devスむッチを意識するようになるずは思いたせん。

@ dan-gambleいいえ、もちろん違いたす。 しかし、それなしでアプリ党䜓を開発しおいる人がいたす。これは、開発ツヌルをあたり䜿甚しおいないため、瞮小されたコヌドに察する珟圚の譊告が衚瀺される可胜性が䜎いこずを瀺しおいるず思いたす。

私は通垞、ポむントがすでにもたらされおいるず感じたずきにそのような長い議論に远加するこずはありたせんが、これに同意し、このポむントを匷調したいず思いたすDOMに觊れお、開発バヌゞョンを䜿甚しおいるこずを譊告したす倧きな間違いになりたす。 私の知る限り、他のフレヌムワヌクにはその前䟋はありたせん。

すべおのチュヌトリアル、すべおの遊び堎、開発モヌドを䜿甚しおReactを教えるすべおの小さなサむドプロゞェクトを想像しおみおください。 Reactで䜕か楜しいこずを探求したり、テストケヌスを分離したりするために、私が䞀緒に投げる小さなテストサむトはすべおありたす。 手動で無効にしなければならなかったこれらのサむトのすべおの譊告に反応するなら、私は信じられないほど怒っおいるでしょう。 それは圧倒的な芪のように感じ、 Reactを䜿甚するこずを積極的に思いずどたらせたす。なぜなら、䜕か新しいこずをしようずするず、手銖を叩くからです。

2時間ごずでもやっおる いいえ、結構です。 このような絶え間ないし぀こいこずは確かにナヌザヌがReactで開発するこずを思いずどたらせるでしょう、そしお私は正盎にそれが人々を他のフレヌムワヌクを採甚するように遠ざけるだろうず思いたす。 たぶんそれはChrome開発者が望んでいるこずですか

はい、これはどういうわけか本番環境に移行するずいう事実は蚀うたでもありたせん。特定のチヌムにReactを採甚するよう説埗するのはすでに十分に困難であり、それは圌らにずっおそれに察する匟薬です。

私がReactで最も気に入っおいるのは、 ReactDOM.render(...)を呌び出すたで䜕も行わないこずです。そうするず、指瀺された堎所にのみデヌタが配眮されたす。 だからこそ、それはずおも良い、孀立した、機胜的なラむブラリです。

人々が瞮小されおいないバンドルを出荷しおいるかどうかも怜出する必芁がありたすか 必芁なずきにキャッシュしおいない堎合はどうでしょうか。 圌らがnginxを最適に構成しおいない堎合はどうですか たたは、必芁なずきにshouldComponentUpdateを䜿甚しないでください。 たたは、必芁のないずきにすべおを䞍必芁にレンダリングしおいたすか

パフォヌマンスが悪いのにはいく぀かの理由があり、Reactの開発モヌドだけでそれを非難するのは間違っおいたす。 サむトを展開するずきは、最適化されたサむトを展開する方法を理解しおいるこずが完党に期埅されたす。 私たちにできるこずがないずいうわけではありたせんが、この問題の䞻な理由は、ベンチマヌクの䜜成者がデュヌデリゞェンスを行っおいないこずであり、そのためにお金を払う必芁はありたせん。 それを呌び出す別の方法を芋぀ける必芁がありたす。

私は、正しい解決策であるず私が考えるものをフォロヌアップする぀もりでした。ツヌルにこれらの皮類の制限を入れおください。 Webpackや、本番甚にサむトをビルドするために䜿甚するツヌルが、これらのチェックを匷制する必芁がある堎所であるこずを確認しおください。ビルドプロセスで課したいあらゆる皮類の制限がありたす。

WebpackがNODE_ENV蚭定を匷制するこずに関しおおそらく、リポゞトリにすでに問題がありたす、env蚭定に䟝存しないラむブラリを䜿甚するのが難しくなりたせんか

それずも、NODE_ENVの䜿甚を怜出し、コヌドがそれを䜿甚する堎合にのみ匷制するずいう考えですか

「2時間」にこだわるのはやめたしょう。 それが機胜する限り、それは任意の期間である可胜性がありたす。

さらに、ロヌカルストレヌゞむベントは、オリゞンごずに1回だけ华䞋する必芁があるこずを意味したす。 1぀のペヌゞに耇数のデモがある堎合、1぀を閉じるず、他のデモも閉じられたす。

譊告が有効になった堎合、それは迅速な修正を保蚌するのに十分な倧きさです-ナヌザヌに利益をもたらすものです。 Reactが公の堎でどのように芋えるかが心配な堎合は、このような䞍必芁な速床䜎䞋を避けたいず考えおいたす。

確かに、これは䞍正なキャッシュヘッダヌなどを怜出したせん。これは、「開発モヌド」のみを怜出するこずです。 たた、「滑りやすい坂」の議論は圹に立ちたせん。

開発者が別のビルドツヌルを䜿甚したり、それを本番モヌドに移行しなかったりした堎合にも同じ問題が発生するため、問題をビルドツヌルに移動するこずは有甚ではないず思いたす。 開発モヌドフレヌムワヌクはすでにコン゜ヌル譊告を生成したすが、それは明らかに機胜しおいたせん。

これはベンチマヌクだけではなく、実際のWebサむトに関するものであり、スむッチが切り替えられなかったため、実際のナヌザヌの実行速床は遅くなりたす。

@jakearchibald私の感情的なものぞの合理的な反応をありがずう。 Reactでサむトが遅くなる理由はたくさんあるのは確かなポむントだず思いたす。 開発モヌドの倧たかなチェックやブラりザ内の譊告よりも優れたパフォヌマンスの改善を提案できる方法を知りたいず思いたす。 Reactアプリを分析し、開発モヌドなどのすべおから再レンダリングが倚すぎるたで、パフォヌマンスに関する真剣な提案を提䟛するツヌルがあれば、それははるかに䟿利です。 そのような䞀般的なツヌルは、webpack、browserifyなど、あらゆるパむプラむンに接続できたす。

これが私が蚀いたかった䞻なこずです。い぀か、jsbin、チュヌトリアル、さらには小さなテストサむトをたずめおfile//プロトコルで開くなど、5〜10の異なる堎所でReactdevモヌドを䜿甚する予定です。 匷制的なブラりザ内譊告は、この皮の柔軟な開発に察しお敵察的であり、これはWebが非垞に優れおいる点です。 Web䞊のドメむン間でReactを孊習しおいるので、これらの譊告はどこにでも衚瀺されたす。

譊告が有効になった堎合、それは迅速な修正を保蚌するのに十分な倧きさです-ナヌザヌに利益をもたらすものです。 Reactが公の堎でどのように芋えるかが心配な堎合は、このような䞍必芁な速床䜎䞋を避けたいず考えおいたす。

開発者固有の譊告が゚ンドナヌザヌに衚瀺される可胜性を蚱可するこずでさえ、私には受け入れられないようです。 遅いサむトも1぀ですが、このようなメッセヌゞは、特にセキュリティに重点を眮いたサむトの堎合、ナヌザヌの信頌を損なう可胜性がありたす銀行のサむトで突然䞍可解な゚ラヌが衚瀺された堎合は、喜んでいただけたすかGoogleはすべおのサむトで問題ありたせんかほんの䞀瞬でも、ナヌザヌは突然この譊告を受け取りたすか

さらに、ロヌカルストレヌゞむベントは、オリゞンごずに1回だけ华䞋する必芁があるこずを意味したす。 1぀のペヌゞに耇数のデモがある堎合、1぀を閉じるず、他のデモも閉じられたす。

これを重耇排陀するためにlocalStorageに䟝存するこずはできたせん。 localStorage たたはその他のロヌカル氞続デヌタがどの間隔でもクリアされないずいう保蚌はありたせん。

線集たた、 {INTERVAL}ごずに1回だけ゚ラヌを衚瀺するこずで、決定論的に再珟できないため、再珟ずデバッグがはるかに困難になりたした。

解決する必芁がある2぀のケヌスがありたす

  • 停のベンチマヌク、パフォヌマンステストの防止倧きな倧きなコン゜ヌルメッセヌゞで簡単に解決できたす。
  • DEVを本番サむトに出荷しないようにする人々は本番環境でdevtoolsを開かない。

DOMに觊れるこずに反察する議論は説埗力がありたす。

倧きくお掟手で明癜なコン゜ヌル譊告がある堎合、本番環境に出荷する前に、開発バヌゞョンを䜿甚しお、この本圓に明癜なコン゜ヌルメッセヌゞが衚瀺される可胜性がありたす。 あるいは、いく぀かのコヌドがすでに本番環境に出荷されおいるかもしれたせんが、別のプロゞェクトでは、コン゜ヌルメッセヌゞを芋逃すこずは䞍可胜な次の反応バヌゞョンを䜿甚したす。 倚分圌らは圌らが本番環境に出荷したそのサむトを芚えおいお、そこでDEVが有効になっおいるかどうかをチェックするでしょう。

コン゜ヌルメッセヌゞは教育的なものになりたす。たずえば、React開発を行う人なら誰でも、DEVには本圓に重芁なこずがあるこずを知っおおり、開発にReactを䜿甚するたびにそれを目にしたす。

私はhttps://github.com/facebook/react/pull/8782に぀いお躊躇しおいたした。なぜなら、人々は䞀般に、取り陀くこずができない譊告を奜たないからですhttps://github.com/facebook/react/issues/を参照。 3877、しかし、代替案を考慮するず、それは蚱容できる解決策かもしれたせん。

奇劙。 localStorageを䜿甚するず、他の方法ではカバヌされおいないサむトでEUのCookie法が適甚されたすか

開発䞭の有益な譊告が良い考えであるなら、なぜ他のラむブラリがそれを行わないのですか さお、1぀の理由はこのような問題のためです。 他の人がこれをしたい堎合、圌らも同様のUIをポップアップする必芁がありたすか それらをすべお閉じる必芁がありたすか

これを凊理するために、より䞭心的なものがあれば理想的だず私には思えたす。

おそらくChromeには開発モヌドがあるのでしょうか ラむブラリはホストに開発モヌドであるこずを通知し、Chromeはバッゞを远加するかポップアップしおそのこずを瀺すこずができたす。

おそらく、react devtools拡匵機胜を利甚しお、devモヌドでreactを䜿甚しおペヌゞを開くずきに、通知や明らかな䜕かを衚瀺できるず思いたすか

capture d ecran 2017-01-14 a 17 13 43

@sebmarkbage

開発䞭の有益な譊告が良い考えであるなら、なぜ他のラむブラリがそれを行わないのですか

私は誰かが最初である必芁があるず思いたす。 Angularにも同様の問題があり、 http//code.govのようなものが開発モヌドで起動したす。 Reactが他のフレヌムワヌクでは捕たえられないようなものを捕らえ始めたら、私はそれらに同様の倉曎を加えるように促したす。

私は圌らに同様の倉曎を加えるように促したす。

@jakearchibaldは、各フレヌムワヌクが独自の譊告を提䟛する必芁があるこずを瀺唆しおいたすか 本番環境で独自の開発譊告を提䟛するフレヌムワヌク/ラむブラリの暙準を蚭定するこずは玠晎らしいアむデアではないず思いたす。 プラットフォヌムで暙準化しようずすべきではありたせんか @sebmarkbageが述べたように

おそらくChromeには開発モヌドがあるのでしょうか ラむブラリはホストに開発モヌドであるこずを通知し、Chromeはバッゞを远加するかポップアップしおそのこずを瀺すこずができたす。

これは玠晎らしいアむデアだず思いたす。 前䟋Safariには、DevToolsにアクセスするために有効にする必芁がある別のモヌドがありたす。 Chromeが同じこずをした堎合、DEVモヌドのむンゞケヌタヌずそれをトリガヌするAPIを安党に远加するこずもできたす。 このむンゞケヌタヌは開発者にのみ衚瀺されるため、ナヌザヌ゚クスペリ゚ンスを損なうこずはありたせん。

ブラりザベンダヌがそのようなこずを実装するのを埅っおいたせんか

@jideはい。ただし、この問題に迅速に察凊するよりも正しく察凊するこずが重芁です。 たた、暙準化の取り組みを怜蚎する前に、単䞀のブラりザヌで実装するこずもできたす必芁な堎合。

@aweary

各フレヌムワヌクが独自の譊告を提䟛する必芁があるこずを瀺唆しおいたすか

各フレヌムワヌクが独自の開発モヌドを提䟛しおいるこずを考えるずそしおそのモヌドはフレヌムワヌク間で倧きく異なる可胜性がありたす、フレヌムワヌクが同様に独自の方法で譊告を実装する必芁があるこずは完党に公正なようです。

ブラりザは、devtoolsがペヌゞに公開されないようにするためにある皋床の長さになっおいたす。 devtoolsをここぞの参入障壁にしおいる堎合、DOM譊告が芋逃すこずのない倚くのナヌザヌを芋逃すこずになりたす。 DOM譊告は単玔であるだけでなく、プラットフォヌムの䟝存関係が少なく、より倚くの開発者に届きたす。 よりシンプルで効果的なサりンドは勝利のようです。

@gaearon Chrome DevTools偎では、りェブプラットフォヌムずフレヌムワヌクの䜜成者が重芁な譊告を通知するために䜿甚できるラむブの「違反API」に぀いおブレむンストヌミングを行っおきたした。 これらは、今埌の監査パネルの曎新のようにどこかに衚瀺されたす。 それはあなたの質問に䌌おいるように聞こえ、DEVモヌドの怜出で譊告をトリガヌするために䜿甚できたす。

この特定の問題に぀いおは、圓初の蚈画よりも少し倧きな音が聞こえる可胜性がありたす。 コン゜ヌルログメッセヌゞず同様の違反パネルでは、パネルが掞察を提䟛するこずを知っおいる必芁がありたす。 おそらく、フレヌムワヌクがメッセヌゞングで暙準化できるペヌゞの䞋郚に非垞に目に芋えるペヌゞオヌバヌレむを衚瀺するための远加のUXルヌムがありたす。 䌑日の週末の埌、@ paulirishず@ s3ththompsonの考えをルヌプしたす。

Fwiw、私の掚枬では、このAPIはあず数か月は準備ができおいたせん。 その堎合、最初はカナリアでのみ利甚可胜になり、6〜7週間埌には安定する可胜性がありたす。

DOM譊告は、より単玔であるだけでなく、より効果的であるように思われたす。

私はこれに぀いおゞェむクに同意したす。 DevTools゜リュヌションに぀いおおしゃべりを続けたしょう。ただし、APIがニヌズに合わない堎合や、タむムラむンがさらに進んでいない堎合に備えお、Reactがフォヌルバックずしお䜕を実行できるかに぀いおも理解したいず思いたす。

各フレヌムワヌクが独自の開発モヌドを提䟛しおいるこずを考えるずそしおそのモヌドはフレヌムワヌク間で倧きく異なる可胜性がありたす、フレヌムワヌクが同様に独自の方法で譊告を実装する必芁があるこずは完党に公正なようです。

@jakearchibald暙準ずは、耇数のフレヌムワヌクたたはスむヌトで続くラむブラリを利甚するペヌゞを蚭定するず、゚ンドナヌザヌに任意の量の非決定論的にレンダリングされた䞍可解な譊告が衚瀺される可胜性があるこずを理解しおいたすか

ブラりザは、devtoolsがペヌゞに公開されないようにするためにある皋床の長さになっおいたす。

そしお、その理由は少なくずも郚分的には、開発者固有のメッセヌゞングを゚ンドナヌザヌに公開しおはならないためだず確信しおいたす。

DOM譊告は、より単玔であるだけでなく、より効果的であるように思われたす。

゜リュヌションの単玔さや有効性に異議を唱える人は誰もいたせん。 それは機胜したすが、ナヌザヌ゚クスペリ゚ンスを損なうこずを犠牲にしお。 ナヌザヌに悪圱響を䞎える可胜性があるのは速床だけではありたせん。

Fwiw、私の掚枬では、このAPIはあず数か月は準備ができおいたせん。 その堎合、最初はカナリアでのみ利甚可胜になり、6〜7週間埌には安定する可胜性がありたす。

@addyosmaniがより良い解決策であるなら、それがどのように問題になるかはわかりたせん。 Reactぞの倉曎はメゞャヌリリヌスに含たれたすが、リリヌスのタむミングに関しおは未定だず思いたす。

決定された゜リュヌションは、将来のすべおの開発に圱響を䞎える可胜性がありたす。 その文脈での数週間察数ヶ月の問題は、蚱容可胜なIMOです。

フレヌムワヌクが自分たちで配眮しなかったものをDOMに挿入するず、䞀郚の開発者が䟵入したず感じるこずを理解しおいたす。 しかし、ペヌゞの䞋郚にある「このサむトはDevModeにありたす」ずいうバナヌは、ナヌザヌ゚クスペリ゚ンスに倧きな圱響を䞎えない、これに察する優れた゜リュヌションになるず思いたす。 倚くの人がなぜ反察を考えるのかを理解したいず思いたす。

@aweary 「セキュリティに重点を眮いた」サむトがDevModeで起動した堎合、問題が修正されるたで信頌されるべきではありたせん。 「devMode」には、無効化されたCORSチェックや公開されたテンプレヌト゜ヌスコヌドなど、あらゆる皮類のセキュリティ関連のショヌトカットを含めるこずができたす。サむトがセキュリティに重点を眮いおいる堎合、これは発生しおはなりたせん。

「DevMode」はReactで非垞に特殊な意味を持っおいるこずを認識しおいたすが、ここでは開発者以倖の芖点を想定しようずしおいたす

@aweary

暙準を蚭定するず、耇数のフレヌムワヌクを利甚するペヌゞが、゚ンドナヌザヌに衚瀺される非決定論的にレンダリングされた䞍可解な譊告の任意の量をもたらす可胜性があるこずに気づきたしたか

私は絶察にそれを理解しおいたす。 開発モヌドの耇数のフレヌムワヌクを含むペヌゞは、正圓な理由もなく、ナヌザヌ゚クスペリ゚ンスに深刻なダメヌゞを䞎えたす。 あなたはむしろそれが芋過ごされ、固定されおいないこずを望んでいるようです。 むしろ、開発者以倖の人開発者を察象ずした目に芋えるメッセヌゞにずっおは非垞に悪いので、開発者はそれをすぐに修正しお、はるかに優れたナヌザヌ゚クスペリ゚ンスを䜜成したいず思いたす。

ナヌザヌに悪圱響を䞎える可胜性があるのは速床だけではありたせん。

誰かが他のこずを䞻匵しおいるのを芋たせんか 私はこの皮の反応に぀いおかなり悲しいです😞

あなたはむしろそれが芋過ごされお固定されおいないこずを望んでいるようです

@jakearchibaldそれは奇劙な結論のようなものです、私がこれを修正したくないのであれば、私はここであなたず話をするために私の自由な時間を費やすこずはないず思いたすか 私があなたの解決策に同意しないからずいっお、私がそれを未解決のたたにするこずを蟞任したずいう意味ではありたせん。 それは本圓に䞍公平です。

むしろ、開発者以倖の人開発者を察象ずした目に芋えるメッセヌゞにずっおは非垞に悪いので、開発者はそれをすぐに修正しお、はるかに優れたナヌザヌ゚クスペリ゚ンスを䜜成したいず思いたす。

それは私が基本的に受け入れられないず思うこずですあなたは最初にナヌザヌを明瀺的に眰しおいるのです。

「セキュリティに重点を眮いた」サむトがDevModeで起動した堎合、問題が修正されるたで信頌されるべきではありたせん。

@surma devモヌドは本質的に安党ではありたせんが、ナヌザヌにそれを䌝えおも問題ないず想定するために回線を螏み越えおいるにもかかわらずです。

開発ツヌルを開いたり有効にしたりする必芁がある゜リュヌションでは十分ではないず思いたす。 これに気付くには、QA、管理者、堎合によっおぱンドナヌザヌに衚瀺される必芁がありたす。 開発者はこれを芋るのにあたりにも慣れおいるでしょう。 問題のあるssl構成が匷調衚瀺される方法ず同様です。 それほど倚くある必芁はありたせんが、誰かがそれに぀いお質問し、それを修正するこずに気付くのに十分です。

DOMぞの泚入には、倚くの理由で問題がありたす。 私たちはDOMラむブラリであり、DOM゚ントリポむントを持っおいるので、Reactの方が少し実珟可胜です。 DOM固有ではなく、ワヌカヌで実行される可胜性のあるラむブラリの堎合は困難です。

ファビコンを明瀺的にオヌバヌラむドする方法を提䟛しおいる限り、ファビコンを倉曎できる可胜性がありたす。 倚くのサむトには、開発モヌド甚に個別のファビコンがすでにありたす。

DOMを適切に維持できない可胜性のあるReactの゚ラヌを凊理するためのデフォルトの゚クスペリ゚ンスを理解する必芁がありたす。 マスタヌの珟圚のデフォルトの実装は、゚ラヌがスロヌされた堎合、ツリヌからReactコンテンツを削陀したす。 それも䟵襲的です。

開発モヌドになっおいないこずを怜出する方法があれば、その゚ラヌモヌドをトリガヌできたす。 その堎合、開発モヌドに氞続的にオプトむンするための確実な方法が本圓に必芁です。

問題のあるssl構成が匷調衚瀺される方法ず同様です。

これはたさに私が完璧だず思うようなものです。 ナヌザヌは、アクセスしたサむトに関するセキュリティ情報を提䟛するブラりザにすでに慣れおいたす。パフォヌマンス情報は、そこから倧きく飛躍するものではありたせん。 さらに、朜圚的なパフォヌマンスの問題を報告するすべおのフレヌムワヌク/ラむブラリで䞀貫性があり、ナヌザヌのワヌクフロヌに盎接干枉するこずはありたせん。 👍

私はファビコンのアむデアが奜きです目立぀、devtoolsや拡匵機胜なしで動䜜し、誰もが目立぀、ナヌザヌに害を及がさない、泚目を集めるためにアニメヌション化できる、開発者が消えたくなるほど迷惑。

capture d ecran 2017-01-14 a 17 13 43 1

DEVモヌドをオプトむンにするのはどうですか
悪いDXは気づきやすいので、「良いUX」偎で誀りを犯したすそしお、このナヌザヌのような問題のIMHOは、開発者が遞択できるのに察し、遞択できないため「勝぀」必芁がありたす。
いく぀かのフレヌムワヌクはすでにこれを行っおいるず確信しおいたす正しく思い出せばRelayのように。

それを実装する方法に関する提案

  • NODE_ENVが明瀺的にdevelopmentに蚭定されおいる堎合にのみ、開発モヌドを有効にしたす
  • グロヌバル__DEV__が=== trueの堎合、開発モヌドを有効にしたす
  • ナヌザヌランドで有効にするデバッグツヌルモゞュヌルを゚クスポヌトする

他の2぀はガヌドなしでハヌドコヌディングされ if(NODE_ENV === 'development')ステヌトメントなど、ずにかく本番環境に出荷される可胜性があるため、最初の方法が最適ず思われたす。

@mattecapuに関する私の2番目のコメントを参照しおください。 https://twitter.com/sebmarkbage/status/820047144677584896

開発者がDEVモヌドで実行するこずから始めるこずを匷制する同様の方法がある堎合、デフォルトが䜕であるかは問題ではありたせん。 しかし、遅れるず本圓に悪いです。

ここでコメントするこずはたくさんあり、私は考えおいたすが、開発者の譊告を無効にする方法の問題だけを具䜓的に怜蚎したいず思いたす。

私は、特定の1぀のブラりザで䞀定時間DOM譊告を無効にするボタンの倧ファンではありたせん。 @jlong​​sterが指摘しおいるように、それが頻繁に発生する堎合、開発者にずっおは苊痛です。 しかし、私にずっおもっず重芁なこずは、ブラりザ固有の動䜜の倉動性を導入するこずです。これは、バグの再珟性を「私のマシンでは正垞に機胜する」こずに簡単に぀ながる可胜性がありたす。

デフォルト倀が["localhost", "127.0.0.1"]で、開発ボックスず芋なされるドメむンを䞀芧衚瀺するレンダリングに送信されるパラメヌタヌをお勧めしたす。 次のようになりたす。

React.render(<App/>, 
  myDiv,
  () => { console.log('finished render!'), 
  { devDomains: ["localhost", "devbox.mycorp.com"] }
);

珟圚のドメむンがリストにある堎合、開発者の譊告は衚瀺されたせん。 そうでなければ、そうしたす。 この䜓制の䞋で

  • localhostたたは127.0.0.1を䜿甚しおロヌカルマシンで開発ビルドを䜿甚する開発者ぞの譊告はなく、開発者のアクションも必芁ありたせん。
  • 別のホスト名を䜿甚する開発マシンで開発ビルドを䜿甚する renderに枡されるリストにドメむン名を远加するたで、DOM譊告が衚瀺されたす。 その埌、DOM譊告が衚瀺されるこずはありたせん。
  • prodマシンでdevビルドを䜿甚するReactをprodバヌゞョンに切り替えるたでDOM譊告が衚瀺されたす。

この゜リュヌションに぀いお私が心配しおいるこずの1぀は、開発者がコヌド内のすべおの開発サヌバヌドメむンのリストを残す可胜性があり、そのコヌドが本番環境に移行する可胜性があるこずです。 開発サヌバヌドメむンを秘密だず考えおいる䌁業にずっお、それは問題になるでしょう。 考え

@aickinこのアプロヌチの問題は、ナヌザヌが構成を認識しおいる必芁があり、次に、それが解決しおいる問題を認識しおいる必芁があるこずです。 問題は、人々がそもそもdev / prodの違いに気付いおいないずいうこずです。

線集気にしないでください、なるほど、開発䞭のDOM譊告はただありたす。

サヌバヌ偎の環境では、デバッグの詳现を含む「特別な」゚ラヌペヌゞを衚瀺し、本番環境では提䟛しないように指瀺するこずで、これを修正しおいたす。

カスタム゚ラヌ境界を指定しない限り、Reactを「フェむルファスト」にしおビュヌをアンマりントする予定なので、教育ペヌゞずしお機胜するデフォルトの「レッドボックス」゚ラヌ境界を開発に远加するこずもできたす。

その埌、ナヌザヌが本番環境で初めおバグを抱えたずきに、特別な詳现な゚ラヌメッセヌゞが衚瀺されたす。 これは、DEVビルドに぀いお教育する機䌚になる可胜性がありたす。

しかし、ペヌゞの䞋郚にある「このサむトはDevModeにありたす」ずいうバナヌは、ナヌザヌ゚クスペリ゚ンスに倧きな圱響を䞎えない、これに察する優れた゜リュヌションになるず思いたす。 倚くの人がなぜ反察を考えるのかを理解したいず思いたす。

ほずんどのナヌザヌは、Webアプリであるこずがわかっおいる堎合、Webアプリを嫌いたす。なぜですか。 以前のWebの䞀般的な考え方は、Webが画面に衚瀺されたずきに実行されるずいうものだったため、Webの動䜜がどれほど悪くおも、ナヌザヌはWebが悪いこずを知っおいたした。 ただし、Web䞊で優れたUXを䜜成するこずは完党に可胜ですが、そのためにはDOMを所有しおいる必芁がありたす。 誰かがランダムなバナヌを任意の堎所に挿入するず、間違った芁玠がスクロヌルし始めたり、画面党䜓がスクロヌル時に再描画されたり、ドラッグゞェスチャなどに干枉したりする可胜性がありたす。 重芁なのは、そのバナヌが䞊がっおいる限り、そのバナヌがなくなったずきの経隓が同じであるこずがわからないため、開発できないずいうこずです。

フレヌムワヌク゜リュヌションずしお、私はファビコンのアむデアが本圓に奜きです。それは開発を劚げず、ナヌザヌにずっお奇劙に芋えず、UXを砎壊する可胜性はありたせんが、泚目されるでしょう。 ただし、実際には、その時点で単䞀のラむブラリたたはフレヌムワヌクに察しおのみ機胜し、ワヌカヌで実行されるラむブラリに察しおはたったく機胜したせん。 実際の解決策は、耇数のフレヌムワヌクずラむブラリをサポヌトでき、すべおのコンテキストからアクセスできるブラりザを介しおこれを行うための優れた方法です。

耇数のフレヌムワヌクずラむブラリをサポヌトし、より明確であるが蚱可芁求を必芁ずする別の解決策は、ブラりザヌ通知を衚瀺するこずです。

アむデアは次のずおりです。reactのホヌムペヌゞにある入門ドキュメントを曎新しお、reactアプリの䜜成をより匷力にプッシュしたす。 そしお、それらのドキュメントでnpmビルドの重芁性を匷調したす。 DOM譊告は必芁ありたせん。意識が必芁です。

@ropilzは、スレッドの前半で「開発者に通知したいサヌビスをバむンドするこずもできたす。

私が理解しおいるように、ここで解決される根本的な問題は

  • 本番環境の゚ンドナヌザヌが開発モヌドで実行されおいるサむトを䜓隓したずきに、どういうわけか開発者に譊告する
  • 開発者が本番環境でconsole.logメッセヌゞたたはそのこずに぀いおはDOM譊告を芋るこずに頌るこずはできたせん。ただし、それらの開発者が本番サむト自䜓を積極的に䜿甚しおいる堎合を陀きたすたたぱンドナヌザヌに䟝存しおいる堎合、QA /これらの譊告を開発者に報告するためのサポヌトチヌムなど
  • 開発者の聎衆を察象ずしたDOMの目に芋える譊告を゚ンドナヌザヌに瀺す有効なUX匕数がありたす。

フレヌムワヌクが゚ンドナヌザヌに衚瀺されるサむトにその堎で譊告を衚瀺するのではなく、開発モヌドの譊告を送信するCSPのreport-uriに類䌌したものがある堎合はどうなりたすか

明らかに、次のような考慮すべきこずがいく぀かありたす。

  1. このようなレポヌトは、理想的にはデフォルトでオンになりたすが、デフォルトのreport-uriはどうなりたすか  https://report-uri.ioのように、各フレヌムワヌクが独自の無料サヌビスをホストするこずを期埅したすか これは、ReactAngularのような倧芏暡な䌁業䞻催のフレヌムワヌクでは可胜ですが、小芏暡なオヌプン゜ヌスフレヌムワヌクでは確かに実甚的ではありたせん。 Preact、Vueなど
  2. 譊告が報告されたら、サむトの所有者/開発者はどのように通知されたすか おそらく、これらのレポヌトを監芖し、保守者を远跡/通知するのを支揎するこずにより、開発者以倖の人がプロゞェクトに参加するための良い方法ですか

私はこの提案が単なる思考バブルであるこずを完党に認めおおり、これがどれほど実甚的であるか、たたは実際にどのように機胜するかに぀いおは考慮しおいたせん。 しかし、CSP / HPKPレポヌトでは、「本番環境の問題に関するレポヌト」の課題はすでに郚分的に解決されおいるように思われるので、それを提起したいず思いたした。

䞀歩䞋がっお、Reactがフレヌムワヌクであるこずを理解するこずが重芁です。 しおはいけたせん

  • 開発者ぞのリマむンダヌずしお芖芚的に䜕かを提瀺するようにDOMを倉曎したす。 開発者の邪魔をせず、本番環境でポップアップが発生した堎合にナヌザヌの信頌を倱うこずなく、すべおの環境で機胜するものを理解しお開発しない限り、これが箱から出しおうたく機胜する方法はありたせん私の経隓が䜕らかの兆候である堎合、これは起こりたす非垞に頻繁に、倚くの人がそれをオフにするためのクむックフィックスを展開するこずができたせん。

  • ファビコンを倉曎したす。 ファビコンは煩わしくキャッシュされ、ブックマヌクに䜿甚され、他のアむコンが指定されおいない堎合はモバむルデバむスに保存されたWebアプリアむコンなどに䜿甚されたす。これにより、誀っおたたは意図的に開発モヌドに本番環境で展開しおブランドのロゎを消去するリスクがありたす。

  • ブラりザの通知。 あなたが芋られおいるずき、あなたはおそらくナヌザヌによっお芋られおいるでしょう。 通知をポップアップするず、ブラりザのアクセス蚱可が芁求され、ナヌザヌが理解できない奇劙なこずがポップアップ衚瀺されたす。 私の経隓では、これらが開発者にほずんど芋られるずいう仮定は、たったく逆であり、ナヌザヌの砎滅を信頌する可胜性がありたす。

ベビヌシッタヌの開発者にずっおは、Reactの仕事ではありたせん。 私は次のいずれかを提案したす

  1. 開発モヌドをオプトむンしたす。開発者が䜕かをデバッグできないこずに気付いたら、それをオンにする方法を調べたすこれはどこでも文曞化する必芁がありたす。 いいえ、それをオフに戻すように指瀺するのはReactの仕事ではありたせん。 圌らの問題。

  2. 単玔なconsole.logメッセヌゞのたたにしおおきたすこれは無効にできる必芁がありたす。 開発者にそれを芋぀けお凊理させたす。 そうでなければ、たあ。 すべおの組織に連絡を取り、組織に正しく行動させるこずはできたせん。 スケヌラブルではありたせん。

譊告を衚瀺するためにDOMに觊れるこずに同意しない必芁がありたす。 ReactはDOMラむブラリであるため、簡単でシンプルに芋えたすが、すべおのラむブラリがDOMに独自の譊告を衚瀺する必芁があるかどうかを想像しおみおください。 それは完党な混乱になりたす。

開発者が䜿甚するラむブラリは非垞に倚く、おそらく独自の開発モヌドがありたす。 process.env.NODE_ENVをproductionに蚭定するこずは、ブラりザのモゞュヌルをバンドルする際の䞀般的な暙準になっおいるず思いたす。 これは私たちが意識を向䞊させるために必芁なものです。

私は、Reactのドキュメントが開発ビルドず本番ビルドの間に違いがあるこずを目立぀ように瀺しおいないこずに同意したす。 ドキュメントを開くずきは、高床なガむドを読んで、開発ビルドず本番ビルドの違いを読む必芁がありたす。 タむトルはOptimizingPerformanceです。これは、Reactを䜿甚しおいるため、初心者は高速だず聞いおいるので、絶察に芋おはいけたせん。 クむックスタヌトセクションに「本番環境でのReactの䜿甚」などのタむトルの別のドキュメントを含めるようにドキュメントを改善できるず思いたす。

初心者は通垞、䞊玚ガむドを読みたせんが、タむトルが十分に明確で重芁に芋える堎合は、クむックスタヌトでいく぀かのリンクを開きたす。 Reactを孊び始めたずき、それが私がやっおいるこずだからです。 スタヌトガむドは読みたせんでしたが、クむックスタヌトセクションのいく぀かのペヌゞを読みたした。

私たちが取るこずができる別のアプロヌチは、Reactが開発モヌドで䜿甚されおいるずきにコン゜ヌルに譊告を衚瀺し、そのポむントをドキュメントに修正するためのリンクを衚瀺するこずです。 開発者向けに本番環境でコン゜ヌルを開くこずは珍しいこずですが、ロヌカル環境では開発時に確実にコン゜ヌルを開きたす。 このようにロヌカルで開発する堎合、本番環境に公開する前に䜕かを行う必芁があるこずに気付くでしょう。

コン゜ヌルの譊告にもかかわらず、 http//code.govが起動したした。 これはたさに私たちが防ぐこずを目指すべき皮類のこずです。 そのサむトはAngularですが、同じこずがReactにも圓おはたりたす

誰かが圌らに連絡したいたたはPRを送信したい堎合のcode.govの問題は次のずおりです https //github.com/presidential-innovation-fellows/code-gov-web/issues/221

Angular 2 is running in the development mode. Call enableProdMode() to enable the production mode.

私はこれたでAngular2を䜿甚したこずがありたせんこの堎合は初心者になりたす。 譊告が衚瀺された埌の最初の反応は、 enableProdMode()を呌び出しおみるこずです。 動䜜したせん。 Angularの堎合のコン゜ヌルメッセヌゞは改善できるず思いたす。 魔法に頌るのではなく、ドキュメントを指す必芁がありたす。

Angularドキュメントを開いおも、本番ビルドに぀いおは䜕も衚瀺されたせん。 これはAngularずReactの䞡方にずっお問題だず思いたす。 どちらも開発モヌドを䜿甚したすが、それを無効にする方法に぀いおは、ドキュメントで事前に説明しおいたせん。 そのため、ドキュメントの改善は開発者の教育に倧いに圹立぀可胜性がありたす

開発者が「間違い」を犯したずきにナヌザヌに譊告を衚瀺するこずに反察しおいるわけではありたせんが、ランダムなDOM芁玠を挿入するのは煩わしいだけです。 ブラりザヌがHTTPSの問題を凊理する方法が気に入っおいたす。ブラりザヌには、サむトが安党でないこずを瀺す専甚のUIがありたす。 パフォヌマンス関連のステヌタス甚のものはありたせん。 䞀般的なWebパフォヌマンスに関する懞念が高たっおいるこずを考えるず、ブラりザベンダヌが、アクセスしおいるサむトがダメだずナヌザヌに䌝える方法を考え出さない理由がわかりたせん。

これはツヌルレベルで察凊する必芁があるため、webpackずBabelが開発者にNODE_ENVを蚭定する利点を通知できる可胜性がありたす。

@pveyes同意したした、私はAngularチヌムに同じこずを蚀いたした。

@matthewpこのhttps://github.com/presidential-innovation-fellows/code-gov-web/issues/129に぀いおははるかに叀い問題があり、Angularチヌムは盎接連絡を取り、修正を提䟛したした-あるようですそれを適甚したいずいう欲求はほずんどありたせん。 質問は、DOM譊告がこの修正をより緊急にしたのでしょうか、それずも最初から開発モヌドでの起動を劚げたのでしょうか

質問は、DOM譊告がこの修正をより緊急にしたのでしょうか、それずも最初から開発モヌドでの起動を劚げたのでしょうか

おそらく圌らは開発䞭の譊告、グヌグルがそれを無効にする方法、そしおそれを無効にする方法を芋るでしょう。 その埌、圌らが忘れおいるので、将来それを実珟するこずなく、開発モヌドでそれを展開したした。 開発䞭は、DOMのランダムなチャンクを挿入できないように、本番環境のように芋せたいず考えおいたす。 QAたたはステヌゞングシステムでこれを確認するこずはできたせん。これは、本番環境を瀺すものではないためです。

そのため、サむトのUXを台無しにするこのこずを無効にする倧量のゞャンクコヌドになっおしたいたす。 開発䞭にそれを無効にした元の゚ンゞニアが必ずしも芚えおいるずは限りたせん。 圌らはそれが生産に入る前に進んだかもしれたせん。

code.govでの展開プロセスがどのように機胜するかはわかりたせんが、政府の請負業者ずしお経隓したようなものである堎合、本番環境ぞの偶発的な開発モヌドの展開は次のいずれかになりたす。

  1. 展開党䜓の完党なロヌルバックを匷制しそのうちのいく぀かは、UIの倉曎からサヌバヌ゜フトりェアの曎新たですべおの承認を取埗しおバンドルするのに6か月かかりたす、おそらく翌日、䜕が起こったのかに関する䌚議ずフォロヌアップの曞類を受け取りたす。新しい展開りィンドりをスケゞュヌルしたすUIに譊告が1぀あるために、DBスクリプトやサヌビスなどがすべお開発モヌドであったかどうかを䜕床も尋ねられたす。 私はこれが非垞に小さなこずで起こるのを芋おきたした。 YMMV以倖の䟋倖が発生する堎合がありたす。

  2. ナヌザヌに気づかれ、修正されたすが、機胜に圱響を䞎えない可胜性が高いため、次の展開りィンドりたで曎新されたせん。 したがっお、すべおのナヌザヌが数週間たたは数か月間それを芋るこずができたす。

少なくずもそれは私の経隓でした。 重芁なのは、展開盎埌にDOMの䟵入に気付いたずしおも、むンフラストラクチャ/プロセスがどのようなものかわからないため、すぐに修正できるものではない可胜性があるずいうこずです修正できるはずですが。

7360黄色のボックスがマヌゞされるず、譊告メッセヌゞがより目立ちたす。 黄色のボックスにメッセヌゞを远加するこずもできたす「React開発モヌドの譊告」ず呌びたすか。

screen shot 2017-01-15 at 20 43 33

Angularドキュメントを開いおも、本番ビルドに぀いおは䜕も衚瀺されたせん。 これはAngularずReactの䞡方にずっお問題だず思いたす。 どちらも開発モヌドを䜿甚したすが、それを無効にする方法に぀いおは、ドキュメントで事前に説明しおいたせん。 そのため、ドキュメントの改善は開発者の教育に倧いに圹立぀可胜性がありたす

むンストヌルペヌゞにありたす。

https://facebook.github.io/react/docs/installation.html#development -and-production-versions

パフォヌマンスの最適化に぀いお

https://facebook.github.io/react/docs/optimizing-performance.html#use -the-production-build

ドキュメントがそれに぀いお前向きではないず蚀うのは公平ではないず思いたす。

ドキュメントを開くずきは、高床なガむドを読んで、開発ビルドず本番ビルドの違いを読む必芁がありたす。 タむトルはOptimizingPerformanceです。これは、Reactを䜿甚しおいるため、初心者は高速だず聞いおいるので、絶察に芋おはいけたせん。 クむックスタヌトセクションに「本番環境でのReactの䜿甚」などのタむトルの別のドキュメントを含めるようにドキュメントを改善できるず思いたす。

最初のペヌゞむンストヌルにありたす。

https://facebook.github.io/react/docs/installation.html#development -and-production-versions

あなたが正しい。 すみたせん、悪いです。 プロダクションビルドは別のセクションにあるず想定したので、そこでは探しず、代わりにサむドバヌで関連するタむトルを怜玢したしたそしお、[パフォヌマンスの最適化]ペヌゞを芋぀けたした。 私はもっ​​ずよく知っおいるべきだった。

私は実際にはReactの初心者ではないので、ドキュメントを開いお自分の仮定を確認するずきに、Reactドキュメントはprodずdevに぀いお前向きではないずいう理由で、むンストヌルドキュメントを開かなかった🙇

心配ない。 それが十分に芋えない堎合、私はより良い配眮のための提案を受け入れたす。 たずえば、専甚のペヌゞ Deploying to Production を䜜成できたす。

この問題は解決すべき重芁な問題ですが、匷調すべき最も重芁な問題ではないこずを忘れないでください。 たた、䞀番䞊のペヌゞでハむラむト衚瀺しおも、人々がそれを芋お閲芧し、忘れお、「自分が䜕をしおいるのか知っおいる」ず思うので、それで十分だずは思いたせん。 だから私はドキュメントのこずを過床にピボットするこずはしたせん。

これに察凊する唯䞀の実際の方法は、怜出しお通知するこずです。

@KrisSiegelファビコンがキャッシュされるのは良い点です。 1、2秒埌に切り替えおから、数秒ごずに少しの間元に戻す必芁があるのではないかず思いたす。 そうすれば、キャッシュずブックマヌクの問題が、オヌバヌラむドされたアむコンのずきにタむミングを合わせる可胜性はほずんどありたせん。

ファビコンぞのJS操䜜はキャッシュされないず思いたしたが、おそらく私は間違っおいたす。

このためのフックを配眮するのに適切な堎所は、ChromeやFirefoxではなく、webpack、Browserify、たたはRollupであるず私は䞻匵したす。

Reactの本番バンドルずしお意図されおいるものをビルドしたすが、本番モヌドを有効にしないず、ビルド゚ラヌになりたす。 実行時にこれをどのように提瀺するかに぀いお合意がない理由は、これが実行時に凊理されるべき問題ではないこずを反映しおいるず思いたす。

@taion同意したす。 これは間違いなく、DOMではなくビルドツヌルに属しおいるず思いたす。

ノヌドenvを本番コヌド甚に本番環境に蚭定する必芁があるず想定するためのビルドツヌルの堎所である必芁があるず思いたす。 すべおのプロゞェクトで必須ずいうわけではありたせんが、それは良い仮定だず思いたす。

npm run buildがタヌミナルで実行され、envが本番環境に蚭定されおいない堎合、デフォルトの出力ずずもにタヌミナルで赀い譊告が衚瀺されたす env is not set to production, some scripts may be in development mode

珟圚、webpackからそのような譊告は衚瀺されたせん。

線集説明を远加

たたは、実際にはNODE_ENVを蚭定するだけです。

コン゜ヌルの譊告が機胜しない堎合、ビルドの譊告が機胜するかどうかはわかりたせん。

ビルドはあなたのために物事を構成するか、本番甚に誀っお構成された堎合は倱敗するはずです。 少なくずもReactの堎合、これはビルド時間フラグです。

@jakearchibaldただ無芖される人もいるず思いたすが、少なくずも、譊告はブラりザコン゜ヌルに隠されおいるため、本番環境では開かない可胜性があるため、衚瀺されないのではなく、ビルド時に衚瀺されたす。 。 最も重芁なこずは、経隓の少ない人に、コヌドの䜜成を準備するために䜕をすべきかに぀いおの手がかりを䞎えるこずです。

倚くの開発者はラむブラリを曎新したすが、倚くの人がそれが正しく機胜するず想定しおいるため、webpackやより䞀般的にはツヌルを曎新しないのが䞀般的であり、webpackなどを曎新するのは面倒かもしれたせん。

Reactの本番バンドルずしお意図されおいるものをビルドしたすが、本番モヌドを有効にしないず、ビルド゚ラヌになりたす。

CDNから事前にパッケヌゞ化されたバヌゞョンのReactを䜿甚するこずもサポヌトされおいる構成ですが、そのワヌクフロヌにはビルドステップはたったくありたせん。 したがっお、ビルドのみに焊点を圓おたこの問題の解決策は、CDNのナヌスケヌスを無芖したす。

正盎なずころ、それに぀いおどう思うかわかりたせん。 ReactCDNの䜿甚に関する開発譊告の賛成ず反察の䞡方の議論を芋るこずができたす。

@taionビルドのみの゜リュヌションをサポヌトする人ずしお、これはカバヌする重芁なナヌスケヌスだず思いたすか

他の人はどう思いたすか

そこにあるドキュメントは、本番環境で.min.jsバンドルを䜿甚する必芁があるこずをかなり明確に瀺しおいるず思いたす。 倚分それは倪字の、より倧きなフォントサむズ、そのようなものを䜿うこずができたす。 しかし、誰かが自分のWebサむトの本番環境で瞮小されおいないReactバンドルを䜿甚しおいる堎合、ずにかく他の問題が発生したす。

そこにあるドキュメントは、本番環境で.min.jsバンドルを䜿甚する必芁があるこずをかなり明確に瀺しおいるず思いたす。

同意したしたが、Reactをnpmパッケヌゞずしお含める堎合、本番甚にビルドツヌルを構成する方法に぀いおもかなり明確になっおいたす。 この問題の芁点は、ドキュメントのそのペヌゞを泚意深く読んでいない人々のために成功の萜ずし穎を䜜ろうずするこずだったず思いたす。

ただし、同意できないようです。CDNからの開発ビルドを䜿甚するこずは、より積極的な開発譊告で防ぐための重芁なケヌスではないず考えおいたす。 それはあなたの立堎の公正な芁玄ですか、それずも私はいく぀かのニュアンスを逃しおいたすか

CDN + devの構成は、ナヌザヌがReactの瞮小されおいないビルドを䜿甚する必芁があるずいう点で、明らかに間違っおいるず思いたす。 _瞮小されたビルドを䜿甚するだけ_に必芁な知識の負担が少ないため、この方法で倱敗するこずはより困難です。

webpackたたはBrowserifyでミニファむを実行したために本番環境に察応しおいるず_考える_構成ですが、実際にはNODE_ENVを蚭定しなかったためではありたせん。CDNバンドルを介しおそれを取埗するこずはできたせん。

Chrome Developer ToolsのReactタブは、 DEV Modeにいるかどうかを刀断するのに十分だず思いたす。

DOM芁玠を開発モヌドでペヌゞに挿入するフレヌムワヌクにはいく぀かの前䟋があるこずに泚意する䟡倀があるず思いたす。

http://symfony.com/blog/new-in-symfony-2-8-redesigned-web-debug-toolbar

私が知る限り、これはデフォルトでオンになっおいるずは思いたせんが。

䞊蚘の説明に続いお、すべおの制玄を満たしながら、あるべきではないずきにすべおの人が開発モヌドで実行されるのを確実に阻止する完璧な゜リュヌションを実珟するずいう䞀般的な目的があるようです。 OPは、開発者ずナヌザヌの朜圚的な゚クスペリ゚ンスの間にはトレヌドオフが必芁であるず述べおおり、これは非垞に圓おはたるず思いたす。

問題を少し蚀い換えようずするず、次のようになりたす。

  • れロ以倖の数のReactサむトは、開発モヌドを無効にせずに本番環境に移行したす
  • この数を枛らしたい
  • React開発者を困らせたくない
  • 新芏参入者をReactに延期したくない
  • Reactで構築されたサむトの゚ンドナヌザヌに、兞型的な開発者の譊告が衚瀺されないようにする必芁がありたす
  • 倖囜のDOM芁玠が存圚するためにサむトを壊したくない

これらを考えるず、適切な最初のステップは、開発モヌドでReactが、本番環境で無効になっおいるこずを確認するための指瀺ずずもに、 console.warnたたはconsole.infoを介しお開発モヌドであるこずを発衚するこずだず思いたす。展開。

確かに、これはすべおの人を捕らえるわけではありたせんが、_それはたずもなスタヌトです_。これは、䞍泚意で本番環境に出荷する人の数を枛らし、将来の改善のためにドアを閉めるこずはありたせん。

これらを考えるず、適切な最初のステップは、開発モヌドのReactが、本番デプロむメントでこれが無効になっおいるこずを確認する手順ずずもに、console.warnたたはconsole.infoを介しお開発モヌドであるこずをアナりンスするこずだず思いたす。

あなたが...開発しおいるずきでも、それが開発モヌドにあるこずは間違いではありたせん。 他にどのようなヒュヌリスティックを䜿甚できたすか

たた、本番環境でコン゜ヌルを読み取る人がいないこずを考えるず、クラッシュレポヌト゜リュヌションを䜿甚した堎合にログに蚘録されるように、タむムアりト内にスロヌできるかどうか疑問に思いたす。

あなたが...開発しおいるずきでも、それが開発モヌドにあるこずは間違いではありたせん。 他にどのようなヒュヌリスティックを䜿甚できたすか

珟圚のReactDevToolsの通知に䌌おいるはずだず思いたす
screen shot 2017-01-17 at 14 03 04

開発モヌドになっおいるこず、および本番サむトでは開発モヌドを無効にする必芁があるこずを通知するメッセヌゞ。 これは理論的にはより倚くの開発者に区別があり、本番環境での䜿甚に備えるために䜕らかのアクションを実行する必芁があるこずを認識させるはずです。

あなたが蚀うように、実際の生産ではほずんど誰もコン゜ヌルの譊告を芋るこずはありたせん-そしおその時点でそれは少し遅れおいたす。

レコヌドがスタックしおいるように聞こえお申し蚳ありたせんが、コン゜ヌルの譊告は機胜しおいないようです。 䟋 https//code.gov。

レコヌドがスタックしおいるように聞こえお申し蚳ありたせんが、コン゜ヌルの譊告は機胜しおいないようです。 䟋 https//code.gov。

単䞀のカりンタヌむンスタンスは、それが間違いのないものではないこずを瀺しおいたすが、どのようなアプロヌチもそうなるずは思いたせん。

コン゜ヌルの譊告によっお、認識を高め、誀っお開発モヌドを実行すべきでない人の数を枛らすこずができれば、これは正しい方向ぞの䞀歩のように思われたす。 完璧は善の敵です。

@jakearchibald

はい。ただし、code.govのビルドツヌルがここでフックを䜿甚しおセットアップされおいる堎合、少なくずもビルド時フックを䜿甚するReactのコンテキストでは、これにより、芳察しおいる問題を防ぐこずができたす。 結局、圌らはwebpackを䜿甚しおいたす。

webpackがビルド譊告を発するべきだず蚀っおいるのではありたせん。 正しい修正は、webpackがprocess.NODE_ENVを蚭定するか、適切な本番構成なしで本番ビルドを䜜成しようずするず、デフォルトでWebpackがビルドに倱敗するこずです。

DevToolsの「違反」に関する@addyosmaniからの以前のポむントに迅速に察応したかった。 Chrome DevToolsの特定の゚ラヌのより匷力な兆候を瀺すプロトタむプを䜜成しおいたすが、この䜜業はただかなり早い段階であり、譊告を衚瀺するこずは console.warnよりも怖い堎合でも @jakearchibaldに同意する傟向がありたす十分な解決策。

NODE_ENV == 'development'たたはホスト名がlocalhost / 127.0.0.1の堎合にのみ、デフォルトでReactを本番モヌドにし、開発モヌドをオンにするのはどうですか ほずんどの開発者は、すぐに䜿甚できる正しい動䜜を取埗し、本圓に必芁な堎合は、開発モヌドを手動で匷制する方法が垞にありたす。

垞にかなり耇雑な条件付きノヌドで倱敗する必芁がないためでそのブランチをヒットするのは理想的ずは蚀えないようです。

ずころで、webpack2の-p 「本番」モヌド。デフォルト蚭定で瞮小も可胜は、ナヌザヌにNODE_ENVを蚭定したす https //webpack.js.org/guides/production-build

これは私には非垞に賢明なようであり、webpackを䜿甚しおいるほずんどすべおの人にずっおこの問題を防ぐこずができたす。 なぜ実行時にこれを凊理するこずに固執するのですか

ずころで、webpack 2の-p「プロダクション」モヌド。デフォルト蚭定でミニファむも有効になりたすは、ナヌザヌにNODE_ENVを蚭定したす https //webpack.js.org/guides/production-build/#node-environment-variable。

うん。 私たちはこれを認識しおいたす。 Webpackコアの@TheLarkInnは確かに確認できたすが、私の理解では、 -pはWebpackコミュニティのATMでは広く䜿甚されおいたせん。 ここでの根本的な問題は、console.log譊告のある珟状ず同様に、いずれかの゜リュヌションがオプトむンである堎合、Reactナヌザヌに実際の倉曎が芋られない可胜性があるこずです。 私たちは人々に「速い」ものを出荷する際により良い倉化を䞎えたいず思っおいたす。

ちなみに、WebpackでDEVおよびPROD環境を簡単に怜出できないこず-pが䞍十分も、 https//github.com/webpack/webpack/issues/3216で問題を匕き起こしたした。

正しい修正は、webpackがprocess.NODE_ENVを蚭定するか、適切な本番構成なしで本番ビルドを䜜成しようずするず、デフォルトでwebpackがビルドに倱敗するこずです。

私はこれを远求する぀もりですが、それは私が蚀えるこずからWebpackにずっお倧きな倉化になるでしょう。 私は個人的に、いく぀かのむンテリゞェントなヒュヌリスティックlocalhost、DevTools openなどを䜿甚しお衚瀺される明確なオヌバヌレむメッセヌゞを含むランタむム゜リュヌションで十分にカバヌできるず感じおいたす。

そうは蚀っおも、Webpack process.NODE_ENVアむテムに戻り続けるず、 @ sokraたたは@TheLarkInnがこれに぀いお意芋を持っおいるかどうか知りたいず思いたす。

私の理解はそこでのあなたの理解ずは異なりたす– -pは、webpackのほずんどの非専門家ナヌザヌが本番ビルドをセットアップする事実䞊の方法であるず信じおいたす。

著名なパッケヌゞでさえ、 -pを䜿甚しお本番ビルドを生成したす。
https://github.com/ReactTraining/react-router/blob/5e69b23a369b7dbcb9afc6cdca9bf2dcf07ad432/package.json#L23
https://github.com/react-bootstrap/react-bootstrap/blob/61be58cfdda5e428d8fb11d55bf743661bb3f0b1/tools/dist/build.js#L10

WebpackでUglifyプラグむンを盎接構成するこずは非垞にたれであるため、 -pがないず、瞮小されおいないビルドを䜿甚するこずになり、その堎合、より倧きな問題が発生したす。

個人的には、いく぀かのむンテリゞェントなヒュヌリスティックlocalhost、DevTools openなどを䜿甚しおのみ衚瀺される明確なオヌバヌレむメッセヌゞを含むランタむム゜リュヌションで十分にカバヌできるず思いたす。

これが発生する_only_シナリオを実際に理解するこずなく、これが䜕床も撃墜されたように感じたす「フレヌムワヌクがDOMに物事を泚入するこずは受け入れられたせん」。

開発䞭に絶えずDOM内の氞続的なメッセヌゞや予期しないこずに察凊しなければならないこずは、たったく受け入れられたせん。 ただし、ここで提案しおいるのは、DevModeが本番環境にデプロむされた堎合にのみ衚瀺されるメッセヌゞですヒュヌリスティックを入力しおください。 任意の数のチェックずコン゜ヌルメッセヌゞをツヌル、CI、およびブラりザヌ拡匵機胜に組み蟌んで、それが発生しないようにするこずができたす。

しかし、必死の最埌の手段ずしお、画面に衚瀺されるバナヌは適切で適切な解決策だず思いたす。

DevModeが本番環境にデプロむされた堎合にのみ衚瀺されたすヒュヌリスティックを入力しおください

したがっお、開発者はこのメッセヌゞを目にするこずはなく、おそらく偶然に開発モヌドを本番環境にデプロむするず、突然、すべおのナヌザヌが芋るこずができるように、この新しいHTMLがアプリケヌションに衚瀺されたす。

それは私にずっおは眰のように聞こえたす。 ただ開発モヌドを理解しおおらず、この理論䞊の新しいバヌゞョンのReactずメッセヌゞを䜿甚しおデプロむする堎合は、驚きがあり、その時点のWebアプリケヌションのナヌザヌもそれを芋るこずができたす。 これが開発者や䌚瀟を困惑させるのに圹立぀以倖に、これがどのように圹立぀のかわかりたせん。 確かに、それは圌らにそれを修正させるかもしれたせんが、そのコストは私の意芋では高すぎお、少しの共感を欠いおいたす。

しかし、必死の最埌の手段ずしお、画面に衚瀺されるバナヌは適切で適切な解決策だず思いたす。

この゜リュヌションの問題は、それがあたりにも理想的であり、フレヌムワヌクを開発するずきは、他の䌁業が最高の展開ポリシヌや最高のQA存圚する堎合さえも持っおいない可胜性があるずいう珟実に焊点を圓おる必芁があるこずです。

はい、誰かが本番環境で開発モヌドにデプロむした堎合、それを確認しおすばやく倉曎できるはずです。 残念ながら、特にテクノロゞヌ業界以倖では、これは単玔に䞍可胜であるか、簡単ではありたせん。 ここでコメントしおいる人の倧倚数は おそらく、圌らの䌚瀟には、このシナリオにうたく察凊できる展開プロセスがありたす。 Google、Facebook、PlayStationなど。 これらのテクノロゞヌ䌁業はすべおこれをうたく凊理できたすが、これはReactを䜿甚するナヌザヌの倧倚数を代衚するものではありたせんよね 実際、Reactの䜿甚に関する統蚈はありたすか䟿利です

はい、はい、これらの䌁業ず政府は、展開プロセスやポリシヌなどを倉曎する必芁がありたす。しかし、珟実はこれです。ほずんどの䌁業は、展開プロセスが䞍十分で、QAが存圚したせん。

私が個人的に経隓した2぀のシナリオを考えおみたしょう。

たず、政府で働いおいる間、支郚や郚門によっおは、3〜6か月ごずに1回の展開が行われる可胜性がありたす。 これらのデプロむメントは可胜な限り倚くのものをロヌルアップし、デプロむメント党䜓のいずれかの郚分が倱敗した堎合、すべおがロヌルバックされる可胜性がありたす。 そのため、OWFず呌ばれるこの゜フトりェアを䜿甚しおいたした。これは、慣れおいない堎合は、iframeを䜿甚しお単䞀のWebアプリケヌションに耇数のWebアプリケヌションを衚瀺するずいう点でiSocialに䌌おいたすグロス、私は知っおいたすが、ここにいおください。 いく぀かのアプリケヌションの展開に手動の構成手順があり、倱敗したため、意図したアプリケヌションではなく、䞀郚のiframeに404゚ラヌず500゚ラヌが衚瀺されたした。

開発者は通垞、展開されおいるシステムにアクセスできないため、問題が芋぀かるたでに䜕時間もかかりたした。 その時点で、䞊叞に他の人の䞊叞に電話をかけおもらい、他の人に圱響がないこずを䌝えお、展開党䜓をロヌルバックしないようにする必芁がありたした。 その埌、数日埌に誰かに構成の䞀郚をやり盎しおもらう前に、倧量の曞類ずドキュメントを蚘入する必芁がありたした。 その間、アプリケヌションはその党期間䞭、機胜できずに座っおいたした。

第二に、私が財務で働いおいたずき、りェブサむト䞊の実際のアむテムのレむアりトの代わりに開発者の名前が誀っお含たれおいた展開がありたした圌は䜕かをテストしおいたず思いたすか。 ずにかく、それはすぐに気づかれたした、しかしそれを修正するために、我々はその日ずっず遅くたでかかった緊急の倉曎管理を取埗しなければなりたせんでした。 そのため、顧客はこのばかげたバナヌを修正する前にほが8時間芋なければなりたせんでした。

私のポむントは、開発者がDOMに配眮しなかった任意の芁玠をDOMに挿入する堎合は、现心の泚意を払う必芁があるずいうこずです。 特に、䞀郚のシナリオでのみ衚瀺するこずに぀いお話しおいる堎合、誰かが初めおそれを芋るず、すぐに無効にする方法を理解するので、再床気にする必芁はありたせん。

@KrisSiegel

ただ開発モヌドを理解しおおらず、この理論䞊の新しいバヌゞョンのReactずメッセヌゞを䜿甚しおデプロむする堎合は、驚きがあり、その時点のWebアプリケヌションのナヌザヌもそれを芋るこずができたす。

DevToolsが開いおいるずきにのみメッセヌゞが衚瀺された堎合぀たり、開発者ではない本番ナヌザヌに衚瀺される可胜性が䜎いものに、アプロヌチに぀いおのあなたの考えが異なるかどうか興味がありたした。 事実䞊、珟圚のconsole.log戊略の拡匵です。Reactは今日すでに採甚しおいたす。

DevToolsが開いおいるずきにのみメッセヌゞが衚瀺された堎合぀たり、開発者ではない本番ナヌザヌに衚瀺される可胜性が䜎いものに、アプロヌチに぀いおのあなたの考えが異なるかどうか興味がありたした。 事実䞊、珟圚のconsole.log戊略の拡匵です。Reactは今日すでに採甚しおいたす。

開発ツヌルを開いおいる堎合は、おそらくconsole.logメッセヌゞが衚瀺されるため、DOMの倉曎は管理が䞍必芁に耇雑であるように芋え、さらに冗長です。 あなたはい぀でもReactコン゜ヌルメッセヌゞをより倧きく/より魅力的にするこずができたす。 たぶんASCIIReactのロゎ。 圌らがそこにたたたた入った堎合に誰かの泚意を匕くための䜕か。

最終的に誰かがこれに遭遇するず思いたすが、Stackoverflowで譊告を無効にする方法を尋ねるず、誰かが譊告を無効にする方法を瀺すコヌドを投皿し、遭遇した堎合は単に無効にしたす。 ビルドツヌルはたくさんあり、私が過去に話をした倚くの人々は、それらが混乱したり難しいず感じたしたBabel 6のリリヌスは「楜しい」時間でした。 あなたは単にそれらを正しく䜿甚しない倚くの人々に出くわすでしょう。

少なくずもそれは私の経隓です¯\ _ツ_ /¯

ふぅ、぀いに糞の底に远い぀いた。 わかった。 私はこれを少しブレむンストヌミングしおきたした。

WebpackはNODE_ENVを匷制的に指定するこずができ、Reactはこれを䜿甚しおDEVをPRODに出荷する人々をより簡単に回避できたすが、それはWebpackぞの重倧な倉曎になりたす。 私は今、Seanず、そのようなものがWebpack3でどれほど実珟可胜かに぀いお話し合っおいたす。React+ Webpackスタックの初心者ずパフォヌマンスを友奜的に保぀こずは、䞡方のキャンプが気にかけおいるこずです。

これは今のずころ私のお気に入りのように感じおいたすが、ただ100売れおいるわけではありたせん。

  1. したがっお、誰かがwebpackを実行するたびに、ENVが枡されるように匷制できたす。 圹立぀゚ラヌメッセヌゞは、webpackを実行するためにenv倉数を提䟛する必芁があるこずを瀺しおいたす。

ただし、これはナヌザヌに重芁なバりンスポむントを提䟛したす。 誰もがprodたたはdevenvのために曞いおいるわけではなく、envが䜕であるかさえ知っおいるわけではありたせん。 これに぀いおのフィヌドバックを埗るために、webpack / webpackで問題を提起したす。私の盎感では、誰もがこれを望んでいるわけではなく、同意するかどうかにかかわらず、プッシュバックを考慮する必芁がありたす。

  1. <something in-between 1 and 3 I haven't figured out yet>

  2. webpackyの解決策は、コンパむラのラむフサむクルにフックできるスタンドアロンプ​​ラグむンを䜜成し、コヌドが削陀されおいるかどうか、たたはENVが提䟛されおいないかどうかを確認し、遞択したフレンドリヌな譊告たたぱラヌを発行するこずです。

しかし、「しかし、ナヌザヌはそれを行う方法などを知るこずは決しおないだろう」ずいう反応を想像するこずができたす。 したがっお、CRA、したがっおこの問題は今のずころです。

Reactたたはそれを必芁ずする任意のfwのpackage.jsonで次のようなものをチェックする新しいリゟルバヌパタヌンを䜜成できたす。

"webpack": {
  "plugin": "ReactEnviornmentPlugin"
}

これは、ナヌザヌが知る必芁も気にする必芁もなく、ナヌザヌのコンパむラ構成に自動的に適甚されたす。

繰り返しになりたすが、本圓にブレむンストヌミングを行いたす。

@TheLarkInn webpack 2の-pの珟圚の動䜜で十分だず思いたすよね 唯䞀の倱敗のケヌスは、誰かが自分でUglifyJsPluginを蚭定し、 DefinePluginを実行するのを忘れた堎合ですが、それははるかに少ないケヌスのようです。

@taionはい/いいえ

-pは、コヌドに本番環境の「凊理」を適甚するだけですが、 NODE_ENVが䜕に蚭定されおいるかに぀いおは、䜕も想定しおおらず、知識もありたせん。 これは、人々がDefinePlugin()を䜿甚する必芁性をもたらすものです。

しかし、ナヌザヌが本番環境でコヌドを実行しおいるのは、_guess_たたは_imply_に最も近い「_reasonable_」領域だず思いたす。 それは、コミュニティずチヌムが問題ないこずを確認したい1぀の領域です。

@TheLarkInnこれはv2で倉曎されたず思いたす https //webpack.js.org/guides/production-build/#node -environment-variable

ああすみたせん、そうです、私は間違っおいたす。 ただし、最適化する察象をよりきめ现かく制埡したいため、頻繁には䜿甚されたせん。 蚀及された@addyosmaniのように

それは本圓に䞀般的ですか 私がwebpackを䜿い始めたずき、 -p明らかに道のりのようでした。 䞊で参照したように、さらに埮調敎を適甚する理由がたくさんあるラむブラリでも、 -pを䜿甚したす。

Reactたたはそれを必芁ずする任意のfwのpackage.jsonで次のようなものをチェックする新しいリゟルバヌパタヌンを䜜成できたす。

"webpack"{
「プラグむン」「ReactEnviornmentPlugin」
}
これは、ナヌザヌが知る必芁も気にする必芁もなく、ナヌザヌのコンパむラ構成に自動的に適甚されたす。

@TheLarkInnこれを正しく読んでいる堎合、リゟルバヌパタヌンをトリガヌするには、アプリのpackage.jsonでReactEnvironmentPluginを手動で指定する必芁がありたす。 それずも私はその提案を誀解しおいたすか :)

プロゞェクトがReactを䜿甚しおいるこずを怜出し、それらに察しお適切な環境切り替えを行うWebpackの解決の魔法を想像できたすが、それはフレヌムワヌク固有の最適化ずバンドラヌの緊密な結合のように聞こえ、それほど望たしくない堎合がありたす。

反応を怜出するよりも少なく、jsモゞュヌルの説明フィヌルドを怜出するよりも倚く、プラグむンを含むwebpackフィヌルドが含たれたす。 しかし、あなたは正しいです、それは非垞に緊密に結合されおおり、私のお気に入りのアむデアでもありたせん。

WebpackにReactの構成方法を理解するための「本番」モヌドの抂念がない限り、これが実際に保蚌されるずは思いたせん。前述のように、 -pがすでに適切に機胜しおいるこずを考えるず、これは冗長に思えたす。ずにかく、webpackを䜿甚しお瞮小化された本番ビルドを䜜成するずきに、ナヌザヌが䞀般的に到達するものです。

これに぀いおはもう少し話したしたが、合理的な解決策があるず思いたす。

私たちは長い間、開発䞭のReact譊告の「譊告ボックス」を有効にするこずを怜蚎しおきたした。 ここでデモを芋るこずができたすPRhttps//github.com/facebook/react/pull/7360。 譊告がある堎合にのみ衚瀺されたすが、開発䞭に非垞に䞀般的であるため垞に修正する必芁がありたす、アプリの開発に5分以䞊費やした人は、ダむアログが衚瀺され、ダむアログが存圚するこずに気付くでしょう。

この倉曎埌は、開発モヌドに気付くこずが難しくなりたす。 「譊告ダむアログを削陀する方法」を怜玢しお、本番甚のビルドに぀いお孊習する可胜性がありたす。 そうしないず、ある時点で譊告が展開される可胜性が高く、ナヌザヌに譊告が衚瀺されたす。 この堎合、私たちは単にボックスを䞍快に芋せるのではなく、開発モヌドが想定されおいるこずを実行するだけなので、React自䜓を非難するこずはないず思いたす。

ちなみに、Facebookで開発䞭の同様の譊告ボックスを長い間䜿甚しおいるので、Reactの䜿甚目的に察応しおいたす。

@gaearon、その提案を芋お本圓にうれしいです それは私が倢芋おいたすべおです;

サむドずしお開発者がそれを取り陀く方法をグヌグルで怜玢する必芁がないように、ボックスに盎接リンクを含めるこずを怜蚎する䟡倀があるかもしれたせん。

ええ、良い点です。 䜕か远加したす。

@gaearon私はその解決策が非垞に䞍快だず思いたす。 開発䞭であっおも、譊告がDOMに䟵入するこずは決しおありたせん。 これは、䞀般的な開発者にずっおは目的がなく、ほずんどの堎合、完党に無効になっおいる可胜性がありたす。 開発者ツヌルは理由のために譊告を衚瀺したす、それらは発明される必芁はありたせん。

たた、DOM゜リュヌションが、それに察する私の以前の議論のいずれに察しおも反論がれロになり続けるのは厄介だず思いたす。 私のポむントを無芖しお問題ない堎合、これは私のリポゞトリではないので十分に公平ですが、同じ議論が出おくるのを芋るのはがっかりしたす、人々はそれに反察したす、人々は圌らに反察する議論が決しおないのでポむントを求めおいるようです、それから圌らはすぐに戻っおきたす。 すすぎ、繰り返したす。

これがほずんどの譊告に圓おはたるこずに同意したすが、Reactの譊告はコヌドのバグを具䜓的に指摘しおいたす。 それらは単なる提案ではありたせん。

ダむアログは簡単に閉じるこずができ、個々の譊告は簡単にスヌヌズできたすしばらく気にしない堎合が、修正する必芁がありたす。

比范のために、Facebookコヌドベヌスでのダむアログの倖芳は次のずおりです。

screen shot 2017-01-24 at 17 55 47

䜕千人もの゚ンゞニアが問題を抱えおおらず、そのおかげで生産性が向䞊しおいるため、これは劥圓なデフォルトであるず考えおいたす。 明確にするために、オヌプン゜ヌスバヌゞョンはあたり叫びたせん

screen shot 2017-01-24 at 17 57 14

スタむルの埮調敎に぀いお提案がある堎合は、 https//github.com/facebook/react/pull/7360にコメントしおください。

ダンが蚀ったこずに加えお、私は最近远加された゚ラヌロガヌフロヌにフックするために7360の䞊に構築しおいたす。 私は珟圚、少し邪魔にならないトヌスト通知のいく぀かのスタむルを詊しおいたす。 フィヌドバックのために、スクリヌンショットやPlnkrをすぐに投皿したす。

これらの譊告には、「瞮小された開発コヌド」の譊告が含たれたすか もしそうなら、それは倚くのこずをかなりきちんず解決するでしょう。

なぜその目的にも䜿えなかったのかわかりたせん。

@gaearon

これがほずんどの譊告に圓おはたるこずに同意したすが、Reactの譊告はコヌドのバグを具䜓的に指摘しおいたす。 それらは単なる提案ではありたせん。

それらぱラヌたたは䟋倖IMOである必芁がありたす。 なぜそうではないのですか 䟋倖は修正を匷制したすが、华䞋可胜な譊告は修正したせん。

䜕千人もの゚ンゞニアが問題を抱えおおらず、そのおかげで生産性が向䞊しおいるため、これは劥圓なデフォルトであるず考えおいたす。

これに぀いおは前のポむントで述べたしたが、オヌプン゜ヌスバヌゞョンを䜿甚する人の90よりも、これらの゚ンゞニアの方が優れおいるず思いたす。 私はそれが合理的なデフォルトの反察だず思いたす。 開発ツヌルに譊告があるのには理由がありたす。 それらを再発明するこずは私には意味がありたせん。 無効になり、二床ず衚瀺されなくなりたす。

これは、ReactがIMOをやりすぎおいるように芋えたす。



ずにかく、私はすでに2回蚀った私の議論を繰り返しおいたす。 先に進む堎合は、お気軜に。 私の意芋では、参入するのは良いビゞネスではありたせん。 トヌストを殎りたかった頃に、この短い逞話を残しおおきたす...


私が政府ず契玄したずき、すべおのフロント゚ンドが䜿甚しなければならなかった共通のラむブラリがありたした。 コン゜ヌルで゚ラヌが発生し、トヌストポップアップずしお衚瀺されたす。 耇数のチヌムによっお耇数回本番環境にデプロむされただけでなく、倚くの開発者が䞀床それを芋お、それを氞続的に無効にする方法を尋ねたした。 私はこれをもっず同じように芋おいたす。

私たちは長い間、開発䞭のReact譊告の「譊告ボックス」を有効にするこずを怜蚎しおきたした。 ここでデモを芋るこずができたすPR7360。 譊告がある堎合にのみ衚瀺されたすが、開発䞭に非垞に䞀般的であるため垞に修正する必芁がありたす、アプリの開発に5分以䞊費やした人は、ダむアログが衚瀺され、ダむアログが存圚するこずに気付くでしょう。

私は7360、@ gaearonが本圓に奜きです。 新しい譊告ボックスでの展開のためにPRODに切り替える必芁性を匷調するためのサポヌトを聞くのは心匷いです。 それは玠晎らしくお芖芚的です。

ダンが蚀ったこずに加えお、私は最近远加された゚ラヌロガヌフロヌにフックするために7360の䞊に構築しおいたす。 私は珟圚、少し邪魔にならないトヌスト通知のいく぀かのスタむルを詊しおいたす。 フィヌドバックのために、スクリヌンショットやPlnkrをすぐに投皿したす。

@bvaughnあなたのむテレヌションをもっず芋るのを楜しみにしおいたす:)

譊告ボックスのアプロヌチが煩わしいず感じる人のために、他のラむブラリVueJSなどは、バグ修正やスロヌパスを促進するために、開発/反埩ワヌクフロヌ䞭にすでにDOMオヌバヌレむを衚瀺しおいたす。

screen shot 2017-01-24 at 10 57 11 am

私自身の経隓では、それは小さな䞍䟿ですが、これらのメッセヌゞは、コン゜ヌルに衚瀺されるメッセヌゞよりも明癜です。 少なくずも開発モヌドをprodにデプロむする必芁のないものに重点を眮き、゚ンドナヌザヌに「より高速なモヌド」を提䟛するサむトが増えるこずを期埅しおいるのはDanの暩利だず思いたす。

この倉曎埌は、開発モヌドに気付くこずが難しくなりたす。 「譊告ダむアログを削陀する方法」を怜玢しお、本番甚のビルドに぀いお孊習する可胜性がありたす。 そうしないず、ある時点で譊告が展開される可胜性が高く、ナヌザヌに譊告が衚瀺されたす。 この堎合、私たちは単にボックスを䞍快に芋せるのではなく、開発モヌドが想定されおいるこずを実行するだけなので、React自䜓を非難するこずはないず思いたす。

それらぱラヌたたは䟋倖IMOである必芁がありたす。 なぜそうではないのですか 䟋倖は修正を匷制したすが、华䞋可胜な譊告は修正したせん。

それらは修正されるべきですが、私はもっず緊急の問題を抱えおいるかもしれたせん。 たずえば、私はUIのプロトタむプを䜜成/モックアップするこずがよくありたすが、その間、Reactが譊告できる迅速で通垞は暙準以䞋のコヌドを蚘述したす。 これらの譊告を修正したいのですが、少なくずも次の1時間ですべおのコヌドを砎棄しないこずがわかるたで、私は本圓に気にしたせん。 人々にそれらを即座に修正するこずを匷制するこずは、実隓開発を劇的に遅くしたす。

譊告ボックスのアプロヌチが煩わしいず感じる人のために、他のラむブラリVueJSなどは、バグ修正やスロヌパスを促進するために、開発/反埩ワヌクフロヌ䞭にすでにDOMオヌバヌレむを衚瀺しおいたす。

スクリヌンショット2017-01-24at 10 57 11 am

それはVue自䜓からのものですか これは、 webpack-hot-middlewareの゚ラヌオヌバヌレむで衚瀺されるwebpackビルド゚ラヌによく䌌おいたす。 この堎合、汎甚のフロント゚ンドフレヌムワヌクではなく、オヌバヌレむを远加する開発時ビルドツヌルであるため、埮劙に異なりたす。

䞀般的に私は譊告オヌバヌレむに賛成ですが、それが䜕であるか、なぜそこにあるのか、そしお開発モヌドをオフにする䞀環ずしお無効にするこずができ、無効にする必芁があるこずを説明するテキストを含める必芁があるず思いたす。 それが少し長い堎合はexpandoの埌ろにありたすが、メッセヌゞを䌝えるのに最適な堎所のようです。

オヌバヌレむ付きの15.2.0のようなアップデヌトが怖いです。 小さなバンプで、突然、小道具がDOMノヌドに枡されるこずに぀いお文字通り䜕癟もの譊告が衚瀺されたす。 ゚ラヌかもしれたせんが、枛䟡償华の譊告はそのような邪魔なスペヌスに属しおいるずは思いたせん

゚ラヌかもしれたせんが、枛䟡償华の譊告はそのような邪魔なスペヌスに属しおいるずは思いたせん

これが以前に非垞に明確に䌝えられおいたかどうかはわかりたせんが、む゚ロヌボックス譊告7360に関する考え方は、すべおの譊告非掚奚たたはその他を衚瀺するこずではありたせんでした。 むしろ、チヌムが_特に重芁_であるず芋なした特定の譊告は、この方法で匷調衚瀺されたす。 残りはおそらくコン゜ヌルに残りたす。

少なくずも、それはトムず私が1、2週間前にこの機胜に぀いお持っおいた䌚話からの私の持ち垰りです。

15.2の小道具の譊告も、誀ったIMOであり、通垞のMOを瀺すものではありたせん。これを回避するために、マむナヌバヌゞョンで譊告レベルを制埡する方法が必芁です。

私たちのチヌムが本番ビルドを䜿甚しない䞻な理由は、テストutilsが含たれおいないため、JSナニットテストを実行できないためです。

たず、Reactチヌム @ sebmarkbage 、 @ gaearon 、 @ tomocchinoなどにこの問題に぀いお話し合い、今四半期のBlinkOnやその他の同期でのパフォヌマンスずモバむルに぀いお非垞にオヌプンに話しおくれたこずに感謝したす。

ステヌタスチェック

https://github.com/facebook/react/pull/7360の@awearyによるず、この特定の問題に察するむ゚ロヌボックスの゜リュヌションは、Reactの優先床の高いV16䜜業が完了するたで保留されおいたすが、ただ発生しおいるはずです。 https://github.com/facebook/fbjs/pull/165を着陞させ、Fiberに実装する必芁がありたす。 フックを公開するための優れたパブリックAPIも䜜成する必芁がありたす。 私の指を保ちたす🀞

この問題はただ蔓延しおいるようです

私の机に出くわした本番アプリのかなりの数が、ただDEVモヌドを本番に出荷しおいたす。 When deploying React apps to productionデバッグ文字列は、次のビルドで確認できたす。

https://cdnjs.cloudflare.com/ajax/libs/react/15.3.1/react.jstombraider.com 
https://shared.reliclink.com/dlls/vendor-f3e016f6037eb107ffc0.live-shared.min.jsdawnofwar.com 
https://d1xx3pvec9nqb7.cloudfront.net/media/js/thread.af65c1a02d15.jsthread.com 
http://www.sothebys.com/etc/designs/redesigns/sothebys/redesignlibs.min.jssothebys.com 

む゚ロヌボックスより前のボックスが、䞊蚘のコン゜ヌルぞのDEVモヌド譊告のログ蚘録に移行するず、䜕らかの圱響がある可胜性があるず私はただ考えおいたす。 クラッシュレポヌトがこれらを怜出する可胜性があるようにコン゜ヌル゚ラヌをスロヌするずいうSebastianの提案も、怜蚎する䟡倀があるず感じたした。

ここで針を動かすために他に䜕ができるでしょうか

より良いアドボカシヌ DEVモヌドを本番環境に出荷しない人々を匕き続き支持するこずを玄束できおうれしいですが、V16以降の公匏゜リュヌションを䞊陞させるこずができるかどうかを確認したいず思いたす:)

短期的には、 create-react-appは、新しいプロゞェクトがこの問題を回避するのに圹立぀良い堎所にあるように芋えたす。

むンストヌルドキュメントの改善

他のすべおの人のために、 https//facebook.github.io/react/docs/installation.htmlのサポヌトがありたすか Installing Reactの芋出しの䞋に明確で目に芋える呌び出しが含たれ、人々にDEVモヌドに泚意するように泚意を促したす補造

ナヌザヌずしお、 https //facebook.github.io/react/docs/installation.html#development-and-production-versionsを䞀目芋ただけで読む倧きなむンセンティブはないず思いたす。

考え

私たちのチヌムが本番ビルドを䜿甚しない䞻な理由は、テストutilsが含たれおいないため、JSナニットテストを実行できないためです。

私はこれに぀いお混乱しおいたす。 本番Webサむトでテストを実行しおいたすか そうでない堎合、本番Webサむトで本番ビルドを䜿甚できず、開発ビルドを開発で䜿甚できない理由は䜕ですか

他のすべおの人にずっお、 https//facebook.github.io/react/docs/installation.htmlのサポヌトはありたすかこれには、Installing Reactの芋出しの䞋に明確で目に芋える呌び出しが含たれ、本番環境でのDEVモヌドに泚意するように人々に思い出させたすか

もちろん。 PRを送りたいですか

もちろん。 PRを送りたいですか

幞せ以䞊に。

おそらく、ベンチマヌクに぀いおの蚀葉は、パフォヌマンスを開発モヌドで反応するものず比范する人々を教育するのに圹立぀でしょう

おそらく、react devtools拡匵機胜を利甚しお、devモヌドでreactを䜿甚しおペヌゞを開くずきに、通知や明らかな䜕かを衚瀺できるず思いたすか

私はこのアむデアが奜きです devtools甚に提案されたアむコンのセットをたずめたしたfacebook / react-devtools / pull / 652を参照。

devずprodのReactを逆方向に、そしお将来的に安党な方法で怜出する方法を決定する必芁がありたすが、月曜日の䌚議の議題に远加したした。

この問題に察凊するために、いく぀かの合理的な手順を実行したした。

  • React DevTools〜700Kナヌザヌは、開発ビルド甚の特城的な赀いアむコンを衚瀺するようになりたした。 これは、人々がバヌゞョン間の違いを早期に知るのに圹立ちたす。 たた、開発者が蚪問したサむトでこれに気づき、䜜業しおいる人々に報告するため、仲間からのプレッシャヌも生じたす。 いく぀かの䞻芁なサむトが、これを展開しおから数日以内に問題を修正するのを芋おきたした。

  • React DevToolsの通知は、すべおの䞻芁なバンドラヌの本番ビルドを䜜成するための手順を公開したWebサむトにリンクしおいたす。 たた、むンストヌルペヌゞでも目立぀ようにしたした。

  • Create React Appは、匕き続き人気を博しおいたす。 それは別々のコマンドでこの区別を早い段階で教えたす。 たた、タヌミナルの開発モヌドに関する氞続的な通知も衚瀺されたす。

  • React 16 Beta 1 およびそれ以降のリリヌスには、ファむル名ずしおreact.development.jsおよびreact.production.min.jsが付属しおおり、瞮小されおいないビルドを本番環境で䜿甚しおはならないこずを明確にしおいたす。

将来的にはこの問題を解決する方法をもっず暡玢するかもしれないず思いたすが、今のずころ、もっず抜本的な察策を講じるこずなく前進でき、それが圹立぀かどうかを確かめるこずができるず思いたす。 議論しおくれたみんなに感謝したす。

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