{"id":36685,"date":"2025-12-21T16:30:33","date_gmt":"2025-12-21T13:30:33","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/hafif-bir-degisiklik-gunlugu-widgeti-gelistirmek-agir-scriptlere-veda\/"},"modified":"2025-12-21T16:30:33","modified_gmt":"2025-12-21T13:30:33","slug":"hafif-bir-degisiklik-gunlugu-widgeti-gelistirmek-agir-scriptlere-veda","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/hafif-bir-degisiklik-gunlugu-widgeti-gelistirmek-agir-scriptlere-veda\/","title":{"rendered":"Hafif Bir De\u011fi\u015fiklik G\u00fcnl\u00fc\u011f\u00fc Widget&#8217;\u0131 Geli\u015ftirmek: A\u011f\u0131r Scriptlere Veda"},"content":{"rendered":"<h2>Hafif Bir De\u011fi\u015fiklik G\u00fcnl\u00fc\u011f\u00fc Widget&#8217;\u0131 Geli\u015ftirmek: A\u011f\u0131r Scriptlere Veda<\/h2>\n<p>Modern web uygulamalar\u0131nda kullan\u0131c\u0131lar\u0131 g\u00fcncel tutmak hayati \u00f6nem ta\u015f\u0131r. Yeni \u00f6zellikler, hata d\u00fczeltmeleri ve iyile\u015ftirmeler hakk\u0131nda bilgi vermek i\u00e7in de\u011fi\u015fiklik g\u00fcnl\u00fckleri (changelog) olmazsa olmazd\u0131r. Ancak, bu t\u00fcr bir i\u015flevselli\u011fi sitenize entegre ederken genellikle b\u00fcy\u00fck JavaScript k\u00fct\u00fcphanelerine ve karma\u015f\u0131k ba\u011f\u0131ml\u0131l\u0131klara ba\u015fvurmak zorunda kal\u0131r\u0131z. Bu makalede, web performans\u0131n\u0131 ve geli\u015ftirici esnekli\u011fini \u00f6n planda tutarak, a\u011f\u0131r scriptlere olan nefretimizden do\u011fan, tamamen hafif ve ba\u011f\u0131ms\u0131z bir de\u011fi\u015fiklik g\u00fcnl\u00fc\u011f\u00fc widget&#8217;\u0131n\u0131n nas\u0131l geli\u015ftirilece\u011fini ke\u015ffedece\u011fiz.<\/p>\n<h3>Neden Hafif Bir \u00c7\u00f6z\u00fcme \u0130htiya\u00e7 Duyduk?<\/h3>\n<p>Web d\u00fcnyas\u0131nda h\u0131z ve verimlilik, kullan\u0131c\u0131 deneyiminin temel ta\u015flar\u0131d\u0131r. Mevcut \u00e7\u00f6z\u00fcmlerin \u00e7o\u011fu, basit bir i\u015flevi yerine getirmek i\u00e7in gereksiz yere b\u00fcy\u00fck ve karma\u015f\u0131k k\u00fct\u00fcphaneler kullan\u0131r. Bu durum, \u00f6zellikle k\u00fc\u00e7\u00fck ve orta \u00f6l\u00e7ekli projelerde ciddi performans sorunlar\u0131na yol a\u00e7abilir.<\/p>\n<h4>Web Performans\u0131n\u0131n \u00d6nemi<\/h4>\n<p>Sayfa y\u00fckleme h\u0131zlar\u0131, hem kullan\u0131c\u0131 memnuniyeti hem de arama motoru s\u0131ralamalar\u0131 i\u00e7in kritik bir fakt\u00f6rd\u00fcr. A\u011f\u0131r JavaScript dosyalar\u0131, sayfa y\u00fckleme s\u00fcrelerini uzatarak kullan\u0131c\u0131lar\u0131n sitenizden ayr\u0131lmas\u0131na neden olabilir. Hafif bir \u00e7\u00f6z\u00fcm, bu s\u00fcreyi minimumda tutarak daha iyi bir ba\u015flang\u0131\u00e7 sa\u011flar.<\/p>\n<h4>Kullan\u0131c\u0131 Deneyimi \u00dczerindeki Etki<\/h4>\n<p>Yava\u015f y\u00fcklenen bir web sitesi, kullan\u0131c\u0131da hayal k\u0131r\u0131kl\u0131\u011f\u0131 yarat\u0131r. Bir de\u011fi\u015fiklik g\u00fcnl\u00fc\u011f\u00fc gibi ikincil bir \u00f6zelli\u011fin, ana i\u00e7eri\u011fin y\u00fcklenmesini geciktirmesi kabul edilemez. Hafif bir widget, ana i\u00e7eri\u011fin h\u0131zl\u0131ca g\u00f6r\u00fcnmesini sa\u011flayarak kullan\u0131c\u0131 deneyimini olumlu y\u00f6nde etkiler.<\/p>\n<h4>Geli\u015ftirici Ba\u011f\u0131ms\u0131zl\u0131\u011f\u0131 Arzusu<\/h4>\n<p>B\u00fcy\u00fck k\u00fct\u00fcphanelere ba\u011f\u0131ml\u0131 olmak, geli\u015ftiricileri belirli ekosistemlere kilitler. Bu durum, gelecekteki g\u00fcncellemelerde veya farkl\u0131 projelerde esnekli\u011fi k\u0131s\u0131tlayabilir. Saf JavaScript ve minimal CSS ile olu\u015fturulan bir widget, herhangi bir \u00e7er\u00e7eve veya k\u00fct\u00fcphaneden ba\u011f\u0131ms\u0131z \u00e7al\u0131\u015f\u0131r ve geli\u015ftiriciye tam kontrol sa\u011flar.<\/p>\n<h3>Mevcut De\u011fi\u015fiklik G\u00fcnl\u00fc\u011f\u00fc Yakla\u015f\u0131mlar\u0131n\u0131n Dezavantajlar\u0131<\/h3>\n<p>Piyasada bir\u00e7ok haz\u0131r de\u011fi\u015fiklik g\u00fcnl\u00fc\u011f\u00fc \u00e7\u00f6z\u00fcm\u00fc bulunsa da, bunlar\u0131n \u00e7o\u011fu belirli dezavantajlar\u0131 beraberinde getirir. Bu dezavantajlar, kendi hafif \u00e7\u00f6z\u00fcm\u00fcm\u00fcz\u00fc geli\u015ftirme motivasyonumuzu g\u00fc\u00e7lendirdi.<\/p>\n<h4>B\u00fcy\u00fck JavaScript K\u00fct\u00fcphaneleri ve \u00c7er\u00e7eveleri<\/h4>\n<p>React, Vue veya Angular gibi modern JavaScript \u00e7er\u00e7eveleri, karma\u015f\u0131k uygulamalar i\u00e7in harika ara\u00e7lard\u0131r. Ancak, sadece bir de\u011fi\u015fiklik g\u00fcnl\u00fc\u011f\u00fc g\u00f6stermek i\u00e7in bu \u00e7er\u00e7evelerin tamam\u0131n\u0131 veya b\u00fcy\u00fck par\u00e7alar\u0131n\u0131 y\u00fcklemek, gereksiz bir y\u00fck olu\u015fturur. Bu durum, &#8220;bir f\u0131nd\u0131\u011f\u0131 k\u0131rmak i\u00e7in balyoz kullanmak&#8221; gibidir.<\/p>\n<h4>Karma\u015f\u0131k Yap\u0131land\u0131rmalar ve Ba\u011f\u0131ml\u0131l\u0131klar<\/h4>\n<p>\u00c7o\u011fu haz\u0131r \u00e7\u00f6z\u00fcm, karma\u015f\u0131k yap\u0131land\u0131rma dosyalar\u0131, paket y\u00f6neticileri ve birden fazla ba\u011f\u0131ml\u0131l\u0131k gerektirir. Bu durum, kurulumu ve bak\u0131m\u0131 zorla\u015ft\u0131r\u0131r, ayn\u0131 zamanda potansiyel g\u00fcvenlik a\u00e7\u0131klar\u0131n\u0131 da beraberinde getirebilir.<\/p>\n<h4>Gereksiz \u00d6zellik \u015ei\u015fkinli\u011fi<\/h4>\n<p>Haz\u0131r widget&#8217;lar genellikle ihtiyac\u0131n\u0131z olmayan bir\u00e7ok ekstra \u00f6zellikle birlikte gelir. Animasyonlar, geli\u015fmi\u015f filtreleme se\u00e7enekleri veya farkl\u0131 tema se\u00e7enekleri gibi \u00f6zellikler, kod boyutunu art\u0131r\u0131r ve performans \u00fczerinde olumsuz etki yarat\u0131r. Bizim amac\u0131m\u0131z, sadece temel i\u015flevi en verimli \u015fekilde sunmakt\u0131.<\/p>\n<h4>Yava\u015f Y\u00fckleme S\u00fcreleri<\/h4>\n<p>Yukar\u0131da bahsedilen t\u00fcm fakt\u00f6rler bir araya geldi\u011finde, sonu\u00e7 genellikle yava\u015f y\u00fckleme s\u00fcreleri olur. \u00d6zellikle mobil cihazlarda veya d\u00fc\u015f\u00fck bant geni\u015fli\u011fine sahip ba\u011flant\u0131larda bu durum daha da belirginle\u015fir ve kullan\u0131c\u0131lar\u0131n sitenizden h\u0131zla uzakla\u015fmas\u0131na neden olabilir.<\/p>\n<h3>Hafif Widget Tasar\u0131m Felsefemiz<\/h3>\n<p>A\u011f\u0131r scriptlerin getirdi\u011fi sorunlardan ka\u00e7\u0131nmak i\u00e7in, widget&#8217;\u0131m\u0131z\u0131 tasarlarken belirli prensiplere ba\u011fl\u0131 kald\u0131k. Bu prensipler, performans, basitlik ve esnekli\u011fi merkeze al\u0131yordu.<\/p>\n<h4>Vanilla JavaScript \u00d6nceli\u011fi<\/h4>\n<p>Herhangi bir harici k\u00fct\u00fcphane veya \u00e7er\u00e7eve kullanmadan, saf (vanilla) JavaScript ile \u00e7al\u0131\u015fmak temel prensibimizdi. Bu yakla\u015f\u0131m, en k\u00fc\u00e7\u00fck dosya boyutunu ve en h\u0131zl\u0131 \u00e7al\u0131\u015fma zaman\u0131n\u0131 garanti eder. Ayr\u0131ca, kodun ne yapt\u0131\u011f\u0131n\u0131 tam olarak anlamam\u0131z\u0131 ve \u00fczerinde tam kontrol sahibi olmam\u0131z\u0131 sa\u011flar.<\/p>\n<h4>Minimalist CSS Yakla\u015f\u0131m\u0131<\/h4>\n<p>G\u00f6rsel tasar\u0131m i\u00e7in sadece temel CSS kurallar\u0131 kullan\u0131ld\u0131. Karma\u015f\u0131k animasyonlar veya g\u00f6lgeler yerine, okunabilirli\u011fi ve basitli\u011fi \u00f6n planda tutan bir tasar\u0131m dili benimsedik. Bu, CSS dosyas\u0131n\u0131n boyutunu minimumda tutar ve sayfa y\u00fcklemesini h\u0131zland\u0131r\u0131r.<\/p>\n<h4>Harici Ba\u011f\u0131ml\u0131l\u0131klardan Ka\u00e7\u0131nma<\/h4>\n<p>Projenin tek ba\u015f\u0131na \u00e7al\u0131\u015fabilmesi i\u00e7in harici hi\u00e7bir JavaScript veya CSS k\u00fct\u00fcphanesine ba\u011f\u0131ml\u0131 olmamak kritikti. Bu, gelecekteki bak\u0131m s\u00fcre\u00e7lerini basitle\u015ftirir ve olas\u0131 uyumluluk sorunlar\u0131n\u0131 ortadan kald\u0131r\u0131r.<\/p>\n<h4>Basit ve Anla\u015f\u0131l\u0131r Kod Yap\u0131s\u0131<\/h4>\n<p>Kodun kolayca okunabilir, anla\u015f\u0131labilir ve geni\u015fletilebilir olmas\u0131 hedeflendi. Karma\u015f\u0131k algoritmalar veya soyutlamalar yerine, do\u011frudan ve i\u015flevsel bir yakla\u015f\u0131m benimsenerek, herkesin kolayca katk\u0131da bulunabilece\u011fi bir yap\u0131 olu\u015fturuldu.<\/p>\n<h3>\u00c7ekirdek Yap\u0131: HTML, CSS ve Saf JavaScript<\/h3>\n<p>Widget&#8217;\u0131m\u0131z\u0131n temelini, modern web standartlar\u0131n\u0131n \u00fc\u00e7 ana bile\u015feni olu\u015fturur: HTML iskeleti, CSS ile stilizasyon ve saf JavaScript ile dinamik i\u015flevsellik.<\/p>\n<h4>HTML \u0130skeleti<\/h4>\n<p>Widget&#8217;\u0131n HTML yap\u0131s\u0131 m\u00fcmk\u00fcn oldu\u011funca basit tutuldu. Bir ana kapsay\u0131c\u0131 (<code>div<\/code>) i\u00e7inde, her de\u011fi\u015fiklik g\u00fcnl\u00fc\u011f\u00fc \u00f6\u011fesi i\u00e7in ayr\u0131 <code>div<\/code>&#8216;ler veya <code>li<\/code>&#8216;ler kullan\u0131ld\u0131. Bu yap\u0131, semantik olarak do\u011fru ve eri\u015filebilir bir temel sa\u011flar.<\/p>\n<pre><code class=\"language-html\"><div id=\"changelog-widget\">\n    <h3>Yenilikler ve G\u00fcncellemeler<\/h3>\n    <ul id=\"changelog-list\">\n        <!-- De\u011fi\u015fiklikler buraya JavaScript ile y\u00fcklenecek -->\n    <\/ul>\n    <button id=\"changelog-toggle\">T\u00fcm\u00fcn\u00fc G\u00f6r<\/button>\n<\/div><\/pre>\n<p><\/code><\/p>\n<h4>Stilize Edilmi\u015f G\u00f6r\u00fcn\u00fcm (CSS)<\/h4>\n<p>CSS, widget'\u0131n g\u00f6rsel olarak \u00e7ekici ve okunabilir olmas\u0131n\u0131 sa\u011flar. Renkler, yaz\u0131 tipleri, bo\u015fluklar ve basit d\u00fczenlemelerle kullan\u0131c\u0131 dostu bir aray\u00fcz olu\u015fturulur. Minimalist yakla\u015f\u0131m sayesinde, CSS dosya boyutu olduk\u00e7a d\u00fc\u015f\u00fckt\u00fcr.<\/p>\n<pre><code class=\"language-css\">\/* changelog-widget.css *\/\n#changelog-widget {\n    font-family: Arial, sans-serif;\n    border: 1px solid #eee;\n    border-radius: 8px;\n    padding: 15px;\n    max-width: 350px;\n    box-shadow: 0 2px 10px rgba(0,0,0,0.05);\n    background-color: #fff;\n    margin-bottom: 20px;\n}\n\n#changelog-widget h3 {\n    margin-top: 0;\n    color: #333;\n    font-size: 1.2em;\n}\n\n#changelog-list {\n    list-style: none;\n    padding: 0;\n    margin: 0;\n}\n\n#changelog-list li {\n    padding: 8px 0;\n    border-bottom: 1px dashed #eee;\n    font-size: 0.9em;\n    color: #555;\n}\n\n#changelog-list li:last-child {\n    border-bottom: none;\n}\n\n#changelog-list li strong {\n    color: #333;\n    display: block;\n    margin-bottom: 3px;\n}\n\n#changelog-list li .changelog-date {\n    font-size: 0.8em;\n    color: #999;\n    display: block;\n    margin-top: 2px;\n}\n\n#changelog-toggle {\n    background-color: #007bff;\n    color: white;\n    border: none;\n    padding: 8px 15px;\n    border-radius: 5px;\n    cursor: pointer;\n    font-size: 0.9em;\n    margin-top: 15px;\n    width: 100%;\n    box-sizing: border-box;\n}\n\n#changelog-toggle:hover {\n    background-color: #0056b3;\n}<\/pre>\n<p><\/code><\/p>\n<h4>Dinamik \u0130\u00e7erik Y\u00f6netimi (JavaScript)<\/h4>\n<p>JavaScript, widget'\u0131n beynidir. JSON format\u0131ndaki de\u011fi\u015fiklik g\u00fcnl\u00fc\u011f\u00fc verilerini al\u0131r, ayr\u0131\u015ft\u0131r\u0131r ve HTML iskeletine dinamik olarak ekler. Ayr\u0131ca, \"T\u00fcm\u00fcn\u00fc G\u00f6r\" gibi etkile\u015fimli \u00f6zellikler de JavaScript ile y\u00f6netilir.<\/p>\n<h3>Veri Y\u00f6netimi: JSON ve Basit Entegrasyon<\/h3>\n<p>De\u011fi\u015fiklik g\u00fcnl\u00fc\u011f\u00fc verilerini y\u00f6netmek i\u00e7in basit ve evrensel bir format se\u00e7mek, widget'\u0131n esnekli\u011fi i\u00e7in kritik \u00f6neme sahiptir. JSON (JavaScript Object Notation) bu ihtiyac\u0131 m\u00fckemmel bir \u015fekilde kar\u015f\u0131lar.<\/p>\n<h4>De\u011fi\u015fiklik G\u00fcnl\u00fc\u011f\u00fc Veri Format\u0131 (JSON)<\/h4>\n<p>De\u011fi\u015fiklik g\u00fcnl\u00fc\u011f\u00fc verilerini bir JSON dosyas\u0131 olarak saklamak, hem okunabilir hem de kolayca ayr\u0131\u015ft\u0131r\u0131labilir bir yap\u0131 sunar. Her bir de\u011fi\u015fiklik \u00f6\u011fesi, bir s\u00fcr\u00fcm numaras\u0131, tarih ve a\u00e7\u0131klama gibi temel bilgileri i\u00e7erir.<\/p>\n<pre><code class=\"language-json\">[\n    {\n        \"version\": \"1.2.0\",\n        \"date\": \"2023-10-26\",\n        \"changes\": [\n            \"Yeni \u00f6zellik: Kullan\u0131c\u0131 profilleri eklendi.\",\n            \"Performans iyile\u015ftirmeleri yap\u0131ld\u0131.\"\n        ]\n    },\n    {\n        \"version\": \"1.1.1\",\n        \"date\": \"2023-10-20\",\n        \"changes\": [\n            \"Hata d\u00fczeltme: Mobil g\u00f6r\u00fcn\u00fcmdeki kayd\u0131rma sorunu giderildi.\"\n        ]\n    },\n    {\n        \"version\": \"1.1.0\",\n        \"date\": \"2023-10-15\",\n        \"changes\": [\n            \"Geli\u015ftirme: Bildirim sistemi g\u00fcncellendi.\",\n            \"Yeni \u00f6zellik: Koyu tema deste\u011fi eklendi.\"\n        ]\n    },\n    {\n        \"version\": \"1.0.0\",\n        \"date\": \"2023-10-01\",\n        \"changes\": [\n            \"\u0130lk s\u00fcr\u00fcm yay\u0131nland\u0131.\"\n        ]\n    }\n]<\/pre>\n<p><\/code><\/p>\n<h4>Verinin Y\u00fcklenmesi ve Ayr\u0131\u015ft\u0131r\u0131lmas\u0131<\/h4>\n<p>JavaScript, <code>fetch<\/code> API'sini kullanarak bu JSON dosyas\u0131n\u0131 asenkron olarak y\u00fckler. Y\u00fcklendikten sonra, <code>JSON.parse()<\/code> y\u00f6ntemiyle JavaScript nesnelerine d\u00f6n\u00fc\u015ft\u00fcr\u00fcl\u00fcr ve widget i\u00e7inde kullan\u0131lmaya haz\u0131r hale gelir.<\/p>\n<h4>Widget'a Veri Enjeksiyonu<\/h4>\n<p>Ayr\u0131\u015ft\u0131r\u0131lan JSON verileri, DOM manip\u00fclasyonu teknikleri kullan\u0131larak HTML iskeletine enjekte edilir. Her bir de\u011fi\u015fiklik \u00f6\u011fesi i\u00e7in yeni <code><\/p>\n<li><\/code> elemanlar\u0131 olu\u015fturulur ve <code>\n<ul><\/code> listesine eklenir. Bu s\u00fcre\u00e7 tamamen dinamiktir ve sayfa y\u00fcklenirken ger\u00e7ekle\u015fir.<\/p>\n<h3>Uygulama Ad\u0131mlar\u0131 ve Kod \u00d6rnekleri<\/h3>\n<p>\u015eimdiye kadar bahsetti\u011fimiz t\u00fcm bile\u015fenleri bir araya getirerek, hafif de\u011fi\u015fiklik g\u00fcnl\u00fc\u011f\u00fc widget'\u0131m\u0131z\u0131 nas\u0131l olu\u015fturaca\u011f\u0131m\u0131za dair ad\u0131m ad\u0131m bir rehber sunal\u0131m.<\/p>\n<h4>HTML Yerle\u015fimi<\/h4>\n<p>Web sayfan\u0131zda widget'\u0131n g\u00f6r\u00fcnmesini istedi\u011finiz yere basit bir <code>div<\/code> eleman\u0131 ekleyin. Bu, JavaScript'in i\u00e7eri\u011fi yerle\u015ftirece\u011fi ana kapsay\u0131c\u0131 olacakt\u0131r.<\/p>\n<pre><code class=\"language-html\"><!-- index.html -->\n<!DOCTYPE html>\n<html lang=\"tr\">\n<head>\n    <meta charset=\"UTF-8\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <title>Hafif Changelog Widget Demo<\/title>\n    <link rel=\"stylesheet\" href=\"changelog-widget.css\">\n<\/head>\n<body>\n    <h1>Uygulama Ana Sayfas\u0131<\/h1>\n    <p>Burada uygulaman\u0131z\u0131n di\u011fer i\u00e7erikleri yer alacak.<\/p>\n\n    <!-- Changelog Widget'\u0131 buraya yerle\u015ftiriyoruz -->\n    <div id=\"changelog-widget-container\"><\/div>\n\n    <script src=\"changelog-widget.js\"><\/script>\n<\/body>\n<\/html><\/pre>\n<p><\/code><\/p>\n<h4>CSS Tan\u0131mlamalar\u0131<\/h4>\n<p>Yukar\u0131da payla\u015f\u0131lan <code>changelog-widget.css<\/code> dosyas\u0131n\u0131 projenize ekleyin ve HTML dosyan\u0131z\u0131n <code><head><\/code> b\u00f6l\u00fcm\u00fcnde linkleyin. Bu, widget'\u0131n\u0131z\u0131n temel stilini sa\u011flayacakt\u0131r.<\/p>\n<h4>JavaScript Mant\u0131\u011f\u0131<\/h4>\n<p>A\u015fa\u011f\u0131daki JavaScript kodunu <code>changelog-widget.js<\/code> ad\u0131nda bir dosyaya kaydedin. Bu kod, JSON verisini \u00e7ekecek, widget'\u0131 olu\u015fturacak ve HTML'e yerle\u015ftirecektir.<\/p>\n<pre><code class=\"language-javascript\">\/\/ changelog-widget.js\ndocument.addEventListener('DOMContentLoaded', () => {\n    const container = document.getElementById('changelog-widget-container');\n    if (!container) return;\n\n    const changelogDataUrl = 'changelog.json'; \/\/ JSON dosyan\u0131z\u0131n yolu\n    const displayLimit = 3; \/\/ Ba\u015flang\u0131\u00e7ta ka\u00e7 \u00f6\u011fe g\u00f6sterilece\u011fi\n\n    async function fetchChangelog() {\n        try {\n            const response = await fetch(changelogDataUrl);\n            if (!response.ok) {\n                throw new Error(<code>HTTP error! status: ${response.status}<\/code>);\n            }\n            const data = await response.json();\n            renderChangelog(data);\n        } catch (error) {\n            console.error('Changelog verileri y\u00fcklenirken hata olu\u015ftu:', error);\n            container.innerHTML = '<p>De\u011fi\u015fiklik g\u00fcnl\u00fc\u011f\u00fc y\u00fcklenemedi.<\/p>';\n        }\n    }\n\n    function renderChangelog(data) {\n        let currentDisplayCount = displayLimit;\n\n        const widgetHTML = <code><div id=\"changelog-widget\">\n                <h3>Yenilikler ve G\u00fcncellemeler<\/h3>\n                <ul id=\"changelog-list\"><\/ul>\n                <button id=\"changelog-toggle\">T\u00fcm\u00fcn\u00fc G\u00f6r<\/button>\n            <\/div><\/code>;\n        container.innerHTML = widgetHTML;\n\n        const changelogList = document.getElementById('changelog-list');\n        const changelogToggle = document.getElementById('changelog-toggle');\n\n        function updateList() {\n            changelogList.innerHTML = ''; \/\/ Listeyi temizle\n            data.slice(0, currentDisplayCount).forEach(entry => {\n                const listItem = document.createElement('li');\n                let changesHtml = entry.changes.map(change => <code><span>- ${change}<\/span><\/code>).join('');\n                \n                listItem.innerHTML = <code><strong>S\u00fcr\u00fcm ${entry.version}<\/strong>\n                    <span class=\"changelog-date\">${entry.date}<\/span>\n                    <p>${changesHtml}<\/p><\/code>;\n                changelogList.appendChild(listItem);\n            });\n\n            if (data.length > displayLimit) {\n                changelogToggle.style.display = 'block';\n                if (currentDisplayCount === data.length) {\n                    changelogToggle.textContent = 'Daha Az G\u00f6r';\n                } else {\n                    changelogToggle.textContent = 'T\u00fcm\u00fcn\u00fc G\u00f6r';\n                }\n            } else {\n                changelogToggle.style.display = 'none';\n            }\n        }\n\n        changelogToggle.addEventListener('click', () => {\n            if (currentDisplayCount === displayLimit) {\n                currentDisplayCount = data.length;\n            } else {\n                currentDisplayCount = displayLimit;\n            }\n            updateList();\n        });\n\n        updateList(); \/\/ \u0130lk render\n    }\n\n    fetchChangelog();\n});<\/pre>\n<p><\/code><\/p>\n<h4>Widget'\u0131 Ba\u015flatma<\/h4>\n<p>Yukar\u0131daki HTML, CSS ve JavaScript dosyalar\u0131n\u0131 projenizin k\u00f6k dizinine yerle\u015ftirin. <code>changelog.json<\/code> dosyas\u0131n\u0131 da ayn\u0131 dizine koydu\u011funuzdan emin olun. <code>index.html<\/code> dosyan\u0131z\u0131 bir taray\u0131c\u0131da a\u00e7t\u0131\u011f\u0131n\u0131zda, hafif de\u011fi\u015fiklik g\u00fcnl\u00fc\u011f\u00fc widget'\u0131n\u0131z\u0131n \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 g\u00f6receksiniz.<\/p>\n<h3>Performans ve Bak\u0131m Avantajlar\u0131<\/h3>\n<p>Kendi hafif de\u011fi\u015fiklik g\u00fcnl\u00fc\u011f\u00fc widget'\u0131m\u0131z\u0131 geli\u015ftirmenin getirdi\u011fi faydalar, sadece kod boyutuyla s\u0131n\u0131rl\u0131 de\u011fildir. Performans ve uzun vadeli bak\u0131m s\u00fcre\u00e7leri \u00fczerinde de \u00f6nemli olumlu etkileri vard\u0131r.<\/p>\n<h4>Daha H\u0131zl\u0131 Y\u00fckleme S\u00fcreleri<\/h4>\n<p>Harici k\u00fct\u00fcphanelerin ve \u00e7er\u00e7evelerin olmamas\u0131, widget'\u0131n ve dolay\u0131s\u0131yla sayfan\u0131n \u00e7ok daha h\u0131zl\u0131 y\u00fcklenmesini sa\u011flar. Bu, \u00f6zellikle mobil kullan\u0131c\u0131lar ve d\u00fc\u015f\u00fck bant geni\u015fli\u011fine sahip b\u00f6lgelerdeki kullan\u0131c\u0131lar i\u00e7in kritik bir avantajd\u0131r. Sayfa y\u00fckleme h\u0131z\u0131n\u0131n artmas\u0131, genel kullan\u0131c\u0131 deneyimini do\u011frudan iyile\u015ftirir.<\/p>\n<h4>D\u00fc\u015f\u00fck Kaynak T\u00fcketimi<\/h4>\n<p>Minimalist bir yakla\u015f\u0131mla geli\u015ftirilen widget, CPU ve bellek kullan\u0131m\u0131 a\u00e7\u0131s\u0131ndan da olduk\u00e7a verimlidir. Bu, sunucu kaynaklar\u0131n\u0131n daha etkin kullan\u0131lmas\u0131na ve istemci taraf\u0131nda daha sorunsuz bir \u00e7al\u0131\u015fma deneyimine olanak tan\u0131r. Taray\u0131c\u0131lar\u0131n daha az i\u015f yapmas\u0131, cihaz\u0131n pil \u00f6mr\u00fcn\u00fc bile olumlu etkileyebilir.<\/p>\n<h4>Kolay Bak\u0131m ve G\u00fcncelleme<\/h4>\n<p>Kod taban\u0131 k\u00fc\u00e7\u00fck ve ba\u011f\u0131ml\u0131l\u0131klardan ar\u0131nd\u0131r\u0131lm\u0131\u015f oldu\u011fu i\u00e7in, widget'\u0131n bak\u0131m\u0131 ve g\u00fcncellenmesi son derece kolayd\u0131r. Yeni bir \u00f6zellik eklemek veya bir hata d\u00fczeltmek, b\u00fcy\u00fck bir k\u00fct\u00fcphanenin karma\u015f\u0131k yap\u0131s\u0131 i\u00e7inde kaybolmak yerine, do\u011frudan ilgili kod b\u00f6l\u00fcm\u00fcnde yap\u0131labilir. Bu, geli\u015ftirme s\u00fcre\u00e7lerini h\u0131zland\u0131r\u0131r ve maliyetleri d\u00fc\u015f\u00fcr\u00fcr.<\/p>\n<h4>Esneklik ve Geni\u015fletilebilirlik<\/h4>\n<p>Vanilla JavaScript ile yaz\u0131lm\u0131\u015f bir widget, projenizin \u00f6zel ihtiya\u00e7lar\u0131na g\u00f6re kolayca \u00f6zelle\u015ftirilebilir ve geni\u015fletilebilir. Herhangi bir k\u0131s\u0131tlamaya tabi olmadan, istedi\u011finiz \u00f6zelli\u011fi ekleyebilir, tasar\u0131m\u0131 de\u011fi\u015ftirebilir veya farkl\u0131 veri kaynaklar\u0131yla entegre edebilirsiniz. Bu, projenizin gelecekteki b\u00fcy\u00fcmesi i\u00e7in b\u00fcy\u00fck bir esneklik sunar.<\/p>\n<h3>Sonu\u00e7<\/h3>\n<p>A\u011f\u0131r scriptlerin getirdi\u011fi performans ve karma\u015f\u0131kl\u0131k sorunlar\u0131na bir tepki olarak geli\u015ftirdi\u011fimiz bu hafif de\u011fi\u015fiklik g\u00fcnl\u00fc\u011f\u00fc widget'\u0131, modern web geli\u015ftirme prensiplerine uygun, verimli ve ba\u011f\u0131ms\u0131z bir \u00e7\u00f6z\u00fcm sunmaktad\u0131r. Vanilla JavaScript, minimalist CSS ve basit JSON veri yap\u0131s\u0131 kullanarak, hem geli\u015ftiriciler i\u00e7in kolay y\u00f6netilebilir hem de kullan\u0131c\u0131lar i\u00e7in h\u0131zl\u0131 ve ak\u0131c\u0131 bir deneyim sa\u011flad\u0131k. Kendi \u00f6zel ihtiya\u00e7lar\u0131n\u0131za g\u00f6re uyarlayabilece\u011finiz bu yakla\u015f\u0131m, web projelerinizde gereksiz y\u00fcklerden ka\u00e7\u0131narak daha iyi bir performans ve s\u00fcrd\u00fcr\u00fclebilirlik elde etmenize yard\u0131mc\u0131 olacakt\u0131r.<\/p>\n<h3>SSS (S\u0131k Sorulan Sorular)<\/h3>\n<h4>Neden mevcut k\u00fct\u00fcphaneleri (\u00f6rne\u011fin jQuery, React bile\u015fenleri) kullanmad\u0131n\u0131z?<\/h4>\n<p>Mevcut k\u00fct\u00fcphaneler genellikle genel ama\u00e7l\u0131d\u0131r ve sadece bir de\u011fi\u015fiklik g\u00fcnl\u00fc\u011f\u00fc widget'\u0131 gibi k\u00fc\u00e7\u00fck bir i\u015flev i\u00e7in t\u00fcm k\u00fct\u00fcphaneyi y\u00fcklemek, gereksiz dosya boyutu ve performans d\u00fc\u015f\u00fc\u015f\u00fc yarat\u0131r. Amac\u0131m\u0131z, en hafif ve en h\u0131zl\u0131 \u00e7\u00f6z\u00fcm\u00fc sunmakt\u0131, bu da vanilla JavaScript kullan\u0131m\u0131n\u0131 gerektirdi.<\/p>\n<h4>De\u011fi\u015fiklik g\u00fcnl\u00fc\u011f\u00fc verisini nas\u0131l g\u00fcncelleyebilirim?<\/h4>\n<p>Veriler <code>changelog.json<\/code> dosyas\u0131nda sakland\u0131\u011f\u0131 i\u00e7in, bu dosyay\u0131 d\u00fczenleyerek kolayca g\u00fcncelleyebilirsiniz. Yeni bir s\u00fcr\u00fcm veya de\u011fi\u015fiklik eklemek i\u00e7in JSON yap\u0131s\u0131na uygun yeni bir nesne eklemeniz yeterlidir. Sunucu taraf\u0131nda dinamik veri \u00e7ekmek isterseniz, <code>changelogDataUrl<\/code> de\u011fi\u015fkenini bir API u\u00e7 noktas\u0131na y\u00f6nlendirebilirsiniz.<\/p>\n<h4>Widget'\u0131 birden fazla yerde kullanabilir miyim?<\/h4>\n<p>Evet, widget'\u0131 sayfan\u0131zda birden fazla yerde kullanabilirsiniz. Ancak, her bir widget'\u0131n kendi benzersiz ID'ye sahip bir kapsay\u0131c\u0131 <code>div<\/code>'ine ihtiyac\u0131 olacakt\u0131r. JavaScript kodunu, birden fazla widget \u00f6rne\u011fini ba\u015flatabilecek \u015fekilde yeniden d\u00fczenlemeniz gerekebilir (\u00f6rne\u011fin, bir s\u0131n\u0131f veya veri \u00f6zniteli\u011fi kullanarak).<\/p>\n<h4>Tasar\u0131m\u0131 nas\u0131l \u00f6zelle\u015ftirebilirim?<\/h4>\n<p>Tasar\u0131m tamamen <code>changelog-widget.css<\/code> dosyas\u0131 taraf\u0131ndan kontrol edilir. Bu CSS dosyas\u0131n\u0131 kendi projenizin stil kurallar\u0131na g\u00f6re d\u00fczenleyerek veya \u00fczerine yeni kurallar ekleyerek widget'\u0131n g\u00f6r\u00fcn\u00fcm\u00fcn\u00fc kolayca \u00f6zelle\u015ftirebilirsiniz.<\/p>\n<h4>Hangi taray\u0131c\u0131lar\u0131 destekliyor?<\/h4>\n<p>Bu widget, <code>fetch<\/code> API'si ve temel DOM manip\u00fclasyonu kulland\u0131\u011f\u0131 i\u00e7in modern t\u00fcm taray\u0131c\u0131lar\u0131 (Chrome, Firefox, Safari, Edge vb.) destekler. Eski taray\u0131c\u0131lar i\u00e7in (\u00f6rne\u011fin IE11), <code>fetch<\/code> API'si i\u00e7in bir polyfill eklemeniz gerekebilir, ancak bu t\u00fcr taray\u0131c\u0131lar\u0131n kullan\u0131m oran\u0131 g\u00fcn\u00fcm\u00fczde olduk\u00e7a d\u00fc\u015f\u00fckt\u00fcr.<\/p>\n","protected":false},"excerpt":{"rendered":"Burada uygulaman\u0131z\u0131n di\u011fer i\u00e7erikleri yer alacak.","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"csco_page_header_type":"","csco_page_load_nextpost":"","csco_page_subscribe_form":"","csco_page_contact_form":"","footnotes":""},"categories":[1],"tags":[],"class_list":{"0":"post-36685","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-genel","7":"cs-entry","8":"cs-video-wrap"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.5 (Yoast SEO v25.3.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Hafif Bir De\u011fi\u015fiklik G\u00fcnl\u00fc\u011f\u00fc Widget&#039;\u0131 Geli\u015ftirmek: A\u011f\u0131r Scriptlere Veda - Kodlar\u0131n Gizemli D\u00fcnyas\u0131<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fatihsoysal.com\/blog\/hafif-bir-degisiklik-gunlugu-widgeti-gelistirmek-agir-scriptlere-veda\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Hafif Bir De\u011fi\u015fiklik G\u00fcnl\u00fc\u011f\u00fc Widget&#039;\u0131 Geli\u015ftirmek: A\u011f\u0131r Scriptlere Veda\" \/>\n<meta property=\"og:description\" content=\"Burada uygulaman\u0131z\u0131n di\u011fer i\u00e7erikleri yer alacak.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/hafif-bir-degisiklik-gunlugu-widgeti-gelistirmek-agir-scriptlere-veda\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2025-12-21T13:30:33+00:00\" \/>\n<meta name=\"author\" content=\"Fatih Soysal\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fatih Soysal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"13 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/hafif-bir-degisiklik-gunlugu-widgeti-gelistirmek-agir-scriptlere-veda\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/hafif-bir-degisiklik-gunlugu-widgeti-gelistirmek-agir-scriptlere-veda\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"Hafif Bir De\u011fi\u015fiklik G\u00fcnl\u00fc\u011f\u00fc Widget&#8217;\u0131 Geli\u015ftirmek: A\u011f\u0131r Scriptlere Veda\",\"datePublished\":\"2025-12-21T13:30:33+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/hafif-bir-degisiklik-gunlugu-widgeti-gelistirmek-agir-scriptlere-veda\/\"},\"wordCount\":2204,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/hafif-bir-degisiklik-gunlugu-widgeti-gelistirmek-agir-scriptlere-veda\/#respond\"]}],\"copyrightYear\":\"2025\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/hafif-bir-degisiklik-gunlugu-widgeti-gelistirmek-agir-scriptlere-veda\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/hafif-bir-degisiklik-gunlugu-widgeti-gelistirmek-agir-scriptlere-veda\/\",\"name\":\"Hafif Bir De\u011fi\u015fiklik G\u00fcnl\u00fc\u011f\u00fc Widget'\u0131 Geli\u015ftirmek: A\u011f\u0131r Scriptlere Veda - Kodlar\u0131n Gizemli D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2025-12-21T13:30:33+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/hafif-bir-degisiklik-gunlugu-widgeti-gelistirmek-agir-scriptlere-veda\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/hafif-bir-degisiklik-gunlugu-widgeti-gelistirmek-agir-scriptlere-veda\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/hafif-bir-degisiklik-gunlugu-widgeti-gelistirmek-agir-scriptlere-veda\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Hafif Bir De\u011fi\u015fiklik G\u00fcnl\u00fc\u011f\u00fc Widget&#8217;\u0131 Geli\u015ftirmek: A\u011f\u0131r Scriptlere Veda\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/\",\"name\":\"Fatihsoysal.com\",\"description\":\"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim\",\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\",\"name\":\"Fatih Soysal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"contentUrl\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"width\":512,\"height\":512,\"caption\":\"Fatih Soysal\"},\"logo\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\"},\"description\":\"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Hafif Bir De\u011fi\u015fiklik G\u00fcnl\u00fc\u011f\u00fc Widget'\u0131 Geli\u015ftirmek: A\u011f\u0131r Scriptlere Veda - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fatihsoysal.com\/blog\/hafif-bir-degisiklik-gunlugu-widgeti-gelistirmek-agir-scriptlere-veda\/","og_locale":"tr_TR","og_type":"article","og_title":"Hafif Bir De\u011fi\u015fiklik G\u00fcnl\u00fc\u011f\u00fc Widget'\u0131 Geli\u015ftirmek: A\u011f\u0131r Scriptlere Veda","og_description":"Burada uygulaman\u0131z\u0131n di\u011fer i\u00e7erikleri yer alacak.","og_url":"https:\/\/fatihsoysal.com\/blog\/hafif-bir-degisiklik-gunlugu-widgeti-gelistirmek-agir-scriptlere-veda\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2025-12-21T13:30:33+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"13 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/hafif-bir-degisiklik-gunlugu-widgeti-gelistirmek-agir-scriptlere-veda\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/hafif-bir-degisiklik-gunlugu-widgeti-gelistirmek-agir-scriptlere-veda\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"Hafif Bir De\u011fi\u015fiklik G\u00fcnl\u00fc\u011f\u00fc Widget&#8217;\u0131 Geli\u015ftirmek: A\u011f\u0131r Scriptlere Veda","datePublished":"2025-12-21T13:30:33+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/hafif-bir-degisiklik-gunlugu-widgeti-gelistirmek-agir-scriptlere-veda\/"},"wordCount":2204,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/hafif-bir-degisiklik-gunlugu-widgeti-gelistirmek-agir-scriptlere-veda\/#respond"]}],"copyrightYear":"2025","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/hafif-bir-degisiklik-gunlugu-widgeti-gelistirmek-agir-scriptlere-veda\/","url":"https:\/\/fatihsoysal.com\/blog\/hafif-bir-degisiklik-gunlugu-widgeti-gelistirmek-agir-scriptlere-veda\/","name":"Hafif Bir De\u011fi\u015fiklik G\u00fcnl\u00fc\u011f\u00fc Widget'\u0131 Geli\u015ftirmek: A\u011f\u0131r Scriptlere Veda - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2025-12-21T13:30:33+00:00","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/hafif-bir-degisiklik-gunlugu-widgeti-gelistirmek-agir-scriptlere-veda\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/hafif-bir-degisiklik-gunlugu-widgeti-gelistirmek-agir-scriptlere-veda\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/hafif-bir-degisiklik-gunlugu-widgeti-gelistirmek-agir-scriptlere-veda\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Hafif Bir De\u011fi\u015fiklik G\u00fcnl\u00fc\u011f\u00fc Widget&#8217;\u0131 Geli\u015ftirmek: A\u011f\u0131r Scriptlere Veda"}]},{"@type":"WebSite","@id":"https:\/\/fatihsoysal.com\/blog\/#website","url":"https:\/\/fatihsoysal.com\/blog\/","name":"Fatihsoysal.com","description":"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim","publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1","name":"Fatih Soysal","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","contentUrl":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","width":512,"height":512,"caption":"Fatih Soysal"},"logo":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/"},"description":"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.","url":"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/"}]}},"yoast_meta":{"yoast_wpseo_title":"","yoast_wpseo_metadesc":"","yoast_wpseo_canonical":""},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/36685","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/comments?post=36685"}],"version-history":[{"count":0,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/36685\/revisions"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=36685"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=36685"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=36685"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}