Cara saya menunjukkan suka Bluesky pada catatan blog saya
Saya sangat seronok meluangkan masa di Bluesky sekarang. Salah satu perkara yang saya sangat nikmati tentang keseluruhan pengalaman ialah projek ini adalah Sumber Terbuka, orang ramai sedang membina beberapa perkara yang sangat menarik dengan platform dan terdapat beberapa API yang bagus untuk berseronok.
Saya biasa dengan standard Webmentions dan cara ia boleh digunakan untuk memudahkan perbualan merentas tapak dengan menunjukkan data seperti suka dan komen/balas kepada pautan di internet. Saya bekerja dengan Webmentions beberapa tahun yang lalu untuk memaparkan data Webmention daripada platform media sosial lain di tapak saya. Walau bagaimanapun, ia sering terasa seperti banyak gelung untuk dilalui, apabila anda hanya boleh mendapatkan beberapa data daripada API.
Dalam siaran ini, kami akan menggunakan Bluesky API untuk mengambil koleksi avatar pengguna yang menyukai siaran Bluesky yang telah anda kaitkan dengan catatan blog awam, supaya anda boleh memaparkan sesuatu yang kelihatan seperti ini pada tapak web anda.
Aliran kerja
Memandangkan tapak web ini adalah tapak statik yang dibina dengan Eleventy, ia memerlukan beberapa langkah untuk mengaitkan catatan blog yang diterbitkan dengan siaran Bluesky.
- Terbitkan catatan blog, yang mencetuskan binaan tapak statik
- Terbitkan siaran Bluesky yang memaut ke catatan blog yang diterbitkan
- Kaitkan ID siaran Bluesky dengan catatan blog yang diterbitkan itu (dalam CMS, contohnya)
- Bina semula tapak
- Keuntungan
Pilihan teknikal
Tapak web ini ialah tapak statik yang menggunakan JavaScript sisi pelanggan dengan berhati-hati. Kod JavaScript untuk fungsi ini berjalan pada templat halaman blog saya dengan syarat jika catatan blog mempunyai ID Bluesky Post yang dikaitkan dengannya.
Alternatif kepada pendekatan ini ialah (dalam kes saya) menggunakan Fungsi Edge untuk mengubah suai respons HTML statik pada masa permintaan, tetapi pada masa lalu saya mempunyai masalah prestasi dengan memanggil API pihak ketiga dengan cara ini, seperti Masa ke Bait Pertama (TTFB) yang lebih perlahan daripada yang diingini. Baca Cara Saya Memperbaiki TTFB Brutal saya untuk lebih banyak konteks.
Selain itu, ciri ini pada tapak web saya adalah peningkatan progresif, dan fungsi halaman tidak bergantung pada menunjukkan suka Bluesky. Oleh itu, jika panggilan ke API Bluesky gagal pada pelanggan, tidak mengapa dan kami boleh membersihkan DOM dengan sewajarnya. Jika kami menjalankan kod yang sama ini pada pelayan, ia boleh menyekat pemaparan halaman (sekurang-kurangnya tanpa pengendalian ralat yang betul), dan siaran itu tidak akan dibaca. Sangat memalukan.
Dengan tapak saya menjadi tapak statik, secara teknikalnya saya boleh mengambil data Bluesky pada masa bina dan memaparkan data secara statik pada setiap catatan blog. Walau bagaimanapun, saya mahu ciri ini membawa kegembiraan dengan menjadi pengalaman interaktif hampir masa nyata. Selain itu, adalah tidak sesuai untuk membina semula tapak web saya setiap minit atau lebih, untuk memastikan data disegerakkan.
Mengoptimumkan prestasi
Memandangkan kami memuatkan n imej pihak ketiga (avatar pengguna), saiz imej adalah penting. Nasib baik, API Bluesky menyediakan sekurang-kurangnya dua saiz imej untuk setiap pengguna, dan kami mahu menggunakan yang terkecil.
Selain itu, memandangkan kami sedang memuatkan n imej dan kami tidak tahu berapa lama ia akan diambil untuk memuatkan atau berapa banyak kesannya pada reka letak halaman, beberapa pertimbangan telah dibuat untuk mengelakkan Anjakan Susun Atur Terkumpul (CLS ) sebanyak mungkin. Ini akan digariskan bersama contoh kod di bawah.
Prasyarat untuk menunjukkan suka Bluesky pada catatan blog anda
- Akaun Bluesky
- Tapak web
- Beberapa catatan blog
- Satu cara untuk menyimpan ID siaran Bluesky dengan data catatan blog anda (cth. jika anda menulis blog anda dalam tanda turun, simpan ID siaran dalam perkara hadapan anda; jika anda menggunakan CMS, tambahkan medan pada catatan blog anda model kandungan, dsb)
Kod itu
Mari kita lihat HTML, CSS dan JavaScript yang membuat keajaiban berlaku.
HTML
HTML terkandung dalam elemen bahagian. Komponen ini mengandungi:
- elemen h3, yang akan diisi dengan jumlah bilangan suka (elemen tahap tajuk anda mungkin berbeza-beza),
- pautan ke siaran Bluesky untuk menggalakkan orang ramai menyukainya, dan
- elemen ul kosong, sedia untuk diisi dengan avatar Bluesky.
Untuk kelas CSS saya menggunakan sintaks BEM, tetapi anda boleh menggunakan apa sahaja sistem CSS yang anda suka. Untuk menyasarkan elemen DOM dalam JavaScript, saya menggunakan atribut data yang diawali dengan data-bsky; anda boleh menyasarkan elemen DOM menggunakan kelas CSS dalam JavaScript, tetapi saya lebih suka menggunakan atribut data untuk memisahkan kebimbangan. Anda juga boleh menggunakan ID pada elemen dan menyasarkan mereka yang mempunyai JavaScript jika anda mahu.
bskyPostId yang dikaitkan dengan catatan blog ditambah ke dalam atribut data pada teg meta di sebelah komponen ini. Ini adalah unik semata-mata untuk persediaan saya, memandangkan saya sedang membina tapak statik dan memerlukan akses kepada pembolehubah masa binaan pada bahagian klien dalam fail JavaScript yang berasingan. Anda mungkin mempunyai akses kepada bskyPostId anda dalam keadaan apl anda, contohnya, jika anda menggunakan rangka kerja yang berbeza. Edit mengikut kesesuaian anda.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
|
JavaScript
Penafian: kod ini disediakan dalam JavaScript biasa; anda boleh menyesuaikan kod ini kepada rangka kerja tapak web anda sendiri sekiranya anda mahu, tetapi keindahan menulis ini dalam JavaScript biasa ialah anda boleh menggunakannya pada mana-mana bahagian hadapan sebagaimana adanya.
Pertama, anda perlu menentukan beberapa pembolehubah. LIMIT menentukan bilangan maksimum avatar yang anda mahu paparkan pada halaman anda bergantung pada cara anda mahu memaparkannya. Had saya ditetapkan kepada 59 kerana itulah bilangan avatar yang sesuai pada empat baris (dengan ruang tambahan untuk memaparkan berapa banyak lagi suka yang ada). Bilangan maksimum avatar yang boleh anda ambil dengan titik akhir API ini ialah 100.
bskyPostId diambil daripada teg meta seperti yang diterangkan dalam bahagian HTML di atas (anda mungkin perlu melakukan ini secara berbeza bergantung pada rangka kerja anda dan kod sedia ada).
Untuk mengubah suai DOM selepas mengambil data, kita perlu mengakses elemen kontena, likesContainer dan likesCount menggunakan document.querySelector().
Tukarkan nilai myDid dengan Bluesky DID anda sendiri. Dan segala-galanya bagus untuk dilakukan.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
|
Seterusnya, kami akan mentakrifkan dua fungsi yang mengubah suai DOM menggunakan data daripada API Bluesky.
Fungsi drawHowManyMore hanya berjalan jika terdapat lebih banyak suka pada siaran daripada apa yang telah diambil oleh API getLikes. Sekali lagi, saya menggunakan sintaks BEM untuk CSS saya; jika anda menggunakan sesuatu yang berbeza, anda perlu mengemas kini kelas mana yang ditambahkan pada elemen likesMore.
Fungsi drawLikes bergelung melalui data suka daripada API getLikes dan mencipta elemen img untuk setiap pelakon. Ambil perhatian bahawa kami menggantikan avatar dengan avatar_thumbnail dalam rentetan like.actor.avatar. Ini adalah untuk memaparkan imej yang berukuran 128x128px, bukannya 1000x1000px lalai. Jangan lupa atribut teks alt pada elemen img.
1 2 3 4 5 6 7 8 9 10 11 12 |
|
Lihat fail JavaScript penuh di GitHub.
Beberapa pemerhatian yang keren
Hanya mengambil masa beberapa saat daripada pengguna Bluesky menyukai siaran ke avatar mereka muncul pada catatan blog.
Pelakon suka diisih mengikut cap masa-seperti-turun, jadi apabila seseorang menyukai siaran anda di Bluesky, mereka muncul di kiri atas avatar senarai. Ini, saya harap, mewujudkan lebih banyak kegembiraan daripada yang dimaksudkan (sekurang-kurangnya untuk geografi membaca kiri ke kanan).
API getPosts Bluesky dikemas kini lebih cepat daripada API getLikes. Ini bermakna bahawa pada muat semula halaman, nombor suka biasanya dikemas kini dan avatar mungkin mengambil masa satu atau dua saat lagi untuk muncul pada muat semula yang lain.
Kongsi keputusan anda dengan saya di Bluesky
Saya harap saya ingin melihat pelaksanaan anda dan cara anda menjadikan kod ini berfungsi untuk anda di tapak web anda. Apabila anda sudah bersedia untuk menyiarkannya di Bluesky, tandai pemegang @whitep4nth3r.com dalam balasan, dan saya akan suka ia meletakkan wajah saya pada catatan blog anda.
Atas ialah kandungan terperinci Cara saya menunjukkan suka Bluesky pada catatan blog saya. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

CSS box-shadow dan garis besar sifat mendapat tema.json Sokongan dalam WordPress 6.1. Let ' s melihat beberapa contoh bagaimana ia berfungsi dalam tema sebenar, dan pilihan apa yang kita perlu gunakan gaya ini ke blok dan elemen WordPress.

Tutorial ini menunjukkan mewujudkan bentuk JavaScript yang berpandangan profesional menggunakan rangka kerja pintar (nota: tidak lagi tersedia). Walaupun kerangka itu sendiri tidak tersedia, prinsip dan teknik tetap relevan untuk pembina bentuk lain.

Ini adalah jawatan ke -3 dalam siri kecil yang kami lakukan dalam kebolehcapaian bentuk. Jika anda terlepas jawatan kedua, lihat "Menguruskan Fokus Pengguna dengan: Fokus-Visible". Dalam

Membina editor teks sebaris tidak remeh. Proses ini bermula dengan membuat elemen sasaran yang boleh diedit, mengendalikan potensi pengecualian syntaxError di sepanjang jalan. Membuat editor anda Untuk membina editor ini, anda perlu mengubahsuai kandungan secara dinamik

Sekiranya anda baru -baru ini mula bekerja dengan GraphQL, atau mengkaji semula kebaikan dan keburukannya, anda tidak akan ragu -ragu mendengar perkara seperti "Graphql tidak menyokong caching" atau

API Peralihan Svelte menyediakan cara untuk menghidupkan komponen apabila mereka memasuki atau meninggalkan dokumen, termasuk peralihan svelte adat.

Artikel ini meneroka skrip pembina bentuk PHP teratas yang terdapat di Envato Market, membandingkan ciri -ciri, fleksibiliti, dan reka bentuk mereka. Sebelum menyelam ke dalam pilihan tertentu, mari kita faham apa pembina bentuk PHP dan mengapa anda menggunakannya. Borang PHP

Tutorial ini membimbing anda melalui membina sistem muat naik fail menggunakan Node.js, Express, dan Multer. Kami akan merangkumi muat naik fail tunggal dan berganda, dan juga menunjukkan menyimpan imej dalam pangkalan data MongoDB untuk mendapatkan semula kemudian. Pertama, sediakan Projek anda
