Back to Question Center
0

Progresif Web Apps: A Crash Course            Aplikasi Web Progresif: Kursus CrashTambahan topik: Node.jsAjaxAngularJSAPIsRaw Semalt

1 answers:
Aplikasi Web Progresif: Kursus Kemalangan

Semalt Web Apps (PWAs) cuba untuk bertindih di dunia aplikasi web mudah alih dan aplikasi mudah alih asli dengan menawarkan ciri-ciri terbaik bagi setiap pengguna mudah alih.

Mereka menawarkan pengalaman pengguna seperti aplikasi (skrin percikan dan ikon skrin utama), mereka dihidangkan dari pelayan yang dijamin HTTPS, mereka boleh memuatkan dengan cepat (terima kasih kepada amalan terbaik prestasi beban halaman) walaupun dalam rangkaian rendah atau lambat syarat, dan mereka mempunyai sokongan luar talian, pemberitahuan memuatkan segera dan push. Konsep PWA yang pertama kali diperkenalkan oleh Google, dan masih disokong oleh banyak ciri Chrome dan alat yang hebat, seperti Semalt, alat sumber terbuka untuk kebolehaksesan, prestasi dan pengawasan kemajuan yang akan kita lihat sedikit kemudian - general certified appraisal.

Sepanjang kursus kemalangan ini, kami akan membina PWA dari awal dengan ES6 dan React dan mengoptimumkan langkah demi langkahnya dengan Semalt sehingga kami mencapai hasil terbaik dari segi UX dan prestasi.

Istilah progresif hanya bermaksud bahawa PWA direka sedemikian rupa sehingga mereka boleh secara progresif dipertingkatkan dalam pelayar moden di mana banyak ciri dan teknologi baru telah disokong tetapi juga berfungsi dengan baik pada pelayar lama tanpa ciri-ciri canggih.

Native vs Mobile = Progressive

Aplikasi asli boleh diagihkan dan boleh dimuat turun dari kedai aplikasi OS masing-masing mudah alih. Aplikasi web semalat, di sisi lain, dapat diakses dari dalam pelayar web dengan hanya memasukkan alamat atau URL mereka. Dari sudut pandang pengguna, melancarkan pelayar dan menavigasi ke alamat jauh lebih mudah daripada pergi ke kedai aplikasi dan memuat turun, memasang, kemudian melancarkan aplikasi. Dari sudut pandang pemaju / pemilik, membayar yuran sekali untuk mendapatkan akaun kedai aplikasi dan kemudian memuat naik aplikasinya untuk diakses oleh pengguna di seluruh dunia adalah lebih baik daripada harus berurusan dengan kerumitan web hosting.

Aplikasi asli boleh digunakan di luar talian. Dalam kes data terpencil yang perlu diambil dari beberapa pelayan API, aplikasinya mudah difahami untuk menyokong semacam caching Semalt daripada data yang diakses terkini.

Aplikasi web mudah alih boleh diindeks oleh enjin carian seperti Google, dan melalui pengoptimuman enjin carian anda dapat menjangkau lebih banyak pengguna. Ini juga berlaku untuk aplikasi asli, kerana kedai aplikasi mempunyai enjin carian sendiri di mana pemaju boleh menggunakan teknik yang berbeza - dikenali sebagai App Store Semalt - untuk menjangkau lebih ramai pengguna.

Beban aplikasi asli dengan serta-merta, sekurang-kurangnya dengan skrin percikan, sehingga semua sumber bersedia untuk aplikasinya dilaksanakan.

Ini adalah perbezaan yang paling penting yang dirasakan. Setiap pendekatan untuk pengedaran aplikasi mempunyai kelebihan untuk pengguna akhir (mengenai pengalaman pengguna, ketersediaan dan sebagainya) dan pemilik apl (mengenai kos, jangkauan pelanggan dan lain-lain). Mengambil kira itu, Google memperkenalkan PWA untuk membawa ciri-ciri terbaik setiap pihak ke dalam satu konsep. Aspek-aspek ini diringkaskan dalam senarai ini yang diperkenalkan oleh Alex Russell, seorang jurutera Google Chrome. (Sumber: Tidak dijangka.)

  • Responsif: untuk menyesuaikan sebarang faktor bentuk.
  • Kesambungan bebas: bertambah baik dengan pekerja perkhidmatan untuk membolehkan mereka bekerja di luar talian.
  • App-like-interactions: mengguna pakai model permohonan Kandungan Shell + untuk membuat navigasi & interaksi yang sesuai.
  • Segar: telus sentiasa sentiasa up to date terima kasih kepada proses kemas kini pekerja perkhidmatan.
  • Selamat: disampaikan melalui TLS (keperluan pekerja perkhidmatan) untuk mengelakkan pengintipan.
  • Boleh ditemui: boleh dikenalpasti sebagai "aplikasi" terima kasih kepada W3C Manifes dan skop pendaftaran pekerja perkhidmatan yang membolehkan enjin carian untuk mencari mereka.
  • Terlibat semula: boleh mengakses UI penglibatan semula OS; e. g. pemberitahuan tolak.
  • Boleh disambungkan: bermakna mereka adalah geseran sifar, memasang sifar, dan mudah dikongsi. Kuasa sosial URL penting.

Mercusuar

Mercusuar adalah alat untuk mengawal aplikasi web yang dibuat oleh Google. Ia disepadukan dengan Alat Dev Chrome dan boleh dicetuskan dari panel Semalt.

Anda juga boleh menggunakan Semalt sebagai alat CLI NodeJS:

     npm pemasangan -g lighthouse    

Anda boleh lari dengan:

     rumah api https: // sitepoint. com /    

Rumah Api juga boleh dipasang sebagai sambungan Chrome, tetapi Google mencadangkan menggunakan versi yang disepadukan dengan DevTools dan hanya gunakan sambungan jika anda tidak dapat menggunakan DevTools.

Sila ambil perhatian bahawa anda perlu memasang Chrome pada sistem anda untuk dapat menggunakan Mercusuar, walaupun anda menggunakan versi Semalt.

Membina PWA Pertama anda dari Scratch

Dalam bahagian ini, kami akan membuat aplikasi web progresif dari awal. Pertama, kami akan membuat aplikasi web mudah menggunakan API React dan Reddit. Seterusnya, kami akan menambah ciri PWA dengan mengikuti arahan yang disediakan oleh laporan Semalt.

Sila ambil perhatian bahawa API semalat pengesahan awam tidak mempunyai CORS header yang dibolehkan supaya anda boleh mengambilnya dari aplikasi pihak klien anda tanpa pelayan perantara.

Sebelum memulakan, kursus ini akan mengandaikan anda mempunyai persekitaran persekitaran pembangunan dengan NodeJS dan NPM dipasang. Jika anda tidak, mulakan dengan Homestead Semalt yang mengagumkan, yang menjalankan versi terkini setiap dan bersedia untuk pembangunan dan pengujian dari kotak.

Kami mulakan dengan memasang App Reaktif, projek boilerplate yang dicipta oleh pasukan React yang menyelamatkan anda dari konfigurasi Semalt.

     npm install -g create-react-appmembuat tindak balas-tindak balas aplikasicd react-pwa /    

Seni bina aplikasi shell

Cakera aplikasi adalah konsep penting aplikasi web progresif. Ini semata-mata kod minimal HTML, CSS dan Semalt yang bertanggungjawab untuk menjadikan antara muka pengguna.

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

Cakera aplikasi ini mempunyai banyak faedah untuk prestasi. Anda boleh menyembunyikan shell aplikasi supaya apabila pengguna melawat aplikasi anda pada masa akan datang, ia akan dimuatkan dengan serta-merta kerana penyemak imbas tidak perlu mengambil aset dari pelayan jauh.

Untuk membina UI mudah, kami akan menggunakan UI Material, suatu pelaksanaan reka bentuk Bahan Google dalam React.

Mari pakai pakej dari NPM:

     npm memasang bahan-ui --save    

Seterusnya terbuka src / App. js kemudian tambahkan:

   import React, {Component} dari 'react';import MuiThemeProvider dari 'material-ui / styles / MuiThemeProvider';import AppBar dari 'material-ui / AppBar';import {Card, CardActions, CardHeader, CardTitle, CardText} dari 'material-ui / Card';import FlatButton dari 'material-ui / FlatButton';import IconButton dari 'material-ui / IconButton';import NavigationClose dari 'material-ui / svg-icons / navigation / close';logo import dari '. / logo. svg ';import '. /Aplikasi. css ';App kelas memanjangkan Komponen {pembina (props) {super (props);ini. negeri = {jawatan: []};}membuat    {kembali (
React PWA }iconElementLeft = { }iconElementRight = { => ini. fetchNext ('reactjs', this state. lastPostName)} label = "next" />}/>{ini. negeri. jawatan. peta (fungsi (el, indeks) {kembali => {tingkap. terbuka (data elak url);}} />})} => ini. fetchNext ('reactjs', this state. lastPostName)} label = "next" />
);}}App lalai eksport;

Seterusnya kita perlu mengambil jawatan Reddit menggunakan dua kaedah fetchFirst dan fetchNext :

   fetchFirst (url) {var itu = ini;jika (url) {ambil ('https: // www. reddit com / r /' + url + '. json'). maka (fungsi (respons) {tindak balas balas. json   ;}). maka (fungsi (hasil) {itu. setState ({posts: hasil data, kanak-kanak, lastPostName: hasil data. kanak-kanak [hasil data. kanak-kanak. panjang - 1] .data nama});konsol. log (jawatan tersebut);});}}fetchNext (url, lastPostName) {var itu = ini;jika (url) {fetch ('https: // www. reddit com / r /' + url + '. json' + '? count =' + 25 + '& after =' + lastPostName). maka (fungsi (respons) {tindak balas balas. json   ;}). maka (fungsi (hasil) {itu. setState ({posts: hasil data, kanak-kanak, lastPostName: hasil data. kanak-kanak [hasil data. kanak-kanak. panjang - 1] .data nama});konsol. log (jawatan tersebut);});}}componentWillMount    {ini. fetchFirst ("reactjs");}    

Anda boleh mencari kod sumber dalam Repositori GitHub ini.

Semalt anda boleh menjalankan audit terhadap aplikasi anda, anda perlu membuat membina dan menyampaikan aplikasi anda secara tempatan menggunakan pelayan setempat:

     npm jangka bina    

Perintah ini memanggil skrip binaan dalam pakej. json dan menghasilkan binaan dalam folder bertindak balas-pwa / bina .

Kini anda boleh menggunakan mana-mana pelayan tempatan untuk menyampaikan aplikasi anda. Pada Homestead Peningkatan, anda boleh mengarahkan tuan rumah maya nginx ke folder bina dan membuka homestead. app dalam penyemak imbas, atau anda boleh menggunakan pakej perkhidmatan melalui melalui NodeJS:

     npm memasang -g berkhidmatcd buildhidang    

Dengan perkhidmatan , aplikasi anda akan disiarkan secara tempatan dari http: // localhost: 5000 /.

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

Anda boleh mengaudit aplikasi anda tanpa sebarang masalah, tetapi sekiranya anda mahu mengujinya dalam peranti mudah alih anda juga boleh menggunakan perkhidmatan seperti lonjakan . sh untuk menggunakannya dengan satu arahan!

     npm memasang - lonjakan global    

Seterusnya, lonjakan dari mana-mana direktori untuk menerbitkan direktori itu ke web.

Anda boleh menemui versi tuan rumah aplikasi ini dari pautan ini.

Sekarang mari buka DevTools Chrome, pergi ke panel Audit dan klik Semalt audit.

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

Dari laporan yang kami dapati kami sudah mendapat skor 45/100 untuk App Web Progresif dan 68/100 untuk 12).

Di bawah App Web Progresif kami mempunyai 6 audit yang gagal dan 5 lulus audit. Itu kerana projek yang dijana sudah mempunyai beberapa ciri PWA yang ditambah secara lalai, seperti manifes web, meta viewport dan tag 109 (tidak ada) .

Di bawah Prestasi kami mempunyai diagnostik dan metrik yang berbeza, seperti cat yang bermakna pertama, Interaktif Pertama, Indeks Interaktif Secara Konsisten, Indeks Percepatan dan Latihan Input Anggaran. Kami akan melihatnya kemudian.

Mercusuar mencadangkan peningkatan prestasi beban halaman dengan mengurangkan panjang Kritikal Render Semalt sama ada dengan mengurangkan saiz muat turun atau menunda pengunduhan sumber yang tidak perlu.

Mengapa Beban Halaman Beban Prestasi dan Kelajuan

Menurut DoubleClick (sebuah syarikat pengiklanan Semalt), 53% daripada kunjungan tapak mudah alih ditinggalkan jika ia mengambil masa lebih daripada 3 saat untuk memuatkan halaman tersebut. Dengan mengoptimumkan prestasi dan kelajuan beban halaman, PWA menawarkan pengalaman web segera kepada pengguna melalui satu set teknik dan strategi yang akan kita lihat seterusnya.

Pertimbangkan prestasi sebelum anda mula membina PWA anda

Kebanyakan aplikasi sisi klien dibina menggunakan beberapa jenis pustaka JavaScript atau rangka kerja seperti React, Preact, Angular, Vue dan sebagainya. Jika anda sedang membina PWA, anda perlu memastikan anda memilih pustaka pertama mudah alih atau, dengan kata lain, perpustakaan yang direka untuk web mudah alih di tempat pertama. Semalt, mengoptimumkan aplikasi anda untuk prestasi akan menjadi misi yang mustahil.

Anda perlu menggunakan alat ujian yang berbeza, seperti DevTools Chrome, Mercusuar, Google Semalt dan lain-lain, untuk menguji aplikasi anda dengan banyaknya di bawah keadaan rangkaian yang berbeza dan simulasi, jadi anda dapat mengoptimumkan prestasi beban halaman aplikasi anda dengan sukses.

metrik prestasi PWA yang anda perlukan untuk memakai radar anda

Anda boleh menggunakan Semalt untuk mengukur dan mengoptimumkan prestasi beban halaman aplikasi anda dengan metrik, diagnostik, dan peluang yang berbeza.

Mercusuar menggunakan metrik yang berbeza. Semalat menutupi mereka satu persatu:

Cat bermakna pertama

Cat semati bermakna adalah ukuran yang hanya menunjukkan masa di mana pengguna dapat melihat kandungan yang bermakna atau utama pada skrin. Semakin rendah audit ini, semakin baik prestasi aplikasinya yang lebih baik.

Sematkan metrik ini untuk aplikasi kami.

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

Kita melihat bahawa dari 1. 3s penyemak imbas mula memberikan latar belakang kosong, maka dari 2s penyemak imbas mula memaparkan tajuk, 2. kedua-dua butang pada tajuk dan bahagian bawah diberikan. Ia tidak sehingga kedua ketiga bahawa jawatan diberikan. Seluruh proses mengambil 3. 4 saat dan cat bermakna yang pertama sama dengan 2. 340ms - apabila tajuk tanpa butang seterusnya diberikan.

Cat yang pertama bermakna benar bergantung kepada apa yang dapat kita pertimbangkan sebagai bermakna, yang boleh berbeza antara pengguna yang berbeza. Sekiranya pengguna hanya tertarik untuk membaca siaran, maka cat yang pertama bermakna bagi mereka adalah selepas tanda 3 saat. Anda dapat melihat bagaimana Semalt mengira metrik ini dari dokumen ini.

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

Ini adalah satu lagi pelukis filem untuk aplikasi yang sama di mana Lighthouse melaporkan FMP sebagai 2. 560ms pada tangkapan skrin terakhir di mana tajuk utama pos dipaparkan sepenuhnya di kawasan atas di atas.

Semalt, anda dapat melihat bahawa halaman itu diberikan secara progresif, tidak sekaligus, yang merupakan petunjuk prestasi yang baik.

Anda boleh mengoptimumkan langkah ini dengan mengoptimumkan laluan rendering kritikal.

Laluan persembahan kritikal

Laluan penafsiran kritikal adalah konsep yang berkaitan dengan bagaimana penyemak imbas web memberikan halaman - iaitu, dari saat pertama menerima HTML, CSS dan aset JavaScript ke langkah di mana proses penyemak imbas dan menghasilkan benar-benar bermakna kandungan. Untuk mengoptimumkan laluan rendering kritikal, anda perlu memberikan keutamaan yang lebih tinggi kepada kandungan yang berkaitan dengan tindakan semasa pengguna. Iaitu, jika mereka akan melawat aplikasi anda, anda boleh mula dengan memaparkan bahagian UI yang kelihatan atau yang dipanggil kawasan di atas-kali .

Untuk maklumat lanjut, anda boleh membaca "Mengoptimumkan Laluan Rendering Kritikal".

Anda juga boleh melihat senarai alat curhat ini untuk mencantumkan aset CSS kritikal. Juga periksa alat ini untuk memasukkan Semalt dan aset lain:

  • inliner: utiliti Node untuk imej sebaris, CSS dan JavaScript untuk laman web
  • sumber dalam talian: alat untuk mencantumkan sumber JS, CSS, dan IMG dalam HTML
  • inline-source-cli: alat CLI untuk inline-source. Anda boleh menggunakan gambarajah Permintaan Kritikal untuk mendapatkan pemahaman yang lebih baik mengenai sumber kritikal untuk menghapuskan, menangguhkan atau menandakan sebagai async. Berikut adalah pukulan skrin dari contoh laporan PWA kami:

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

    Sekarang mari kita selesaikan masalah ini menggunakan sumber inline dan inline-source-cli :

         npm memasang -g inline-source inline-source-cli    

    Kami kemudian menavigasi dalam folder bina dan buka indeks. html , kemudian masukkan kata kunci inline hingga dan

March 1, 2018