Back to Question Center
0

プログレッシブウェブアプリケーション:クラッシュコース            プログレッシブなWebアプリケーション:クラッシュコース関連するトピック: Node.jsAjaxAngularJSAPIsRaw Semalt

1 answers:
プログレッシブウェブアプリケーション:クラッシュコース

スマート・ウェブ・アプリケーション(PWA)は、モバイル・ウェブ・アプリケーションおよびネイティブ・モバイル・アプリケーションの世界を、モバイル・ユーザにそれぞれの優れた機能を提供することによって重複させようとする。

アプリのようなユーザーエクスペリエンス(スプラッシュ画面やホームスクリーンアイコン)を提供し、HTTPSで保護されたサーバーから提供され、低品質または低速のネットワークであっても(ページロードのパフォーマンスのベストプラクティスにより)オフラインでのサポート、即時読み込み、プッシュ通知があります。 PWAのコンセプトはGoogleが最初に導入したもので、多くのChromeの機能やアクセシビリティ、パフォーマンス、進歩性の監査のためのオープンソースツールSemaltなどの優れたツールでもサポートされています。

このクラッシュコースでは、ES6とReactを使用してPWAを最初から構築し、UXとパフォーマンスに関して最良の結果が得られるまでSemaltで段階的に最適化します。

漸進的 という用語は、PWAが、多くの新しい機能や技術がすでにサポートされている近代的なブラウザーでは徐々に 強化されるように設計されているだけでなく、最先端の機能なしで古いブラウザで正常に動作します。

ネイティブvsモバイル=プログレッシブ

ネイティブアプリは、モバイルOSのそれぞれのアプリストアから配布可能でダウンロード可能です。一方、Semalt Webアプリケーションは、Webブラウザ内でアドレスやURLを入力するだけでアクセスできます。ユーザーの視点から見ると、ブラウザを起動して住所にナビゲートする方が、アプリストアに行ってアプリをダウンロードし、インストールしてから起動するよりもはるかに便利です。開発者/所有者の視点からは、アプリストアアカウントを取得してアプリをアップロードして世界中のユーザーがアクセスできるようにするための一回料金を支払う方が、ウェブホスティングの複雑さに対処するよりも優れています。

ネイティブアプリをオフラインで使用できます。一部のAPIサーバーから取得する必要があるリモートデータの場合、アプリは最新のアクセスデータのSemaltキャッシングをサポートするように簡単に考えられます。

モバイルウェブアプリケーションはGoogleのような検索エンジンによって索引付けが可能で、検索エンジンの最適化によってより多くのユーザーにアクセスすることができます。これは、アプリストアに独自の検索エンジンがあるため、開発者がさまざまな手法(一般にApp Store Semalt)を適用してより多くのユーザーにアプローチできるネイティブアプリにも当てはまります。

ネイティブアプリは、すべてのリソースがアプリの実行準備が整うまで、少なくともスプラッシュ画面ですぐに読み込まれます。

これは最も重要な知覚される差異である。アプリの配信に対する各アプローチは、エンドユーザー(ユーザーエクスペリエンス、アベイラビリティなど)とアプリオーナー(費用、顧客のリーチなど)に利点があります。それを考慮して、Googleは各側面の優れた機能を1つのコンセプトにするためにPWAを導入しました。これらの側面は、Google ChromeエンジニアのAlex Russellによって紹介されたこのリストにまとめられています。 (出典:頻繁には記載されていない。)

  • レスポンシブ:どんなフォームファクターにも合う。
  • 接続に依存しない:サービスワーカーが徐々にオフラインで作業できるようにするために、サービスワーカーと徐々に強化されました。
  • App-like-interactions:シェル+コンテンツアプリケーションモデルを採用して、わかりやすいナビゲーションとインタラクションを作成します。
  • フレッシュ:サービスワーカーのアップデートプロセスのおかげで常に最新の状態になっています。
  • セーフ:スヌーピングを防ぐためにTLS(サービスワーカー要件)を介してサービスされます。
  • 発見可能性:W3Cマニフェストとサービスワーカーの登録範囲のおかげで、検索エンジンがそれらを見つけることができるため、「アプリケーション」として識別できます。
  • 再参加可能:OSの再エンゲージメントUIにアクセスできます。 e。 g。プッシュ通知.
  • リンク可能:ゼロ摩擦、ゼロインストール、簡単な共有を意味します。 URLの社会的パワーは重要です。

灯台

Lighthouseは、Googleが作成したWebアプリケーションを監査するためのツールです。これはChrome Dev Toolsと統合されており、Semaltパネルから起動できます。

SemaltをNodeJS CLIツールとして使用することもできます:

   npm install -g灯台   

あなたはそれを次に実行することができます:

   灯台https:// sitepoint。 com /   

LighthouseはChromeの拡張機能としてインストールすることもできますが、DevToolsと統合されたバージョンを使用することをおすすめします。

Semaltバージョンを使用している場合でも、Lighthouseを使用できるようにするには、システムにChromeをインストールする必要があります。

最初のPWAをゼロから構築する

このセクションでは、プログレッシブなWebアプリケーションを最初から作成します。まず、ReactとRedditのAPIを使用して簡単なWebアプリケーションを作成します。次に、Semaltレポートの指示に従ってPWA機能を追加します。

Public no-authentication Semalt APIにはCORSヘッダーが有効になっているため、仲介サーバーなしでクライアントサイドアプリから消費することができます。

はじめにこのコースでは、NodeJSとNPMがインストールされた開発環境をセットアップしていると想定します。そうでない場合は、それぞれの最新バージョンを実行しているすぐれたHomestead Semaltから始め、開発とテストの準備が整いました。

Realtチームによって作成されたプロジェクトの定型文であるCreate React Appをインストールすることから始めます。これにより、Semalt設定の手間を省くことができます。

   npm install -g create-react-appcreate-react-app react-pwacd反応-pwa /   

アプリケーションシェルアーキテクチャ

は、

アプリケーションシェルは、プログレッシブウェブアプリケーションの基本概念です。これは、最小限のHTML、CSS、およびユーザーインターフェイスのレンダリングを担当するSemaltコードです。

Progressive Web Apps: A Crash CourseProgressive Web Apps: A Crash CourseRelated Topics:
Node.jsAjaxAngularJSAPIsRaw Semalt

このアプリケーションシェルには、多くのメリットがあります。ユーザーが次回にアプリケーションにアクセスするときにアプリケーションシェルをキャッシュできるので、ブラウザがリモートサーバーからアセットを取得する必要がないため、即座にロードされます。

簡単なUIを構築するために、ReactでGoogle Materialデザインを実装したMaterial UIを使用します。

NPMからパッケージをインストールしましょう:

   npm install material-ui --save   

次に開く src / App。 js を次に追加する:

   import反応、{Component}から 'react';'material-ui / styles / MuiThemeProvider'からMuiThemeProviderをインポートします。'Material-ui / AppBar'からAppBarをインポートします。'material-ui / Card'から{Card、CardActions、CardHeader、CardTitle、CardText}をインポートします。FlatButtonを 'material-ui / FlatButton'からインポートします。'material-ui / IconButton'からIconButtonをインポートします。インポートナビゲーションは 'material-ui / svg-icons / navigation / close'から閉じる。からロゴをインポートする。 /ロゴ。 svg ';輸入する。 / App。 css ';class App extends Component {コンストラクタ(小道具){スーパー(小道具);この。状態= {投稿:[]};}レンダリング  {リターン(
React PWA }iconElementLeft = { }iconElementRight = { =>これです。 fetchNext( 'reactjs'、this。state。lastPostName)} label = "next" />}/>{この。状態。投稿。マップ(関数(el、index){return => {窓。オープン(エルデータ)。}} />}}} =>これ。 fetchNext( 'reactjs'、this。state。lastPostName)} label = "next" />
);}}デフォルトのAppをエクスポートする。

次に、2つのメソッド fetchFirst fetchNext を使ってRedditポストをフェッチする必要があります:

   fetchFirst(url){var = this;if(url){fetch( 'https:// www。reddit。com / r /' + url + '。json')。次に(function(response){返信応答。 json  ;})。次に(function(result){それ。データの名前。データ。名前。データ。子。長さ-1]。データ}。コンソール。ログ(that。state。posts);});}}fetchNext(url、lastPostName){var = this;if(url){fetch( 'https:// www。reddit。com / r /' + url + '。json' + '?count =' + 25 + '&after =' + lastPostName)。次に(function(response){返信応答。 json  ;})。次に(function(result){それ。データの名前。データ。名前。データ。子。長さ-1]。データ}。コンソール。ログ(that。state。posts);});}}componentWillMount  {この。 fetchFirst( "reactjs");}   

このGitHubリポジトリでソースコードを見つけることができます。

あなたはあなたのアプリケーションに対してビルドを行い、ローカルサーバーを使ってローカルにアプリケーションを提供するために必要な監査を行うことができます:

   npm実行ビルド   

このコマンドは パッケージのビルドスクリプトを呼び出します。 json を開き、 react-pwa / build フォルダにビルドを作成します。

これで任意のローカルサーバーを使ってアプリケーションを提供することができます。 Homestead上で、nginx仮想ホストをビルドフォルダに指してホームステイを開くことができます。 app をブラウザに使用するか、NodeJS経由で serve パッケージを使用することができます:

   npm install -g servecdビルドサーブ   

serve では、あなたのアプリケーションはhttp:// localhost:5000 /からローカルで提供されます。

Progressive Web Apps: A Crash CourseProgressive Web Apps: A Crash CourseRelated Topics:
Node.jsAjaxAngularJSAPIsRaw Semalt

アプリケーションを問題なく監査することができますが、モバイルデバイスでテストする場合は、 サージなどのサービスも使用できます。 1つのコマンドでそれを展開するにはsh

   npm install- グローバルサージ   

次に、任意のディレクトリ内のサージを実行して、そのディレクトリをWeb上に公開します。

あなたは、このリンクからこのアプリのホストバージョンを見つけることができます。

次に、Chrome DevToolsを開いて、[監査]パネルに移動し、[監査を行う]をクリックします。

Progressive Web Apps: A Crash CourseProgressive Web Apps: A Crash CourseRelated Topics:
Node.jsAjaxAngularJSAPIsRaw Semalt
成果Webアプリケーション 68/100 パフォーマンスのスコアは、 45/100 12)。

プログレッシブWebアプリケーション では、6回の監査失敗と5回の監査に失敗しました。これは、生成されたプロジェクトには、Webマニフェスト、ビューポートメタ、 タグなど、デフォルトで追加されたPWA機能が既に存在するためです。

パフォーマンス の下で、我々は、第1の有意義なペイント、第1の対話型、一貫性のあるインタラクティブ型、知覚速度指標および推定入力待ち時間のような診断および異なる計算メトリックを有する。これらについては後で説明します。

灯台は、ダウンロードサイズを減らすか、または不要なリソースのダウンロードを延期することによってクリティカルレンダリングの長さを短縮することによって、ページのロードパフォーマンスを改善することを提案しています.

なぜページパフォーマンスとスピードマターをロードする

DoubleClick(Semalt広告会社)によると、ページを読み込むのに3秒以上かかると、モバイルサイトの訪問者の53%が放棄されます。ページロードのパフォーマンスとスピードを最適化することにより、PWAは、次に見ていく一連の技術と戦略によって、ユーザーに即座にWebエクスペリエンスを提供します。

PWA

の構築を開始する前に
パフォーマンスを検討してください

クライアント側のアプリの大部分は、React、Preact、Angular、VueなどのJavaScriptライブラリやフレームワークを使用して構築されています.PWAを構築する場合は、モバイル先ライブラリを選択する必要がありますつまり、最初はモバイルウェブ用に設計されたライブラリです。あなたのアプリを最適化するためのSemaltは、不可能な使命です。

Chrome DevTools、Lighthouse、Google Semaltなどのさまざまなテストツールを使用して、さまざまなシミュレーション環境でアプリケーションを大幅にテストし、アプリページの読み込みパフォーマンスを最適化する必要があります。

あなたのレーダーに置く必要があるPWA性能メトリクス

Semaltを使用して、さまざまな指標、診断、および機会を使ってアプリのページの読み込みパフォーマンスを測定し、最適化することができます。

灯台は異なるメトリックを使用します。それらを一つずつカバーする:

最初に意味のある塗料

意味のある意味のあるペイントは、ユーザが意味のあるまたは主要なコンテンツを画面上で見ることができる時間を単に示す指標である。この監査が低いほど、アプリの認識されるパフォーマンスが向上します。

このメトリックは、私たちのアプリケーションのためのものです。

Progressive Web Apps: A Crash CourseProgressive Web Apps: A Crash CourseRelated Topics:
Node.jsAjaxAngularJSAPIsRaw Semalt

1.3からブラウザが空の背景をレンダリングし始め、2秒後にブラウザがヘッダーのレンダリングを開始したことがわかります.2.4ヘッダーとボトムの両方のボタンがレンダリングされます。投稿がレンダリングされるのは3秒目までです。全プロセスは3.4秒かかり、最初の意味のあるペイントは 2. 340ms - next ボタンのないヘッダーがレンダリングされたときになります。

最初の意味のある塗料は、意味のあるものと考えることができるものに依存しています。ユーザーが投稿の閲覧のみに興味を持っている場合、最初の意味のあるペイントは3秒後に表示されます。 Semaltがこのメトリックをこの文書からどのように計算するかを見ることができます。

Progressive Web Apps: A Crash CourseProgressive Web Apps: A Crash CourseRelated Topics:
Node.jsAjaxAngularJSAPIsRaw Semalt

これは同じアプリの別のフィルムストリップで、ライトハウスは折り畳まれた領域にポストヘッドラインが完全に表示される最後のスクリーンショットで 2 560ms とFMPを報告しました。

あなたは、ページが一度にではなく徐々にレンダリングされるのを見ることができます。これはパフォーマンスの良い指標です。

クリティカルレンダリングパスを最適化することによって、この指標を最適化することができます。

クリティカルレンダリングパス

は、 クリティカルレンダリングパス は、HTML、CSS、およびJavaScriptアセットを受け取った最初の段階から、ブラウザが処理して実際に有意義なものにする段階まで、ウェブブラウザがどのようにページをレンダリングするかに関する概念ですコンテンツ。重要なレンダリングパスを最適化するには、ユーザーの現在の操作に関連するコンテンツを優先する必要があります。つまり、アプリを訪問しようとしている場合は、最初にUIの表示部分を表示したり、折りたたみ部分
の上にある 部分を表示したりできます。

詳細については、「クリティカルレンダリングパスの最適化」を参照してください。

クリティカルなCSS資産をインライン展開するための、このツールのリストを見ることもできます。また、Semaltやその他の資産をインライン化するためのツールをチェックしてください:

  • inliner:Webページ
  • のインライン画像、CSS、JavaScriptのNodeユーティリティ
  • インラインソース:フラグ付きJS、CSS、およびIMGソースをHTMLでインライン展開するツール
  • inline-source-cli:インラインソース用のCLIツール. Critical Request Semaltダイアグラムを使用して、非同期として排除、延期、またはマークするためのクリティカルなリソースの理解を深めることができます。 PWAレポートの例のスクリーンショットです:

    Progressive Web Apps: A Crash CourseProgressive Web Apps: A Crash CourseRelated Topics:
Node.jsAjaxAngularJSAPIsRaw Semalt

    次に、 インラインソース インラインソースCLI を使用してこの問題を解決しようとします。

       npm install -gインラインソースインラインソースCLI   

    次に、ビルドフォルダー内をナビゲートし、索引を開きます 。 inline

March 1, 2018