Осы мақаланы жазу барысында JavaScript фреймворктары жасалмады .
Төменде CI Circle журналындағы «Бұл болашақ» мақаласы шабыттандырады. Түпнұсқасын мына жерден оқи аласыз . Бұл бөлім жай ғана пікір болып табылады және кез келген JavaScript фреймворк сияқты, оны тым байыпты қабылдауға болмайды.
Эй, мен бұл жаңа веб-жобаны алдым, бірақ шынымды айтсам, мен бірнеше жыл бойы вебті көп кодтаған жоқпын және ландшафттың аздап өзгергенін естідім. Сіз осы жердегі ең заманауи веб-әзірлеушісіз бе?
-Нақты термин - Front End инженері, бірақ иә, мен дұрыс адаммын. Мен 2016 жылы вебпен айналысамын. Визуализациялар, музыкалық ойнатқыштар, футбол ойнайтын ұшатын дрондар. Мен JsConf және ReactConf бағдарламаларынан жаңа ғана оралдым, сондықтан мен веб-қосымшаларды жасаудың соңғы технологияларын білемін.
Керемет. Маған пайдаланушылардың соңғы әрекетін көрсететін бетті жасау керек, сондықтан деректерді REST соңғы нүктесінен алып, оны қандай да бір сүзілетін кестеде көрсету керек және серверде бірдеңе өзгерсе, оны жаңарту керек. Мен деректерді алу және көрсету үшін jQuery-ді пайдалану мүмкін деп ойладым ба?
-О, құдай-ау, енді jQuery-ді ешкім қолданбайды. Сіз React үйренуге тырысуыңыз керек, бұл 2016 жыл.
О, жарайды. React дегеніміз не?
- Бұл Facebook-тегі кейбір жігіттер жасаған керемет кітапхана, ол кез келген көрініс өзгерістерін оңай өңдеуге мүмкіндік беру арқылы қолданбаңызға бақылау мен өнімділікті береді.
Бұл ұқыпты естіледі. Серверден деректерді көрсету үшін React пайдалана аламын ба?
-Иә, бірақ алдымен веб-бетіңізге кітапхана ретінде React және React DOM қосу керек.
Күте тұрыңыз, неге екі кітапхана?
-Сонымен бірі - нақты кітапхана, екіншісі - DOM-ды басқаруға арналған, оны қазір JSX-те сипаттауға болады.
JSX? JSX дегеніміз не?
-JSX - бұл JavaScript синтаксисі кеңейтімі, ол XML-ге ұқсайды. Бұл DOM-ті сипаттаудың тағы бір тәсілі, оны жақсырақ HTML деп ойлаңыз.
HTML-де не дұрыс емес?
-Бұл 2016. Енді ешкім HTML-ді тікелей кодтамайды.
Дұрыс. Қалай болғанда да, егер мен осы екі кітапхананы қоссам, онда мен React пайдалана аламын ба?
-Мүлдем емес. Сізге Babel қосу керек, содан кейін сіз React пайдалана аласыз.
Басқа кітапхана? Бабель деген не?
-Ой, Babel - JavaScript-тің кез келген нұсқасында кодтау кезінде JavaScript-тің нақты нұсқаларын бағыттауға мүмкіндік беретін транспилер. ReactJS-ті пайдалану үшін Babel-ді қосудың МІНДЕТТІ ЕМЕС, бірақ мұны жасамасаңыз, ES5-ті пайдаланудан бас тартасыз және нақты болайық, бұл 2016 жыл, қалған тамаша балалар сияқты сіз ES2016+ бағдарламасында кодтауыңыз керек.
ES5? ES2016+? Мен осы жерде адасып бара жатырмын. ES5 және ES2016+ дегеніміз не?
-ES5 ECMAScript 5 дегенді білдіреді. Бұл көптеген адамдардың мақсатты басылымы, өйткені оны қазіргі уақытта көптеген браузерлер енгізеді.
ECMAScript?
-Иә, білесіз бе, JavaScript скрипт стандарты 1999 жылы 1995 жылы шыққаннан кейін, JavaScript Livescript деп аталып, тек Netscape Navigator бағдарламасында жұмыс істеген кезде негізделген болатын. Ол кезде бұл өте күрделі болды, бірақ қазір бәрі анық және бізде бұл іске асырудың 7 басылымы бар.
7 басылым. Шынымен. Ал ES5 және ES2016+?
- Сәйкесінше бесінші және жетінші басылым.
Күте тұрыңыз, алтыншыға не болды?
- ES6 дейсіз бе? Иә, менің айтайын дегенім, әрбір шығарылым алдыңғысының жоғарғы жиынтығы, сондықтан ES2016+ пайдалансаңыз, алдыңғы нұсқалардың барлық мүмкіндіктерін пайдаланасыз.
Дұрыс. Неліктен ES2016+ нұсқасын ES6 арқылы пайдаланасыз?
-Ал, сіз ES6 пайдалана аласыз, бірақ асинхрондау және күту сияқты керемет мүмкіндіктерді пайдалану үшін ES2016+ пайдалану керек. Әйтпесе, дұрыс басқару ағыны үшін асинхронды қоңырауларды блоктау үшін корутиндері бар ES6 генераторларымен кептеліп қаласыз.
Сіз не айтқаныңызды түсінбеймін, бұл атаулардың бәрі шатастырып жатыр. Қараңызшы, мен жай ғана серверден деректерді жүктеп жатырмын, мен CDN-ден jQuery-ді қосып, AJAX қоңыраулары арқылы деректерді ғана ала алатынмын, неге мен мұны істей алмаймын?
-Бұл 2016 жылғы адам, енді ешкім jQuery қолданбайды, ол спагетти кодының бір тобына айналады. Мұны бәрі біледі.
Дұрыс. Сондықтан менің баламасым деректерді алу және HTML кестесін көрсету үшін үш кітапхананы жүктеу болып табылады.
-Ал, сіз осы үш кітапхананы қосасыз, бірақ оларды тек бір файлды жүктеу үшін модуль менеджерімен біріктіріңіз.
Мен түсінемін. Ал модуль менеджері дегеніміз не?
-Анықтама қоршаған ортаға байланысты, бірақ интернетте біз әдетте AMD немесе CommonJS модульдерін қолдайтын кез келген нәрсені айтамыз.
Riiight. Ал AMD және CommonJS ...?
-Анықтамалар. Бірнеше JavaScript кітапханалары мен сыныптарының өзара әрекеттесу жолын сипаттау жолдары бар. Сіз білесіз бе, экспортталады және талап етеді? Сіз AMD немесе CommonJS API анықтайтын бірнеше JavaScript файлдарын жаза аласыз және оларды біріктіру үшін Browserify сияқты нәрсені пайдалана аласыз.
Жарайды, бұл мағынасы бар... Менің ойымша. Browserify дегеніміз не?
-Бұл CommonJS сипатталған тәуелділіктерді браузерде іске қосуға болатын файлдарға біріктіруге мүмкіндік беретін құрал. Ол көптеген адамдар осы тәуелділіктерді npm тізілімінде жариялағандықтан жасалды.
npm тізілімі?
- Бұл ақылды адамдар код пен тәуелділіктерді модуль ретінде қоятын өте үлкен қоғамдық репозиторий.
CDN сияқты ма?
-Онша емес. Бұл кез келген адам кітапханаларды жариялай және жүктей алатын орталықтандырылған дерекқорға ұқсайды, сондықтан оларды әзірлеу үшін жергілікті түрде пайдалануға болады, содан кейін қаласаңыз, оларды CDN-ге жүктей аласыз.
О, Бауэр сияқты!
-Иә, бірақ қазір 2016 жыл, енді ешкім Bower қолданбайды.
О, мен ... сондықтан кітапханаларды npm-ден жүктеп алуым керек пе?
-Иә. Мысалы, егер сіз React қолданбасын қолданғыңыз келсе, сіз React модулін жүктеп алып, оны кодыңызға импорттайсыз. Мұны кез келген танымал JavaScript кітапханасы үшін жасауға болады.
О, бұрыштық сияқты!
- Бұрыштық 2015 жыл. Бірақ иә. Angular VueJS немесе RxJS және басқа тамаша 2016 кітапханаларымен бірге болады. Олар туралы білгіңіз келе ме?
React-ті ұстанайық, мен қазірдің өзінде көп нәрсені үйреніп жатырмын. Сонымен, егер маған React пайдалану керек болса, мен оны осы npm-ден аламын, содан кейін осы Browserify элементін қолданамын ба?
-Иә.
Бұл көптеген тәуелділіктерді алып, оларды бір-бірімен байланыстыру өте күрделі болып көрінеді.
-Міне, сондықтан сіз Browserify қызметін автоматтандыру үшін Grunt немесе Gulp немесе Broccoli сияқты тапсырмалар менеджерін пайдаланасыз. Сіз тіпті Мимозаны пайдалана аласыз.
Грунт? Gulp? Брокколи? Мимоза? Біз қазір не туралы айтып отырмыз?
- Тапсырма менеджерлері. Бірақ олар енді салқын емес. Біз оларды 2015 жылы қолдандық, содан кейін біз Makefiles файлдарын қолдандық, бірақ қазір барлығын Webpack арқылы орап аламыз.
Makefiles? Мен бұл негізінен C немесе C++ жобаларында қолданылады деп ойладым.
-Иә, бірақ интернетте біз күрделі нәрселерді жасауды ұнатамыз, содан кейін негіздерге ораламыз. Біз мұны жыл сайын жасаймыз, тек күтіңіз, біз бір-екі жылдан кейін желіде құрастыруды жасаймыз.
Күрсін. Сіз Webpack деп аталатын нәрсені айттыңыз ба?
- Бұл браузерге арналған басқа модуль менеджері, сонымен қатар тапсырмаларды орындаушы ретінде. Бұл Browserify бағдарламасының жақсырақ нұсқасы сияқты.
О, жарайды. Неліктен жақсырақ?
- Жақсы емес шығар, бұл сіздің тәуелділіктеріңізді қалай байланыстыру керектігі туралы көбірек пікір. Webpack CommonJS ғана емес, әртүрлі модуль менеджерлерін пайдалануға мүмкіндік береді, мысалы, жергілікті ES6 қолдайтын модульдер.
Мен осы CommonJS/ES6 нәрсемен өте шатастырамын.
-Бәрі бар, бірақ SystemJS-ке енді мән бермеу керек.
Иса Мәсіх, басқа зат есім-js. Жақсы, және бұл SystemJS деген не?
-Ал, Browserify және Webpack 1.x-тен айырмашылығы, SystemJS динамикалық модуль жүктеушісі болып табылады, ол бірнеше модульдерді бір үлкен файлға біріктірудің орнына бірнеше файлдарға байланыстыруға мүмкіндік береді.
Күте тұрыңыз, бірақ мен кітапханаларымызды бір үлкен файлға салып, оны жүктегіміз келеді деп ойладым!
-Иә, бірақ HTTP/2 келіп жатқандықтан, бірнеше HTTP сұраулары шынымен жақсырақ.
Күте тұрыңыз, сондықтан біз React үшін үш түпнұсқа кітапхананы қоса алмаймыз ба?
-Онша емес. Айтайын дегенім, сіз оларды CDN-ден сыртқы сценарийлер ретінде қосуға болады, бірақ сіз әлі де Babel-ді қосуыңыз керек.
Күрсін. Және бұл жаман емес пе?
-Иә, сіз бүкіл бабель-ядросын қосар едіңіз және бұл өндіріске тиімді болмас еді. Өндіріс кезінде сіз жобаңызды дайындау үшін бірқатар алдын ала тапсырмаларды орындауыңыз керек, бұл шайтанды шақыру рәсімін пісірілген жұмыртқа рецепті сияқты етеді. Активтерді кішірейту, оларды көріктендіру, кірістірілген CSS бүктемесінің үстінде, сценарийлерді кейінге қалдыру керек, сонымен қатар-
Мен алдым, алдым. Егер сіз кітапханаларды тікелей CDN-ге қоспасаңыз, мұны қалай істейтін едіңіз?
-Мен оны Typescript ішінен Webpack + SystemJS + Babel комбинациясы арқылы көшірер едім.
Типография? Мен JavaScript-те кодтаймыз деп ойладым!
-Typescript IS JavaScript немесе жақсырақ айтқанда, JavaScript-тің жоғарғы жиыны, нақтырақ айтқанда ES6 нұсқасындағы JavaScript. Біз бұрын айтқан алтыншы нұсқаны білесіз бе?
Мен ES2016+ қазірдің өзінде ES6 супер жиынтығы деп ойладым! НЕГЕ бізге Typescript деп аталатын нәрсе керек?
-Ой, өйткені ол бізге JavaScript-ті терілген тіл ретінде пайдалануға және орындау уақытындағы қателерді азайтуға мүмкіндік береді. Бұл 2016, JavaScript кодыңызға кейбір түрлерді қосуыңыз керек.
Және Typescript мұны жасайды.
-Flow, бірақ ол тек теруді тексереді, ал Typescript компиляциялануы қажет JavaScript қосымшасы болып табылады.
Күрсіну... және Flow?
-Бұл Facebook-тегі кейбір жігіттер жасаған статикалық түрдегі тексеру құралы. Олар оны OCaml-де кодтады, өйткені функционалды бағдарламалау керемет.
OCaml? Функционалды бағдарламалау?
-Бүгінгі күннің салқын балалары осылай пайдаланады, білесің бе, 2016 жыл? Функционалды бағдарламалау? Жоғары ретті функциялар? Карриинг пе? Таза функциялар?
Сіз не айтқаныңызды түсінбеймін.
-Басында ешкім жасамайды. Қараңыз, функционалдық бағдарламалау OOP-қа қарағанда жақсырақ екенін білуіңіз керек және бұл біз 2016 жылы пайдалануымыз керек.
Күте тұрыңыз, мен колледжде OOP үйрендім, бұл жақсы деп ойладым ба?
- Java-ны Oracle сатып алғанға дейін де солай болды. Айтайын дегенім, OOP бұрынғы кезде жақсы болған және ол әлі де қолданылуда, бірақ қазір барлығы өзгерту күйлері нәрестелерді тепкілеумен бірдей екенін түсінеді, сондықтан қазір барлығы өзгермейтін нысандар мен функционалды бағдарламалауға көшуде. Хаскелл жігіттері оны жылдар бойы шақырды, - және мені қарағаш жігіттерінен бастамаңыз, бірақ бақытымызға орай, қазір вебте бізде қарапайым JavaScript-те функционалды бағдарламалауды пайдалануға мүмкіндік беретін Рамда сияқты кітапханалар бар.
Сіз бұл үшін тек есімдерді тастап жатырсыз ба? Рамнда деген не?
-Жоқ. Рамда. Ламбда сияқты. Сіз Дэвид Чемберстің кітапханасын білесіз бе?
Дэвид кім?
- Дэвид Чемберс. Керемет жігіт. Орташа төңкеріс ойынын ойнайды. Рамдаға үлес қосушылардың бірі. Функционалдық бағдарламалауды үйренуге шындап кіріссеңіз, Эрик Мейжерді де тексеру керек.
Ал Эрик Мейжер...?
-Функционалды бағдарламалаушы жігіт. Керемет жігіт. Оның көптеген презентациялары бар, ол осы оғаш түсті көйлекті пайдалану кезінде Agile-ді қоқысқа тастайды. Сондай-ақ, Tj, Jash Kenas, Sindre Sorhus, Paul Irish, Addy Osmani-дің кейбір материалдарын тексеру керек.
Жарайды. Мен сені сонда тоқтатамын. Мұның бәрі жақсы және жақсы, бірақ менің ойымша, бұл жай ғана деректерді алу және көрсету үшін өте күрделі және қажет емес. Мен бұл адамдарды білудің немесе динамикалық деректері бар кестені жасау үшін барлық нәрселерді үйренудің қажеті жоқ екеніне сенімдімін. Реакцияға оралайық. React көмегімен серверден деректерді қалай алуға болады?
-Ал, сіз React көмегімен деректерді алмайсыз, тек React көмегімен деректерді көрсетесіз.
О, қарғыс атсын. Сонымен, деректерді алу үшін не пайдаланасыз?
-Серверден деректерді алу үшін Fetch пайдаланасыз.
Кешіріңіз? Деректерді алу үшін Fetch пайдаланасыз ба? Бұл заттарды атайтын адамға тезаурус керек.
-Расында да мен білемін? Бұл серверге қарсы XMLHttpRequests орындауға арналған жергілікті іске асыру атауы.
О, сондықтан AJAX.
-AJAX тек XMLHttpRequests қолдану болып табылады. Бірақ әрине. Fetch сізге уәделерге негізделген AJAX-ті орындауға мүмкіндік береді, содан кейін кері қоңырау шалудан аулақ болу үшін шеше аласыз.
Қайта қоңырау шалу тозақ?
-Иә. Серверге қарсы асинхронды сұрауды орындаған сайын, оның жауабын күту керек, содан кейін сізді функцияның ішінде тозақтан кері шақыру пирамидасы деп аталатын функцияны қосуға мәжбүр етеді.
О, жарайды. Ал бұл уәде оны шешеді ме?
-Әрине. Уәделер арқылы кері қоңырауларыңызды манипуляциялау арқылы сіз түсінуге оңай кодты жаза аласыз, оларды мазақ ете аласыз және сынай аласыз, сонымен қатар бір уақытта сұрауларды орындап, олардың барлығы жүктелгенше күте аласыз.
Мұны Fetch арқылы жасауға болады ма?
-Иә, бірақ сіздің пайдаланушы мәңгі жасыл шолғышты пайдаланса ғана, әйтпесе Fetch polyfill қосуыңыз керек немесе Request, Bluebird немесе Axios пайдаланыңыз.
Алла разылығы үшін қанша кітапхана білуім керек? Олардың қаншасы бар?
- Бұл JavaScript. Барлығы бірдей нәрсені істейтін мыңдаған кітапханалар болуы керек. Біз кітапханаларды білеміз, шын мәнінде бізде ең жақсы кітапханалар бар. Біздің кітапханалар өте жақсы, кейде біз оларға Гай Фиеридің суреттерін қосамыз.
Сіз Гай Фиери айттыңыз ба? Осымен бітейік. Бұл Bluebird, Request, Axios кітапханалары не істейді?
-Олар уәделерді қайтаратын XMLHttpRequests орындауға арналған кітапханалар.
JQuery-дің AJAX әдісі уәделерді қайтара алмады ма?
-Біз енді 2016 жылы «J» сөзін қолданбаймыз. Тек Fetch пайдаланыңыз және браузерде болмаған кезде оны политолтырыңыз немесе оның орнына Bluebird, Request немесе Axios пайдаланыңыз. Содан кейін асинхронды функция мен бум ішінде күту арқылы уәдені басқарыңыз, сізде дұрыс басқару ағыны бар.
Сіз үшінші рет күту туралы айтып отырсыз, бірақ мен оның не екенін білмеймін.
-Await сізге асинхронды қоңырауды блоктауға мүмкіндік береді, бұл деректерді қашан алуды жақсырақ басқаруға және жалпы кодты оқу мүмкіндігін арттыруға мүмкіндік береді. Бұл керемет, сізге тек Babel жүйесінде 3-кезең алдын ала орнатуды қосқаныңызға көз жеткізіңіз немесе синтаксис-асинхронды-функцияларды және синхронды-генераторға трансформациялау плагинін қолданыңыз.
Бұл ақылсыз.
-Жоқ, ақымақтық - TypeScript кодын алдын ала құрастырып, күту үшін оны Babel көмегімен көшіру керек.
Не? Ол Typescript құрамына кірмейді ме?
-Бұл келесі нұсқада болады, бірақ 1.7 нұсқасы бойынша ол тек ES6-ға бағытталған, сондықтан браузерде await қолданбасын пайдаланғыңыз келсе, алдымен ES6-ға бағытталған Typescript кодын, содан кейін ES5-ке дейін жететін Babel-ді құрастыру керек.
Осы кезде мен не айтарымды білмеймін.
- Қараңызшы, бұл оңай. Барлығын Typescript арқылы кодтаңыз. Fetch қолданбасын пайдаланатын барлық модульдер оларды ES6-ны мақсатты ету үшін құрастырады, оларды Babel көмегімен 3-кезеңді алдын ала орнатуға көшіреді және оларды SystemJS арқылы жүктейді. Егер сізде Fetch болмаса, оны политолтырыңыз немесе Bluebird, Request немесе Axios пайдаланыңыз және барлық уәделеріңізді күту арқылы орындаңыз.
Бізде оңайдың әртүрлі анықтамалары бар. Сонымен, осы рәсіммен мен ақырында деректерді алдым, енді мен оны React арқылы көрсете аламын, солай ма?
- Сіздің өтінішіңіз қандай да бір күй өзгерістерін өңдей ме?
Ерр, мен олай ойламаймын. Мен жай ғана деректерді көрсетуім керек.
-Ой, құдайға шүкір. Әйтпесе, мен сізге Flux және Flummox, Alt, Fluxible сияқты енгізулерді түсіндіруім керек еді. Шынымды айтсам, Redux пайдалану керек.
Мен бұл есімдердің үстінен ұшып кетемін. Тағы да, мен деректерді көрсетуім керек.
-Ой, егер сіз жай ғана деректерді көрсетіп жатсаңыз, сізге реакция қажет емес еді. Сіз үлгілеу қозғалтқышымен жақсы болар едіңіз.
Сіз қалжындап тұрсыз ба? Бұл күлкілі деп ойлайсыз ба? Жақындарыңызға осылай қарайсыз ба?
-Мен жай ғана сізге не қолдануға болатынын түсіндірдім.
Тоқта. Тек тоқта.
-Менің айтайын дегенім, егер ол жай үлгілеу механизмін пайдаланса да, мен сіздің орнында болсам, Typescript + SystemJS + Babel комбинациясын қолданар едім.
Мен Sub Zero бастапқы MK өлімін орындамай, деректерді бетте көрсетуім керек. Маған қандай шаблондық қозғалтқышты пайдалану керектігін айтыңыз, мен оны сол жерден аламын.
-Көп нәрсе, қайсысымен таныссыз?
Аты есімде жоқ. Бұл көп уақыт бұрын болды.
-jҮлгілер? jQote? ТАЗА?
Ерр, қоңырау соғылмайды. Тағы біреуі?
- Мөлдірлік пе? JSRender? MarkupJS? KnockoutJS? Оның екі жақты байланысы болды.
Тағы біреуі?
-PlatesJS? jQuery-tmpl? Руль? Кейбір адамдар оны әлі де пайдаланады.
Мүмкін. Соңғысына ұқсас бар ма?
-Мұрт, астын сызу? Менің ойымша, қазір тіпті Лодаштың да біреуі бар, бірақ бұл 2014 жылдың түрі.
Қате... мүмкін ол жаңарақ болған шығар.
- Нефрит? DustJS?
Жоқ.
- DotJS? EJS?
Жоқ.
-Нонжуктер? ECT?
Жоқ.
-Мах, бәрібір Coffeescript синтаксисі ешкімге ұнамайды. Нефрит?
Жоқ, сіз Джейд дедіңіз.
-Мен Пугты айтқым келді. Мен Джейд деп едім. Айтайын дегенім, Джейд енді Пуг.
Күрсін. Жоқ. есімде жоқ. Сіз қайсысын қолданар едіңіз?
-Мүмкін тек ES6 жергілікті үлгі жолдары.
Болжауға рұқсат етіңіз. Және бұл үшін ES6 қажет.
-Дұрыс.
Қандай браузерді пайдаланып жатқаныма байланысты Babel қажет.
-Дұрыс.
Бұл, егер мен бүкіл негізгі кітапхананы қоспай қосқым келсе, оны npm модулінен модуль ретінде жүктеуім керек.
-Дұрыс.
Ол үшін Browserify немесе Wepback немесе SystemJS деп аталатын басқа нәрсе қажет.
-Дұрыс.
Бұл Webpack болмаса, тапсырманы орындаушы басқарған дұрыс.
-Дұрыс.
Бірақ, мен функционалдық бағдарламалауды және терілген тілдерді пайдалануым керек болғандықтан, мен алдымен Typescript-ті алдын ала құрастыруым керек немесе осы Flow затын қосуым керек.
-Дұрыс.
Содан кейін күтуді пайдаланғым келсе, оны Бабельге жіберіңіз.
-Дұрыс.
Содан кейін мен Fetch, уәделерді, ағынды және барлық сиқырды басқаруды қолдана аламын.
-Егер оған қолдау көрсетілмесе, Fetch политолтыруды ұмытпаңыз, Safari оны әлі де өңдей алмайды.
Сіз білесіз бе. Менің ойымша, бұл жерде біз аяқталды. Шындығында, мен біттім деп ойлаймын. Мен интернетті бітірдім, JavaScript-ті толығымен бітірдім.
- Жақсы, бірнеше жылдан кейін бәріміз Elm немесе WebAssembly-де кодталатын боламыз.
Мен тек серверге қайта ораламын. Мен бұл көптеген өзгерістер мен нұсқаларды, басылымдарды, компиляторларды және транспилерлерді басқара алмаймын. JavaScript қауымдастығы мұны кез келген адам ұстай алады деп ойласа, ақылсыз.
-Сені естіп тұрмын. Сіз Python қауымдастығын қолданып көруіңіз керек.
Неліктен?
- Python 3 туралы естідіңіз бе?
Жаңарту: қателер мен қателерді көрсеткеніңіз үшін рақмет, мен мақаланы көрсетілгендей жаңартамын. HackerNews және Reddit- те талқылау .