Bu makala ýazylanda hiç hili JavaScript çarçuwasy döredilmedi.
Aşakdakylar, “CI Circle” -iň “Geljek” atly makalasy bilen ylham aldy. Asyl nusgasyny şu ýerden okap bilersiňiz . Bu eser diňe bir pikir we islendik JavaScript çarçuwasy ýaly, oňa çynlakaý garamaly däl.
Heý, bu täze web taslamasyny aldym, ýöne dogrymy aýtsam, birnäçe ýyl bäri kän web kodlamadym we peýza .yň birneme üýtgändigini eşitdim. Bu ýerdäki iň täze web dev?
- Hakyky termin “Front End” inereneri, ýöne hawa, men dogry ýigit. 2016-njy ýylda web edýärin. Wizualizasiýa, aýdym-saz pleýerleri, futbol oýnaýan uçýan dronlar, adyny sen goý. Justaňy JsConf we ReactConf-dan gaýdyp geldim, şonuň üçin web programmalaryny döretmek üçin iň täze tehnologiýalary bilýärin.
Salkyn. Ulanyjylardan iň soňky işjeňligi görkezýän sahypa döretmeli, şonuň üçin maglumatlary diňe REST ahyrky nokadyndan alyp, haýsydyr bir süzgüçli tablisada görkezmeli we serwerde bir zat üýtgese täzelenmeli. Maglumatlary almak we görkezmek üçin jQuery ulanyp biler öýdýärdim?
-Hu hudaý ýok, indi hiç kim jQuery ulanmaýar. React öwrenmäge synanyşyň, bu 2016-njy ýyl.
Aý, bolýar. Reaksiýa näme?
-Bu “Facebook” -da käbir ýigitler tarapyndan döredilen ajaýyp kitaphanadyr, islendik üýtgeşmeleri aňsatlyk bilen çözmäge mümkinçilik bermek bilen, programmaňyza hakykatdanam gözegçilik we öndürijilik getirýär.
Bu arassa görünýär. Serwerden maglumatlary görkezmek üçin React ulanyp bilerinmi?
-Hawa, ýöne ilki bilen web sahypaňyza kitaphana hökmünde React we React DOM goşmaly.
Duruň, näme üçin iki kitaphana?
-Şonuň üçin biri hakyky kitaphanadyr, ikinjisi DOM-ny dolandyrmak üçin, indi JSX-de suratlandyryp bilersiňiz.
JSX? JSX näme?
-JSX diňe XML-e meňzeýän JavaScript sintaksis giňeltmesi. DOM-y suratlandyrmagyň başga bir usuly, ony has gowy HTML diýip pikir ediň.
HTML-de näme boldy?
-Bu 2016-njy ýyl. Indi hiç kim HTML kodlaşdyrmaýar.
Dogry. Her niçigem bolsa, bu iki kitaphanany goşsam, React ulanyp bilerinmi?
- Notok. Babeli goşmaly, soň bolsa React ulanyp bilersiňiz.
Başga bir kitaphana? Babel näme?
-Oh, Babel, JavaScript-iň islendik wersiýasyny kodlasaňyz, JavaScript-iň belli wersiýalaryny nyşana almaga mümkinçilik berýän transpilerdir. ReactJS-ni ulanmak üçin Babeli goşmak hökman däl, ýöne şeýle etmeseňiz, ES5 ulanmaga ýapyşarsyňyz we hakyky bolalyň, bu 2016-njy ýyl, beýleki sowuk çagalar ýaly ES2016 + kodlamaly.
ES5? ES2016 +? Men bu ýerde ýitirim bolýaryn ES5 we ES2016 + näme?
-ES5 ECMAScript 5-i aňladýar. Bu neşir häzirki wagtda brauzerleriň köpüsi tarapyndan durmuşa geçirileli bäri köp adamy nyşana alýar.
ECMAScript?
-Hawa, bilýärsiňizmi, skript standarty JavaScript 1999-njy ýylda, 1995-nji ýylda ilkinji gezek çykandan soň, şol wagt JavaScript Livescript diýlip atlandyrylanda we diňe Netscape Navigator-da işleýärdi. Şol döwürde bu gaty bulaşykdy, ýöne şükür, indi hemme zat düşnükli we bizde 7 sany neşir bar.
7 neşir. Hakyky üçin. ES5 we ES2016 + bolsa?
-Bäşinji we ýedinji neşir.
Duruň, altynjy bilen näme boldy?
-Siz ES6 diýjek bolýarsyňyzmy? Hawa, diýjek bolýanym, her neşir öňküsiniň goşmaçasy, şonuň üçin ES2016 + ulanýan bolsaňyz, öňki wersiýalarynyň ähli aýratynlyklaryny ulanýarsyňyz.
Dogry. Onda näme üçin ES2016 + ES6-dan peýdalanmaly?
-Well, ES6 ulanyp bilersiňiz, ýöne async ýaly ajaýyp aýratynlyklary ulanmak we garaşmak üçin ES2016 + ulanmaly. Otherwiseogsam, dogry gözegçilik akymynyň asynkron çagyryşlaryny ýapmak üçin ES6 generatorlary bilen koroutinler bilen ýapyşýarsyňyz.
Justaňy näme diýendigiňizi bilemok, bu atlaryň hemmesi bulaşyk. Gör, men diňe bir serwerden bir topar maglumat ýükleýärin, öň diňe CDN-den jQuery goşup, diňe AJAX jaňlary bilen maglumatlary alyp bilýärdim, näme üçin beýle edip bilemok?
-Bu 2016 adam, indi hiç kim jQuery ulanmaýar, bir topar spagetti kody bilen gutarýar. Muny hemmeler bilýär.
Dogry. Şonuň üçin meniň alternatiwam, maglumatlary almak we HTML tablisasyny görkezmek üçin üç kitaphanany ýüklemek.
-Gep, şol üç kitaphanany öz içine alýarsyňyz, ýöne diňe bir faýl ýüklemek üçin olary modul dolandyryjysy bilen birikdiriň.
Görýärin. Modul dolandyryjysy näme?
- Kesgitleme daşky gurşawa bagly, ýöne webde adatça AMD ýa-da CommonJS modullaryny goldaýan islendik zady göz öňünde tutýarys.
Riiight. AMD we CommonJS bolsa…?
- Kesgitlemeler Birnäçe JavaScript kitaphanalarynyň we synplarynyň özara täsirleşmelidigini suratlandyrmagyň ýollary bar. Bilýärsiňizmi, eksport edýär we talap edýär? AMD ýa-da CommonJS API kesgitleýän birnäçe JavaScript faýly ýazyp bilersiňiz we olary birikdirmek üçin Browserify ýaly bir zady ulanyp bilersiňiz.
Bolýar, munuň manysy bar ... Meniň pikirimçe. Brauzerify näme?
-Bu, brauzerde işledip boljak faýllara bagly bolan “CommonJS” -ni baglanyşdyrmaga mümkinçilik berýän gural. Köp adamyň bu baglylyklary npm registrinde çap edýändigi sebäpli döredildi.
npm registr?
-Bu akylly adamlar kod we garaşlylygy modul hökmünde goýýan gaty uly köpçülik ammary.
CDN ýalymy?
- Aslynda ýok. Bu, merkezleşdirilen maglumatlar binýadyna meňzeýär, bu ýerde islendik adam kitaphanalary neşir edip we göçürip alyp biler, şonuň üçin olary ýerli ösüş üçin ulanyp bilersiňiz, isleseňiz CDN-e ýükläp bilersiňiz.
Bower ýaly!
-Hawa, ýöne 2016-njy ýyl, indi hiç kim Bower ulanmaýar.
Aý, görýärin ... şonuň üçin kitaphanalary npm-den göçürip almalymy?
-Hawa. Mysal üçin, “React” -i ulanmak isleseňiz, “React” modulyny göçürip alyp, koduňyza import edýärsiňiz. Muny her meşhur JavaScript kitaphanasy üçin edip bilersiňiz.
Aý, Angular ýaly!
-Angular 2015-nji ýyl. Yesöne hawa. Burç, VueJS ýa-da RxJS we beýleki ajaýyp 2016 kitaphanalary bilen birlikde bolar. Olar hakda öwrenmek isleýärsiňizmi?
React bilen ýapyşalyň, men eýýäm köp zady öwrenýärin. Şeýlelik bilen, “React” ulanmaly bolsam, ony şu npm-den alyp, soňam bu “Browserify” zady ulanýarynmy?
-Hawa.
Diňe bir topar garaşlylygy ele almak we birleşdirmek gaty çylşyrymly ýaly.
-Şonuň üçin Grunt ýa-da Gulp ýa-da Broccoli ýaly meseleler dolandyryjysyny Browserify-yň işlemegini awtomatlaşdyrmak üçin ulanýarsyňyz. Hek, hatda Mimozany hem ulanyp bilersiňiz.
Grunt? Gulp? Brokkoli? Mimosa? Näme hakda gürleşýäris?
- Dolandyryjylary soraň. Emma olar indi salkyn däl. Olary 2015-nji ýyldaky ýaly ulanýardyk, soň Makefiles ulanýardyk, ýöne indi hemme zady Webpack bilen örtýäris.
Makefiles? Bu esasan C ýa-da C ++ taslamalarynda ulanylýar diýip pikir etdim.
-Hawa, ýöne webde zatlary çylşyrymlaşdyrmagy, soň bolsa esaslara dolanmagy gowy görýäris. Her ýyl ýa-da şondan soň edýäris, diňe garaşyň, bir-iki ýyldan internetde gurnama ederis.
Dem al. Webpack diýilýän zady aýtdyňyzmy?
-Bu brauzer üçin başga bir modul dolandyryjysy. Browserify-iň has gowy wersiýasy ýaly.
Aý, bolýar. Näme üçin has gowy?
-Bagşy, belki has gowusy däl, garaşlylygyňy nädip baglamalydygy barada has köp pikir edilýär. Webpack, diňe bir CommonJS däl, dürli modul dolandyryjylaryny ulanmaga mümkinçilik berýär, şonuň üçin ýerli ES6 goldaýan modullary.
Bu umumy CommonJS / ES6 zat meni gaty bulaşdyrdy.
-Her kim bar, ýöne indi SystemJS bilen gyzyklanmaly däl.
Isa Mesih, başga bir at-js. Bolýar, bu SystemJS näme?
-Well, Browserify we Webpack 1.x-den tapawutlylykda, SystemJS dinamiki modul ýükleýjisidir, bir moduly bir uly faýlda baglamagyň ýerine birnäçe faýlda birnäçe faýlda baglamaga mümkinçilik berýär.
Duruň, ýöne kitaphanalarymyzy bir uly faýlda gurup, şony ýüklemek isleýäris öýdüpdim!
-Hawa, ýöne indi HTTP / 2 gelýändigi sebäpli birnäçe HTTP haýyşy has gowudyr.
Duruň, şonuň üçin diňe React üçin üç sany asyl kitaphanany goşup bilmerismi ??
- Aslynda ýok. Diýjek bolýanym, olary CDN-den daşarky skript hökmünde goşup bilersiňiz, ýöne şonda-da Babeli goşmaly bolarsyňyz.
Dem al. Bu erbet dälmi?
-Hawa, tutuş ýadrosy öz içine alardyňyz we önümçilik üçin täsirli bolmaz. Önümçilikde, Şeýtany çagyrmak däbini gaýnadylan ýumurtga reseptine meňzeýän taslamaňyzy taýýarlamak üçin deslapky meseleleriň birnäçesini ýerine ýetirmeli. Aktiwleri kiçeltmeli, olary ulaltmaly, bukjanyň ýokarsynda css setirini goýmaly, skriptleri yza süýşürmeli we-
Men aldym, aldym Şonuň üçin kitaphanalary göni CDN-e goşmasaňyz, nädip ederdiňiz?
-Men ony Webpack + SystemJS + Babel kombini ulanyp, Typescript-den geçirerdim.
Typazuw görnüşi? JavaScript-de kodlaýarys diýip pikir etdim!
-Typescript JavaScript, has gowusy, ES6 wersiýasyndaky JavaScript-iň goşmaça görnüşi. Bilýärsiňizmi, öň gürleşen altynjy wersiýamyz?
ES2016 + eýýäm ES6-nyň superseti diýip pikir etdim! Näme üçin indi “Typescript” diýilýän zat gerek?
-Oh, sebäbi JavaScript-i ýazylan dil hökmünde ulanmaga we iş wagtyndaky ýalňyşlyklary azaltmaga mümkinçilik berýär. 2016-njy ýyl, JavaScript koduňyza käbir görnüşleri goşmaly.
“Typescript” muny aç-açan edýär.
Şeýle hem ýazyň, diňe ýazuwy barlaýar, Typescript düzülmeli JavaScript-iň goşmaça görnüşi.
Dem al ... we akym?
-Bu “Facebook” -da käbir ýigitler tarapyndan döredilen statiki görnüşli barlagçy. OCaml-da kodladylar, sebäbi funksional programmirleme ajaýyp.
OCaml? Funksional programmirleme?
-Bu günler çagalaryň iň gowy ulanýan zady, bilýärsiňizmi, 2016? Funksional programmirleme? Orderokary tertipli funksiýalar? Garry? Arassa funksiýalar?
Justaňy näme diýendigiňizi bilemok.
-Bir başynda hiç kim edenok. Serediň, funksional programmirlemegiň OOP-dan has gowudygyny we 2016-njy ýylda ulanmalydygymyzy bilmelisiňiz.
Duruň, kollejde OOP öwrendim, bu gowy diýip pikir etdim?
-Şonuň üçin Oracle satyn almazdan ozal Java boldy. Diýjek bolýanym, OOP günlerde gowydy, häzirem ulanylýar, ýöne indi her kim üýtgeýän döwletleriň bäbekleri kowmak bilen deňdigine düşünýär, şonuň üçin indi her kim üýtgemeýän zatlara we funksional programmirleme geçýär. Haskell ýigitleri ençeme ýyl bäri jaň edip gelýärdi, we meni Elm ýigitleri bilen başlamaň - ýöne bagtymyza internetde Ramda ýaly kitaphanalarymyz bar, olar JavaScript-de funksional programmirlemegi ulanmaga mümkinçilik berýär.
Munuň üçin diňe atlary taşlaýarsyňyzmy? Ramnda näme?
-Ook. Ramda. Lambda ýaly. Deýwid Çambersiň kitaphanasyny bilýärsiňizmi?
Dawid kim?
-Dawid palatalary. Gowy ýigit. Orta agdarlyşyk oýnaýar. Ramda üçin goşant goşanlardan biri. Şeýle hem, funksional programmirlemegi öwrenmäge çynlakaý bolsaňyz, Erik Meijeri barlamaly.
Erik Meijer bolsa…?
- Funksional programmirleme ýigidi. Ajaýyp ýigit. Bu geň reňkli köýnegi ulanýarka Agile zyňýan bir topar prezentasiýasy bar. Şeýle hem, Tj, Jaş Kenas, Sindre Sorhus, Pol Irland, Addi Osmani- dan käbir zatlary barlamaly.
Bolýar. Men seni şol ýerde saklajak. Bularyň hemmesi gowy we gowy, ýöne meniň pikirimçe, diňe maglumatlary almak we görkezmek üçin gaty çylşyrymly we zerur däl. Dinamiki maglumatlar bilen tablisa döretmek üçin bu adamlary tanamagyň ýa-da şol zatlaryň hemmesini öwrenmegiň zerurlygynyň ýokdugyna ynanýaryn. React-a gaýdyp geleliň. React bilen serwerden maglumatlary nädip alyp bilerin?
-Well, aslynda React bilen maglumat getirmeýärsiňiz, diňe React bilen maglumatlary görkezýärsiňiz.
Aý, nälet bolsun! Onda maglumatlary almak üçin näme ulanýarsyňyz?
-Serwerden maglumatlary almak üçin Fetch ulanýarsyňyz.
Bagyşlaň? Maglumat almak üçin Fetch ulanýarsyňyzmy? Kim şol zatlara at daksa, tezis gerek.
-Men dogry bilýärin? Serweriň garşysyna XMLHttpRequests ýerine ýetirmek üçin ýerli ýerine ýetirişiň adyny alyň.
Aý, AJAX.
-AJAX diňe XMLHttpRequests ulanmak. Sureöne. Fetch, AJAX-ny wadalara esaslanyp ýerine ýetirmäge mümkinçilik berýär, şonda dowzahdan gaýdyp gelmezlik üçin çözüp bilersiňiz.
Jähennem?
-Hawa. Her gezek serwere garşy asynkron haýyş edeniňizde, onuň jogabyna garaşmaly bolarsyňyz, soň bolsa dowzahdan yzyna çagyrylýan piramida diýilýän bir funksiýanyň içinde bir funksiýa goşarsyňyz.
Aý, bolýar. Bu wada berlen zady çözýärmi?
-Ended. Çagyryşlaryňyzy wadalar arkaly dolandyrmak bilen, koda düşünmek, masgaralamak we synagdan geçirmek, şeýle hem bir wagtyň özünde haýyşlary ýerine ýetirip, hemmesi ýüklenýänçä garaşyp bilersiňiz.
Fetch bilenem edip bolarmy?
-Hawa, ýöne diňe ulanyjyňyz hemişe gök öwüsýän brauzeri ulanýan bolsa, Fetch polifillini goşmaly ýa-da Talap, Bluebird ýa-da Axios ulanmaly.
Taňrynyň razylygy üçin näçe kitaphanany bilmeli? Olardan näçesi bar?
-Bu JavaScript. Hemmesiniň şol bir zady edýän müňlerçe kitaphanasy bolmaly. Kitaphanalary bilýäris, aslynda iň gowy kitaphanalarymyz bar. Kitaphanalarymyz huuuge, käwagt bolsa Guy Fieri-iň suratlaryny goşýarys.
Gaý Fieri diýdiňizmi? Geliň muny gutaralyň. Bu Bluebird, Talap, Axios kitaphanalary näme edýär?
-Bu wadalary yzyna gaýtaryp berýän XMLHttpRequests ýerine ýetirmek üçin kitaphanalar.
JQuery-nyň AJAX usuly wadalary hem yzyna gaýtaryp bermedimi?
-Biz 2016-njy ýylda “J” sözüni ulanmaýarys. Diňe “Fetch” -i ulanyň we brauzerde ýok wagty polifillirläň ýa-da ýerine “Bluebird”, “Request” ýa-da “Axios” ulanyň. Soňra asynk funksiýasynyň içinde garaşmak bilen wadany dolandyryň, dogry gözegçilik akymy bar.
Üçünji gezek garaşyň, ýöne nämedigini bilemok.
-Await, asynkron jaňy blokirlemäge mümkinçilik berýär, bu maglumatlaryň haçan alynýandygyna we umumy kod okalmagyna ýokarlanmagyna has gowy gözegçilik etmäge mümkinçilik berýär. Ajaýyp, diňe Babelde 3-nji deslapky deslapky goşmaçany ýa-da sintaksis-async-funksiýalaryny we transform-asynk-generator pluginini ulanýandygyňyzy anyklamaly.
Bu däli.
-Nok, däli, Typescript koduny öňünden düzmeli we garaşmak üçin Babel bilen geçirmeli.
Wat? Typazuw görnüşine goşulmaýarmy?
-Bu indiki wersiýada ýerine ýetirilýär, ýöne 1.7 wersiýasyna görä diňe ES6 nyşana alynýar, şonuň üçin brauzerde garaşmagy ulanmak isleseňiz, ilki ES6-ny nyşana alýan Typescript koduňyzy, soň bolsa ES5-ni nyşana alýan Babel-i düzmeli.
Şu wagt näme diýjegimi bilemok.
-Gara, aňsat. Typesazgy görnüşinde hemme zady kodlaň. Fetch ulanýan ähli modullar, ES6-ny nyşana almak üçin düzýär, olary Babel bilen 3-nji deslapky deslapky görnüşde geçirýär we SystemJS bilen ýükleýär. “Fetch” ýok bolsa, ony polifillirläň ýa-da “Bluebird”, “Request” ýa-da “Axios” ulanyň we ähli wadalaryňyzy garaşyň.
Bizde aňsat kesgitlemeler bar. Şeýlelik bilen, bu däp bilen ahyrsoňy maglumatlary aldym, indi bolsa React bilen görkezip bilerinmi?
-Siziň anketaňyz haýsydyr bir döwlet üýtgemelerini çözjek bolýarmy?
Ralňyşlyk, beýle pikir etmeýärin. Men diňe maglumatlary görkezmeli.
-Oh, Hudaýa şükür. Otherwiseogsam, size Flux we Flummox, Alt, Fluxible ýaly amallary düşündirmeli bolardym. Dogrymy aýtsam, Redux ulanmaly.
Men diňe şol atlaryň üstünden uçjak. Againene-de diňe maglumatlary görkezmeli.
-Oh, diňe maglumatlary görkezýän bolsaňyz, başlamak üçin React gerek däldi. Şablon dwigateli bilen gowy bolardyňyz.
Sen oýun edýärsiňmi? Siziň pikiriňizçe bu gülkünçmi? Lovedakynlaryňyza şeýle garaýarsyňyzmy?
-Men näme ulanyp biljekdigiňizi düşündirýärdim.
Dur. Diňe dur.
-Diýjek bolýanym, diňe şablon hereketlendirijisini ulanýan bolsa-da, men sen bolan bolsam, Typescript + SystemJS + Babel kombini ulanardym.
Sub Zero-nyň asyl MK ölümini ýerine ýetirmän, sahypada maglumatlary görkezmeli. Diňe haýsy şablon motoryny ulanmalydygyny aýdyň we men ol ýerden alaryn.
-Käbir zat bar, haýsysyny tanaýarsyňyz?
Ug, adyny ýatda saklap bilemok. Köp wagt mundan ozal.
-jemliler? jQote? PURE?
Ralňyşlyk, jaň kakmaýar. Başga biri?
- Aç-açanlyk? JSRender? MarkupJS? KnockoutJS? Biriniň iki taraplaýyn baglanyşygy bardy.
Başga biri?
-PlatesJS? jQuery-tmpl? Tutuşlyklar? Käbir adamlar henizem ulanýarlar.
Belki. Iň soňkusyna meňzeş barmy?
-Mustache, aşagy? Meniň pikirimçe, hatda lodaşyňam dogrusyny aýtmaly biri bar, ýöne 2014-nji ýyl.
Ralňyşlyk .. belki has täze bolmagy mümkin.
-Jade? DustJS?
No.ok.
-DotJS? EJS?
No.ok.
-Nunjucks? ECT?
No.ok.
-Mah, her niçigem bolsa Coffeescript sintaksisini halamaýar. Jade?
, Ok, siz eýýäm Jeýdi aýtdyňyz.
-Pug diýjek boldum. Men Jeýdi göz öňünde tutdum. Diýjek bolýanym, Jade indi Pug.
Dem al. No.ok. Haýsyny ulanardyňyz?
-Bu diňe ES6 ýerli şablon setirleri.
Geliň, çaklaň. Munuň üçin ES6 gerek.
- Dogry.
Haýsy brauzeri ulanýandygyma baglylykda Babel zerur.
- Dogry.
Haýsy, esasy kitaphanany goşmazdan goşmak islesem, ony npm-den modul hökmünde ýüklemeli.
- Dogry.
Haýsy, Browserify ýa-da Wepback, ýa-da SystemJS diýilýän başga bir zady talap edýär.
- Dogry.
Webpack bolmasa, iň gowusy, iş ýörediji tarapyndan dolandyrylmalydyr.
- Dogry.
, Öne, funksional programmirleme we ýazylan dilleri ulanmaly bolanym üçin, ilki bilen “Typescript” -i öňünden düzmeli ýa-da “Flow” -y goşmaly.
- Dogry.
Soň bolsa garaşmak isleýän bolsam, Babele iber.
- Dogry.
Şonuň üçin men “Fetch” -i, wadalary we akymy we şol jadylary ulanyp bilerin.
- Diňe goldanmaýan bolsa, Fetch-i polifilleşdirmegi ýatdan çykarmaň, Safari henizem başaryp bilmeýär.
Nämäni bilýärsiň. Meniň pikirimçe, bu ýerde etdik. Aslynda gutardym öýdýän. Web bilen gutardym, JavaScript bilen düýbünden gutardym.
-Bu gowy, birnäçe ýyldan hemmämiz Elm ýa-da WebAssemble-de kodlaşdyrarys.
Men diňe arkasyna gaýdyp barjak. Diňe bu köp üýtgeşmeleri, wersiýalary we neşirleri, düzüjileri we göçürijileri başaryp bilemok. JavaScript jemgyýeti, kimdir biri muny dowam etdirip biler öýdýän bolsa, däli.
-Men seni eşidýärin. Soňra Python jemgyýetini synap görmeli.
Näme üçin?
-Python 3 hakda eşitdiňizmi?
Täzelenme: typazgylary we ýalňyşlyklary görkezeniňiz üçin sag boluň, makalany belläp geçişim ýaly täzelärin. “HackerNews” we “Reddit” -de çekişme .