You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

72 lines
2.6 KiB

4 years ago
  1. +++
  2. title = "Fetch Injection"
  3. description = "Memuat skrip dan gaya eksternal dengan kecepatan luar biasa."
  4. categories = ["experience"]
  5. tags = ["performance", "styles"]
  6. feature = ["snippets", "related content", "code highlighter"]
  7. [[copyright]]
  8. owner = "Josh Habdas"
  9. date = "2019"
  10. license = "agpl-3.0-or-later"
  11. +++
  12. After Dark menggunakan {{< external rel="external help" href="https://git.habd.as/jhabdas/fetch-inject" text="Fetch Inject" />}} pustaka untuk memuat dan menjalankan skrip dan gaya ekesternal lebih cepat dari yang dapat dilakukan browser.
  13. {{< external href="https://hackcabin.com/post/managing-async-dependencies-javascript/" text="Fetch Injection" />}} terkonsep dan dikembangkan untuk After Dark agar memungkinkan tautan dalam ke ukuran penuh [Galeri Gambar](/module/hall-of-mirrors) gambar tanpa memblokir pemuatan halaman dan memilki kinerja aplikasi lainnya:
  14. <table>
  15. <thead>
  16. <tr>
  17. <th rowspan="2" scope="col">Use Case</th>
  18. <th colspan="2" scope="col">Chrome Performance Comparison (4G simulated connection speed)</th>
  19. </tr>
  20. <tr>
  21. <th scope="col">Without Fetch Inject</th>
  22. <th scope="col">With Fetch Inject</th>
  23. </tr>
  24. </thead>
  25. <tbody>
  26. <td>{{< external href="https://habd.as/talks/screaming-fast-wordpress-redis-vultr/" text="WordPress Twenty Seventeen" />}}</td>
  27. <td>~3.600s</td>
  28. <td>~0.918s</td>
  29. </tbody>
  30. </table>
  31. Gunakan Fetch Inject di [Custom Layouts](../custom-layouts) untuk memuat skrip dan gaya asal usul silang atau dari direktori statis situs anda.
  32. Berikan isi folder statis berikut:
  33. ```
  34. ├── layouts
  35. ├── static
  36. │ ├── js
  37. │ │ ├── jquery.slim.min.js
  38. │ │ ├── tether.min.js
  39. │ │ └── bootstrap.min.js
  40. │ └── css
  41. │ └── font-awesome.min.css
  42. └── themes
  43. ```
  44. Anda dapat memuat Bootstrap (w/Font Awesome) dan menunjukkan berapa lama itu selesai:
  45. {{< highlight html "linenos=inline" >}}
  46. <script>
  47. fetchInject([
  48. 'https://cdn.jsdelivr.net/lodash/latest/lodash.min.js',
  49. 'https://cdn.jsdelivr.net/momentjs/latest/moment.min.js'
  50. ])
  51. .then(() => {
  52. const start = moment();
  53. fetchInject(['/js/bootstrap.min.js'],
  54. fetchInject([
  55. '/js/jquery.slim.min.js',
  56. '/js/tether.min.js',
  57. '/css/font-awesome.min.css'
  58. ])
  59. ).then(console.log(`Bootstrap Loaded: ${_.capitalize(start.toNow())}.`));
  60. });
  61. </script>
  62. {{< /highlight >}}
  63. Fetch Inject adalah 555 bytes terkompresi, non-blocking dan disertakan secara default pada [Custom Layouts](../custom-layouts). Kunjungi {{< external href="https://codepen.io/jhabdas/pen/MpVeOE?editors=0012" text="CodePen Playground" />}} untuk mencobanya.