socialgekon.com
  • Главни
  • Алати И Упутства
  • Инжењерски Менаџмент
  • Уи Десигн
  • Пројектни Менаџмент
Интернет Фронт-Енд

Инит.јс: Зашто и како развијати помоћу ЈаваСцрипт-а са пуним стеком

Историја

Дакле, ви и ваш партнер имате сјајну пословну идеју. Јел тако?

Стално додајете све више и више нових могућности у свом уму.

Редовно питате потенцијалне клијенте за мишљење и сви су луди за вашом идејом.



Ок, значи, људима то треба. На овоме можете чак и зарадити. А једини разлог због којег је људи још увек не користе је тај што нисте остварили своју идеју. Још није имплементиран.

И на крају, једног дана сте одлучили: „Урадимо то!“. А сада већ покушавате да откријете како да примените пословну логику своје апликације, убитачне функције која ће померити производ напред. Имате идеју како то учинити и знате да сте способни за то.

И тако кажете: „Готово! Рад!' Имате успешан прототип! Преостаје само да се спакује у веб апликацију.

„Добро, направимо веб страницу“, кажете.

И тек тада схватите да за ово треба да изаберете програмски језик; треба да изаберете (модерну) платформу; треба да изаберете неке (модерне) оквире; треба да подесите (и купите) складиште, базе података и хостинг; треба да обезбедите интерфејс за администрацију; треба да обезбедите контролу приступа и систем за управљање садржајем. Желите да будете витки и окретни. Желите да користите технологију која ће вам помоћи да будете успешни и краткорочно и дугорочно. А њихов избор није увек тако лак.

Ево десетина и десетина архитектонских одлука које треба донети. И не желите да грешите: потребне су вам технологије које омогућавају брзи развој, подржавају сталну итерацију, максималну ефикасност, брзину, еластичност и још много тога. Желите да будете витки и окретни. Желите да користите технологију која ће вам помоћи да будете успешни и краткорочно и дугорочно. А њихов избор није увек тако лак.

„Презадовољан сам“, кажете и осећате се пренеражено. Енергија није онаква каква је била у почетку. Покушавате да сакупите своје мисли, али посла је превише.

Прототип полако бледи и умире.

Реченица

Након што сам из сличних разлога избацио гомилу идеја, одлучио сам да осмислим решење за овај проблем. Назвао сам овај пројекат ' У томе ’(Или инит.јс).

Главна идеја је користити један пројекат за покретање било ког пројекта, омогућити програмеру или техничком менаџеру да одједном донесу све главне одлуке и на основу њих добију одговарајући почетни образац. Знам да ће многи рећи: „Не можете применити једно решење за све проблеме“ (мрзитељи ће мрзети). И можда су у праву. Али можемо покушати да створимо решење које одговара целини и, по мом мишљењу, Инит се изборио са овим задатком.

Да би се постигао овај циљ, потребно је размотрити неколико важних тачака. Када сам развијао Инит, фокусирао сам се на следеће:

  • Компоненте

    Преглед компонената је једна од кључних карактеристика сваког система, јер омогућава поновну употребу софтверских компоненти у више пројеката, што је примарни циљ Инит-а. Али поглед на компоненте има споредни ефекат заменљивости, што ће бити наш главни савезник у суочавању са разним проблемима који су „готово“ исто решење.

  • Једноставност развоја

    Неки проблем негде има решење, најбоље применити у Браинф * цк ... било би готово немогуће написати, а камоли прочитати. То ће вас коштати пуно времена и труда. Генерално, требало би да користите језике и платформе који олакшавају развој, а не вама (и онима који ће то учинити касније).

  • Заједница

    Коју год платформу да одаберете, побрините се да око ње постоји велика заједница. Она која вам може помоћи код најчешћих и нестандардних проблема. Запамтите: јКуери можда није најбољи брзо , чист , и елегантна библиотека, али је победник захваљујући заједнице .

Показаћу вам како сам доносио одлуке приликом стварања Инит-а, имајући у виду ове циљеве.

У срцу Инита је парадигма „Фулл-стацк ЈаваСцрипт“ ’-‘ комплетан ЈаваСцрипт ’(неки га називају или део њега ‘МЕАН Стацк’ ). Радећи са таквим сетом, Инит вам омогућава да користите само један језик за стварање невероватно флексибилних и потпуно функционалних окружења за развој веб апликација. Укратко, Инит вам омогућава да користите ЈаваСцрипт не само за развој клијентских и серверских решења, већ и за изградњу, тестирање, шаблонирање итд.

Али застанимо на тренутак и запитајмо се: да ли је тако добра идеја користити ЈаваСцрипт?

Зашто сам изабрао ЈаваСцрипт

Као веб програмер радим од 1998. Док највише смо користили Перл за развој на страни сервера, али чак и тада смо имали ЈаваСцрипт за клијентску страну. Технологије веб сервера су се од тада много промениле: прошли смо неколико таласа језика и технологија као што су ПХП, АП, ЈСП, .НЕТ, Руби, Питхон. Програмери су почели да схватају да употреба два различита језика на серверу и клијенту отежава ствари. У почетку су покушаји комбиновања два дела под једним језиком резултирали стварањем компонената на страни клијента на серверу и компајлирањем у ЈаваСцрипт. Резултати су били испод очекивања и већина ових пројеката је пропала (на пример, АСП МВЦ, који је заменио) АСП.НЕТ веб обрасци и ГВТ која ће, по свему судећи, бити замењена у блиској будућности Полимер ‘Охм). Али у основи је то била сјајна идеја: један језик за клијента и сервер, који омогућава поновну употребу компонената и ресурса (ово је кључна реч: ресурса ).

Одговор је био једноставан: преместите ЈаваСцрипт на сервер.

заправо ЈаваСцрипт је рођен са серверске стране у Нетсцапе Ентерприсе Сервер, али језик у то време једноставно није био спреман. После година покушаја и неуспеха, појавило се Ноде.јс што није само донело ЈаваСцрипт серверу већ и идеју напред неблокирајуће програмирање заувек мењајући начин на који пишемо „фреад“ (И / О) (прочитајте више о овоме овде ).

Укратко: неблокирајуће програмирање има за циљ преусмеравање дуготрајних задатака на страну. То се обично ради дефинисањем шта треба да се догоди када се задатак доврши, омогућавајући процесору да се бави осталим захтевима током тог времена.

Али ове идеје нису биле нове, зашто су постале толико популарне доласком Ноде.јс? Једноставно програмирање без блокирања постиже се на неколико начина. Можда је најједноставније користити повратне позиве и петља догађаја - петља догађаја ... У већини језика ово није лак задатак: ако су повратни позиви прилично уобичајена функција, онда петља догађаја није и у неком тренутку нађете се у борби са спољним библиотекама (на пример: Питхон, са Твистер ). Али у ЈаваСцрипт-у повратни позиви они су део језика, баш као и петља догађаја, и сваки програмер који је чак испробао ЈаваСцрипт упознат је с њима (или их је бар користио, чак и ако није у потпуности разумео шта је петља догађаја ).

Одједном, сваки стартуп на Земљи може поново користити програмере (читај: ресурсе) и на клијентској и на серверској страни одлуком кадровски проблем , „Потребан нам је Питхон гуру.“

Па сад имамо невероватно брза платформа (захваљујући програмирању без блокирања) са језиком који је врло једноставан за употребу (захваљујући ЈаваСцрипт-у). Али да ли је то довољно? Хоће ли ово успети? Уверен сам да ће ЈаваСцрипт заузети важно место у будућности. Дозволите ми да објасним зашто:

  • Функционално програмирање

    ЈаваСцрипт је био први програмски језик донео парадигму функционално програмирање за масе (наравно, Лисп је био први, али већина програмера никада није створила потпуно готов производ у Лиспу). Лисп и Селф, главни језици, утицао на ЈаваСцрипт пуни су иновативних идеја. Ове идеје могу ослободити наш ум да истражују нове технике, обрасце дизајна и парадигме. Сви су прешли на ЈаваСцрипт. Баци поглед на монада , Црквени бројеви , или чак (практичнији пример) функције сакупљања Ундерсцоре.јс што вам може уштедети многе редове непотребног кода.

  • Динамичко програмирање и прототипско наслеђивање

    Објектно оријентисано програмирање без класа (и без бесконачне хијерархије класа) омогућава вам убрзање развоја (креирање објеката, додавање метода и њихово коришћење), али што је још важније, смањује време рефакторирања уз накнадну подршку, омогућавајући програмеру да модификује готове објекте уместо да мења наставу. Ова брзина и флексибилност стварају услове за брзи развој.

  • ЈаваСцрипт је Интернет

    ЈаваСцрипт је био дизајниран за Интернет овде је од почетка и он је не идући никуда ... Сви покушаји да га униште нису успели: погледајте, на пример, пад Јава аплети , замена ВБСцрипт'а ТипеСцрипт од Мицрософта (који се компајлира у ЈаваСцрипт), смрт Фласха од мобилног тржишта и ХТМЛ5. Немогуће је заменити ЈаваСцрипт без уништавања милиона веб страница, па би побољшање језика требало да нам буде циљ. И нико није погоднији за овај задатак Технички комитет 39 од ЕЦМА.

    Да, ЈаваСцрипт алтернативе се рађају сваки дан, на пример, ЦоффееСцрипт , ТипеСцрипт и милиони језика који се преводе у ЈаваСцрипт ... Ове алтернативе могу бити корисне у развојним фазама ( захваљујући изворним мапама ), али неће моћи дугорочно да замене ЈаваСцрипт из два разлога: њихове заједнице никада неће постати веће, а њихове најбоље карактеристике биће примењене у ЕЦМА Сцрипт (читај: ЈаваСцрипт). ЈаваСцрипт није монтажни језик, то је програмски језик на високом нивоу са изворним кодом који можете разумети, па га морате разумети.

Захваљујући пројекту Екпресс пројекат Можете створити сопствене алате за рад са изворним кодом: можете модификовати код, променити стил, додати компоненте, алате и било коју другу ствар коју можете замислити да се играте са Абстрацт Синтак Трее вашег програма као да је ДОМ стабло .

ЈаваСцрипт од почетка до краја: Ноде.јс и МонгоДБ

Дакле, то су били разлози за одабир ЈаваСцрипт-а. Сада ћу покушати да вас убедим да користите Ноде.јс и МонгоДБ.

  • Ноде.јс

    Ноде.јс је платформа за изградњу брзих, скалабилних мрежних апликација - нешто попут званичне странице то описује. Али Ноде.јс је више него само платформа. То је пожељно окружење за покретање ЈаваСцрипт апликација са И / О приступом. Чак и ако не планирате да пишете главну серверску апликацију у Ноде.јс, можете да користите алате изграђене на врху Ноде.јс да бисте побољшали свој развојни процес. На пример, Моцха.јс за јединичне тестове, Грунт.јс за аутоматску монтажу или чак Заграде за уређивање целокупног текста.

    Дакле, ако планирате писање серверских или клијентских апликација у ЈаваСцрипт-у, требали бисте се упознати са Ноде.јс-ом јер ће вам требати сваки дан. Има неких занимљивих алтернативе , али ниједан од њих нема ни 10% заједнице Ноде.јс.

  • МонгоДБ

    МонгоДБ оријентисан је на документе НоСКЛ база података која користи ЈаваСцрипт као језик упита, омогућавајући вам да затворите петљу са ЈаваСцрипт платформом. Али то није главни разлог за коришћење МонгоДБ-а.

    МонгоДБ не захтева опис шема табела тако да можете лако да сачувате предмете и тако се брзо прилагодите променама захтева. Плус, МонгоДБ је добар ваге и користи мап-редуце што га чини добрим избором за апликације великих података. МонгоДБ је толико флексибилан да се може користити као база података докумената без шеме, релационе меморије (али без трансакције ), или чак складишта кључ / вредност за кеширање.

Поглед на компоненту на страни сервера са Екпресс.јс

Приказ компонената на страни сервера је зезнут задатак. Али са Екпресс.јс (и Цоннецт.јс ) рођена је идеја „међуопреме“. По мом мишљењу, средњи софтвер је најбоља дефиниција компоненти сервера. Ако желите да га упоредите са познатим дизајнерским обрасцем, ово је нешто попут цевовода и филтера.

Основна идеја је да је ваша компонента део цевовода. Цјевовод обрађује захтјев (улаз) и генерира одговор (излаз), али ваша компонента није одговорна за цијели одговор. Уместо тога, он само модификује оно што је потребно, а затим прослеђује задатак следећем елементу у цевоводу. Када последњи елемент цевовода заврши обраду, одговор се шаље клијенту.

Те „ставке цевовода“ називамо „средњим слојем“. Очигледно је да можете створити две врсте средњих слојева:

  • Посредници : елементи који обрађују захтев и одговор, али нису у потпуности одговорни за сам захтев, па делегирају захтев на следећи слој.

  • Коначни елементи : елементи који су у потпуности одговорни за коначни одговор. Они обрађују и модификују захтев и одговор, али не би требало да их делегирају следећим слојевима. У пракси је способност делегирања на следећи слој и даље пожељна ради архитектонске флексибилности (на пример, за додавање другог слоја), чак и ако овај слој не постоји (у том случају се одговор шаље директно клијенту).

Као пример, замислите компоненту сервера за управљање корисницима. У погледу средњих слојева, имамо и коначне елементе и посреднике. Ставке листова треба да могу да креирају корисника и наводе кориснике. Али прво, требају нам посредници за потврду идентитета (јер не желимо да неовлашћени захтеви могу да креирају кориснике). Једном када креирамо брокера за потврду идентитета, можемо га једноставно уградити где год желимо да претворимо претходно отворену могућност у потврђену.

Апликације за једну страницу

Инит пројекат се фокусира на стварање апликације на једној страници (СПА) ... Већина програмера за веб је у искушењу да се окушају у изради апликација на једној страници. Направио сам их неколико (углавном за себе) и могу са сигурношћу да кажем да су то будућност веб апликација. Да ли сте икада упоређивали СПА са уобичајеном веб апликацијом на мобилној вези? Разлика у одговору је десетине секунди.

Да ли сте икада упоређивали СПА са уобичајеном веб апликацијом на мобилној вези? Разлика у одговору је десетине секунди.

Апликације на једној страници будућност су Интернета, па зашто онда производ производити у старом формату? Чест аргумент који чујем су потешкоће са СЕО-ом. Али ако све правилно примените, неће бити проблема: сам Гоогле предлаже врло добра инструкција како то учинити и овде има неколико добрих коментара.

Клијентски МВ * са Бацкбоне.јс, Марионетте.јс и Твиттер Боотстрап

Много је речено о МВЦ * оквири за апликације на једној страници ... Тежак је избор, али рекао бих да су три фаворита Бацкбоне.јс , Ембер.јс и Ангулар.јс .

Сви се сматрају врло добрим. Али која ће бити најбоља за вас ?

Нажалост, морам да признам да имам врло мало искуства са Ангулар.јс-ом, па ћу га искључити из ове расправе. Дакле, Ембер.јс и Бацкбоне.јс су два различита путања за решавање истог проблема.

Бацкбоне.јс је минималан, једноставан и пружа вам минимум који вам је потребан за писање једноставног СПА-а. С друге стране, Ембер.јс је комплетан и професионалан оквир за изградњу апликација на једној страници. Има више карактеристика, али такође има и стрмију кривуљу учења.

У зависности од величине апликације, решење може бити једноставно као и анализа односа коришћених / доступних функција. Даће вам добар наговештај.

У случају Инит-а, желео сам да покријем већину сценарија, па сам изабрао Бацкбоне.јс за једноставно СПА креирање, са Бацкбоне.Марионетте.Виев за компонентизацију. У таквој шеми свака компонента је једноставна апликација, а коначни производ може бити сложен колико год желим.

Стајлинг је такође велики задатак, али још једном можемо рачунати на оквире. Не постоји ништа боље за ЦСС Твиттер Боотстрап , има читав сет стилова који су спремни одмах не само за употребу, већ и за погодна модификација .

Боотстрап је направљен користећи језик МАЊЕ Боотстрап је отвореног кода, тако да га можете модификовати по потреби. Долази са гомилом УИ елемената са добра документација на локацији Боотстрап ... Поред тога постоји модел за модификације омогућавајући вам да лако креирате сопствене елементе. Ово је несумњиво најбољи избор за наш задатак.

Најбоље праксе: Грунт.јс, Моцха.јс, Цхаи.јс, РекуиреЈС и ЦоверЈС

На крају, можемо да истакнемо најбоље праксе и откријемо како нам Инит може помоћи да их применимо и одржавамо. Наше решење се заснива на неколико алата, од којих се сваки заснива на Ноде.јс.

  • Моцха.јс и Цхаи.јс :

    Ови алати омогућавају управљање развојним процесом помоћу ТДД или БДД , пружају инфраструктуру за организовање јединичних тестова и омогућавају им аутоматско покретање.

    Постоји хиљада оквири за ЈаваСцрипт тестове јединица. Зашто користити Моцха.јс? Кратки одговор је: флексибилан је и потпун.

    Дуг одговор: има две важне карактеристике (интерфејси, извештачи) и нема библиотеку тврдњи. Дозволи ми да објасним.

    • Интерфејси : Можда сте навикли на ТДД концепте попут јединичних тестова и апартмана, можда више волите БДД идеје са „описима“ и „обавезним“ спецификацијама понашања. Моцха.јс подржава оба приступа.

    • Репортери : покретање јединствених тестова генерише извештаје о резултатима и можете их форматирати са различитим извештачима. На пример, ако требате податке давати на сервер за континуирану интеграцију, можете одабрати извештаја посебно за овај задатак.

    • Недостатак библиотеке захтева (тврдња): Моцха.јс је створен тако да се са њим може користити било која библиотека тврдњи, што побољшава флексибилност. Постоје много опција , али овде вреди размислити о Цхаи.јс-у.

    Цхаи.јс је флексибилна библиотека за тврдње која вам омогућава да користите било који од три главна стила:

    • Изјава (тврдити): класични стил тврдњи из ТДД старе школе, на пример:

      assert.equal(variable, 'value');
    • Очекивање (очекује се): Стил ланчаних тврдњи, који се најчешће користи у БДД-у. На пример:

      expect(variable).to.equal('value');
    • Мора (требало би): Такође се користи у БДД-у, али ја више волим „сачекати“, јер „треба“ звучи као спецификација за понашање „он („ мора нешто учинити “). На пример:

      variable.should.equal(“value”);

    Цхаи.јс добро функционише са Моцха.јс. Користећи ове две библиотеке можете писати јединствене тестове у ТДД, БДД или било којем другом стилу који можете да замислите.

  • Грунт.јс :

    ГГрунт.јс вам омогућава да аутоматизујете израде, од једноставног копирања и лепљења датотека, до предкомпајлирања шаблона, компајлирања метајезика за стилове (тј. САСС и ЛЕСС), јединственог тестирања (са моцха.јс), рашчлањивања и умањења кода (на пример са УглифиЈС или Компилатор затварања ). Грунту можете додати сопствене аутоматизоване задатке или пронаћи решење које вам треба међу стотинама и стотинама постојећи додаци (опет, коришћење алата који стоје иза велике заједнице игра нам на руку). Грунт такође може надгледати датотеке и покрећу радње када се промене.

  • РекуиреЈС :

    РекуиреЈС може изгледати као само још један начин за учитавање модула уз АМД , али могу вас уверити да РекуиреЈС може и више. Да бисмо разумели зашто, прво морамо поменути идеју опсега модула (нпр. Демо.виевс.хелло), која помаже у одржавању глобалног опсега чистим скривањем сваког модула у свом опсегу. Проблем је што се ови модули не могу поново користити: ако промените простор имена једне од инстанци, то ће утицати на све инстанце. РекуиреЈС, пак, омогућава вам да у почетку креирате модуле за поновну употребу. (Такође вам помаже у употреби убризгавање зависност (Ињекција зависности) до ваши модули нису приступили глобалним променљивим .

  • ЦоверЈС :

    Покривеност кодом Је мера резултата теста. Као што и само име говори, библиотека пружа информације о покривености кодова ваше тренутне колекције тестова. ЦоверЈС мери покривеност кодом тестовима упућујући упутства (а не кроз редове кода попут ЈСЦовераге ) и генерисање инструментиране верзије вашег кода. Такође може да генерише извештаје за сервер континуирано интеграција Сервер.

Коришћење грана за пребацивање функција

Почео сам да радим на Иниту и требао ми је начин да укључим и искључим разне функције које би могле бити потребне у пројекту. Приступио сам радикалном приступу: користећи гит гране за постизање овог задатка.

Грубо речено, свака грана представља компоненту или функционалност коју би корисник можда желео да укључи. Ако градите пројекат од нуле, почните са минималном граном, а затим додајте друге технологије спајања са гранама које желите. Рецимо, на пример, да треба да започнемо пројекат са Бацкбоне.јс и Марионетте.јс. Можете почети са граном Бацкбоне.јс и спојити је у грану Марионетте.јс, додајући све функције које су вам потребне у будућности.

За сада се ова идеја спајања ради додавања функционалности може користити за технологије шаблонирања (попут Бацкбоне, Ноде, Екпресс). Али у будућности ћете моћи да се пребацујете између позадинских мрежа (на пример МонгоДБ на Постгрес) и решења на страни клијента.

Започните пројекат са Инит-ом и поставите на Хероку данас

Никада није постојао лакши начин за покретање пројекта. Само иди до ГитХуб спремиште , изаберите грану са најновијим урезивањима (тренутно усерманагер, међутим то се може променити у будућности), а затим:

  1. Направите директоријум за свој пројекат (или користите постојећи).

  2. Направите спремиште са гит инит (или користите постојеће спремиште).

  3. Додајте удаљено инит спремиште

    git remote add init git://github.com/picanteverde/init.git
  4. Набавите грану коју желите

    git pull init usermanager
  5. Набавите датотеку процеса за хероку

    git pull init heroku-webprocess
  6. Са инсталираним Хероку Тоолбелт, креирајте Хероку апликацију

    heroku create
  7. Гурните своју главну грану до Херокуа

    git push heroku master
  8. Посетите своју већ покренуту Хероку апликацију!

Сада можете започети развој своје функције убице са неколико редова кода. Истовремено ћете спроводити развој користећи најновије и најефикасније технологије, аутоматизоване што је више могуће.

Надам се да можете користити У томе да брзо примените своју нову велику идеју. Не заборавите да проверите спремиште Инит за нове функције и исправке грешака, јер се пројекат активно развија. Па, радујем се вашим повратним информацијама.


Материјал превео Ракхим Давлеткалиев, учесник Трансбунко - трговачка платформа за техничке преводе.

Како ставити водени жиг на своје фотографије и зашто би то требало да урадите

Уређивање

Како ставити водени жиг на своје фотографије и зашто би то требало да урадите
Да ли су тржишта од милион долара боља од тржишта од милијарде долара?

Да ли су тржишта од милион долара боља од тржишта од милијарде долара?

Инвеститори И Финансирање

Популар Постс
Преглед најбољих алата за мапирање на мрежи за веб програмере: План ка мапама
Преглед најбољих алата за мапирање на мрежи за веб програмере: План ка мапама
Мапе путовања купаца - шта су и како их направити
Мапе путовања купаца - шта су и како их направити
Како снимити запањујући црно-бели портрет на иПхоне-у
Како снимити запањујући црно-бели портрет на иПхоне-у
Скок у ВР / АР дизајн
Скок у ВР / АР дизајн
Уговори о заради: Структуре за разбијање мртвих тачака у преговорима
Уговори о заради: Структуре за разбијање мртвих тачака у преговорима
 
Започните са ИоТ развојем: Водич за Ардуино ЕСП8266
Започните са ИоТ развојем: Водич за Ардуино ЕСП8266
Финтецх методе процене за ометаче трансфера новца
Финтецх методе процене за ометаче трансфера новца
Водич за Повер Пивот за Екцел: Најчешће коришћени случајеви и примери
Водич за Повер Пивот за Екцел: Најчешће коришћени случајеви и примери
Оркестрирање тока посла у позадини у програму Целери за Питхон
Оркестрирање тока посла у позадини у програму Целери за Питхон
Снапцхат ИПО: Све је у вези са АРПУ, глупане
Снапцхат ИПО: Све је у вези са АРПУ, глупане
Категорије
МобилеОкретанЉуди И ТимовиДизајн БрендаБудућност ПослаДистрибуирани ТимовиУређивањеНаука О Подацима И Базе ПодатакаПрофитабилност И ЕфикасностТехнологија

© 2023 | Сва Права Задржана

socialgekon.com