ポリマヌモゞュヌルの加硫の䜿甚

PolymerJS加硫



私が取り組んでいるプロゞェクトには、りィゞェットのようなクラむアントアヌキテクチャがありたす。 さらに、システムりィゞェットは、ReactJS、PolymerJS、VueJS、d3JSなど、実装に任意のラむブラリを䜿甚できたす。 PolymerJSに基づくWebコンポヌネントのように、いく぀かのシステムりィゞェットが実装されおいたす 。



したがっお、ポリマヌりィゞェットを最適化する方法の1぀に泚目したす。






内容



1.問題の説明

2.どのような困難が生じたすか

3.どうすれば解決できたすか

4. vulcanize-polymer-moduleラむブラリ

4.1。 構造

4.2。 bower.jsonの説明

4.3。 Package.jsonの説明

4.3.1。 ナヌティリティのむンストヌル

4.3.2。 RollupJSを構成する

4.4。 vulcanize-utils.js

5.結論



1.問題の説明



ポリマヌアプリケヌションの䞻な問題の1぀は、䜿甚枈みコンポヌネントずすべおの䟝存コンポヌネントの耇数のロヌドです。これらのコンポヌネントは、同じ方法でロヌドされる補助スタむルであるbehaviorで構成されたす。 その結果、ネットワヌクセクションのコン゜ヌルはこれらのファむルで「爆撃」されたす。 これらすべおを考慮するず、䜿甚する耇合Webコンポヌネントの数によっおは、このようなりィゞェットの最初のダりンロヌドに非垞に時間がかかる堎合がありたす。



これらの目的のために、ポリマヌ甚途は加硫を䜿甚したす。 このアプリケヌションには、 index.htmlなどの圢匏の゚ントリポむントがあり、その䞭に<App />などのメむンコンテナコンポヌネントがデプロむされおいるこずがわかりたす。 このファむルでは、ポリマヌコア自䜓ずコンテナコンポヌネントファむル<App />が接続され、その埌、それ自䜓が個別のhtmlファむルである䜿甚枈みコンポヌネントがすべお階局的に接続されたす。 加硫プロセス自䜓は、すべおの䜿甚枈みコンポヌネントずポリマヌコアを1぀のファむルに「接着」するこずで構成され、最終的にはindex.htmlの゚ントリポむントになりたす。



2.どのような困難が生じたすか



  1. 最初の難しさは、ポリマヌアプリケヌションではなく、システムりィゞェットにラップされた耇数の耇合コンポヌネントスマヌトコンポヌネント-CCず呌びたしょう、぀たり単䞀の゚ントリポむントがないこずです。
  2. 2番目の難点は、アプリケヌションの操䜜䞭にこれらのりィゞェットを含むペヌゞがたったく呌び出されない可胜性があるこずです。したがっお、珟圚のセッションでは、ポリマヌコア自䜓は蚀うたでもなく、ポリマヌコンポヌネントは䞀切必芁ありたせん。
  3. 第䞉に 、1぀のCCはアトミック 箙 、 鉄などコンポヌネントの1぀のセットそれらを愚かなコンポヌネント-GKず呌びたしょうを䜿甚し、もう1぀は別のセットを䜿甚したす。 さらに、亀差点がある可胜性がありたす。぀たり、2぀の異なるUKが同じHAを䜿甚しおいたす。


3.どうすれば解決できたすか



最初の耇雑さを考慮すれば、各英囜を個別に加硫できたすが、3番目の問題をずるず、同じHAの耇補が可胜になり、1回のセッションで少なくずも2぀の英囜が䜿甚される状況を考慮するず、ポリマヌコアの耇補が必ず存圚したす。 したがっお、別の゜リュヌションが必芁です。



2番目の耇雑さを考慮する堎合、最初にCCの 1぀にアクセスするずきにポリマヌコアずGKが䞀床だけロヌドされるこずを確認する必芁があり、2番目にアクセスするずきに、すべおを再床ダりンロヌドする必芁はなく、 CC自䜓を動的にロヌドするだけです

3番目の耇雑さを考慮する堎合、スマヌトコンポヌネントで䜿甚されるすべおの愚かなコンポヌネントのリストを䜜成する必芁があり、最終的にはポリマヌ自䜓ず䞀緒に加硫したす。



4. vulcanize-polymer-moduleラむブラリ



䞊蚘の論文はすべお、加硫ポリマヌモゞュヌルラむブラリの圢で蚭蚈したした。

それに぀いおもっずお話ししたいず思いたす。



4.1。 構造


vulcanize-polymer-module/

├── imports.html

├── vulcanize-utils.js

├── rollup.config.js

├── bower.json

└── package.json








4.2。 bower.jsonの説明


その䞭で、ポリマヌコア自䜓を含む、䟝存関係ずしお必芁なすべおのGCに぀いお説明したす。



たずえば、 䟝存関係セクションは次のようになりたす。



䟝存関係
 「䟝存関係」{
     「ポリマヌ」「ポリマヌ/ポリマヌ^ 2.0.0」、
     「polymer-redux」「^ 1.0.0」、
     "iron-flex-layout" "PolymerElements / iron-flex-layout^ 2.0.0"、
     "paper-button" "PolymerElements / paper-button^ 2.0.0"、
     "paper-badge" "PolymerElements / paper-badge^ 2.0.0"、
     "paper-icon-button" "PolymerElements / paper-icon-button^ 2.0.0"、
     "paper-input" "PolymerElements / paper-input^ 2.0.0"、
     "paper-item" "PolymerElements / paper-item^ 2.0.0"、
     "paper-checkbox" "PolymerElements / paper-checkbox^ 2.0.0"、
     「paper-tabs」「PolymerElements / paper-tabs^ 2.0.0」、
     "paper-listbox" "PolymerElements / paper-listbox^ 2.0.0"、
     「iron-a11y-keys」「PolymerElements / iron-a11y-keys^ 2.0.0」、
     "iron-list" "PolymerElements / iron-list^ 2.0.0"、
     "iron-icons" "PolymerElements / iron-icons^ 2.0.0"、
     "paper-progress" "PolymerElements / paper-progress^ 2.0.0"、
     「vaadin-split-layout」「vaadin / vaadin-split-layout^ 2.0.0」、
     「vaadin-grid」「^ 3.0.0」、
     "iron-pages" "PolymerElements / iron-pages^ 2.0.0"、
     「鉄厩壊」「PolymerElements /鉄厩壊^ 2.0.0」、
     "iron-overlay-behavior" "PolymerElements / iron-overlay-behavior^ 2.0.0"、
     「vaadin-context-menu」「^ 3.0.0」
   }








私はポリマヌでreduxを䜿甚しおいるため、 polymer-reduxラむブラリを含めたした。



4.3。 Package.jsonの説明


これには、ビルドする必芁のある䟝存関係、特に出力ファむルコヌドの䞭間クリヌニングに䜿甚されるRollupJSが含たれおいたす。 加硫に䜿甚されるコマンドに぀いおも説明したす。詳しく芋おみたしょう。



スクリプト
  「スクリプト」{
     「ビルド」「ロヌルアップ-c」、
     「vulcanize」「vulcanize imports.html --inline-scripts --inline-css --strip-comments」、
     「run-vulcanize」「npm run vulcanize> imports.vulcanize.html」、
     "vulcanized" "vulcanize imports.html --inline-scripts --inline-css --strip-comments | crisper --html imports.vulcanized.html --js imports.vulcanized.js> imports.vulcanized.html"、
     "html-minifier" "html-minifier imports.vulcanized.html --remove-optional-tags --collapse-whitespace --preserve-line-breaks -o imports.vulcanized.min.html"、
     「build-all」「npm run vulcanized && npm run build && npm run html-minifier」
   } 




チヌム、䜿甚の順序ず優先順䜍



4.3.1。 ナヌティリティのむンストヌル


ご芧のずおり、倚くの远加ナヌティリティが䜿甚されおいたす。これらのナヌティリティを最初にシステムにむンストヌルする必芁がありたす。



ナヌティリティのむンストヌル
 npm install -g vulcanize npm install -g crisper npm install -g html-minifier
      
      







4.3.2。 RollupJSを構成する


ロヌルアップはjsコヌドをクリヌンアップするためにのみ䜿甚されるため、 ロヌルアップ甚に1぀のプラグむン、 rollup-plugin-cleanupのみを䜿甚したす。 rollup-plugin-progressプラグむンは 、ビルドプロセスを芖芚化するために䜿甚されたす。



rollup.config.js
 import progress from 'rollup-plugin-progress'; import cleanup from 'rollup-plugin-cleanup'; export default { entry: 'imports.vulcanized.js', dest: 'imports.vulcanized.js', plugins: [ cleanup(), progress({ }), ] };
      
      







4.4。 vulcanize-utils.js


2番目の芁件を解決するために、実甚的なメ゜ッドloadVulcanizedが䜜成されたした。これはUKをロヌドしたすが、その前に加硫されたファむルをダりンロヌドし、1回実行したす。繰り返し呌び出しの堎合は、 UKのみをロヌドしたす。

そのパラメヌタヌをさらに詳しく考えおみたしょう。



loadVulcanized =関数url、urlVulcanized、コントロヌラヌ、html、ストア
  • urlは、スマヌトコンポヌネントぞのパスです。 それは必須です。
  • urlVulcanizedは、加硫されたアセンブリぞのパスです。 デフォルトでは、このアセンブリぞのパスは../vulcanize-polymer-module/imports.vulcanized.min.htmlです。
  • コントロヌラヌ -私の堎合、これはシステムりィゞェットのコントロヌラヌです。 必芁に応じお。
  • html-スマヌトコンポヌネントのhtmlオブゞェクト。 コントロヌラヌが指定されおいる堎合に意味がありたす。
  • store -reduxストア。 必芁に応じお。




5.結論



もちろん、 build -cliでPolymer-cliを䜿甚できたすが、それをアセンブルするず、polymerプロゞェクトがビルドされおいるこずがわかりたす。耇数の<App />コンテナヌでコンポヌネントを䜿甚するため、各CCを個別に収集する必芁があり、アセンブリファむルはポリマヌコアず耇合HAが重耇しおいたす。 したがっお、この蚘事で説明されおいるアプロヌチは、ポリマヌに基づくすべおのCCの単䞀の゚ントリポむントにより、耇数のUIラむブラリを䞀緒に䜿甚するシステムで非垞に効果的です。



可胜性のある欠点の1぀は、システムで䜿甚されるすべおのACのすべおのGAを含むが、䜜業セッション䞭にすべおのACを䜿甚できるわけではないため、加硫ファむル内のHAの冗長性ず考えるこずができたす。加硫ファむルをアップロヌドしたした。



たた、少し䞍䟿なこずに、新しいコンポヌネントを远加した埌、アセンブリを再起動し、リポゞトリを曎新プッシュする必芁があり、他のナヌザヌはbower updateでこのラむブラリを曎新する必芁があるずいう事実を考慮するこずができたす。



このすべおにもかかわらず、このラむブラリはこのプロゞェクトの問題を解決したす。぀たり、他の誰かにずっお有甚である可胜性がありたす。



フォヌク 、ようこそ。



All Articles