, skabe en mobil anvendelse ved hjælp af wordpress, ioniske og angularjs,,,,, 297,,,,,,,, 108,,,,,,,, det cyber - mandag envato tuts + kurser vil blive reduceret til $3.- og' t miss.,,,,, hvad du vil lave,,, indførsel, i denne lektion, jeg vil forklare dig, skridt for skridt hvordan til at skabe en moderne, hybrid, mobile anvendelse (six og androide) af din wordpress websted under anvendelse af de nyeste teknologier.vi vil bruge ioniske ramme, ecmascript 6, new public management, webpack og apache cordova., ved afslutningen af denne lektion du får følgende anvendelse.det er kun tre moduler, et hjem, modul , der viser deres seneste stillinger, en post, modul, som viser en bestemt stilling, og en menu, modul, der viser menuen.,,,,, 1.værktøj, ioniske ramme, den smukke, open source - undtagen sdk for at udvikle fantastisk mobile apps med webteknologier.,, ioniske ramme økosystem er stort, herunder , ioniske cli (kommandolinjen værktøj), , ioniske presse (let presse meddelelser), og , ioniske platform, (backend tjenesteydelser).det er i øjeblikket en af de øverste open source - projekter på github med mere end 19 000 stjerner og over 600.000 apps skabt.,, ioniske dækker alle deres ansøgning er behov.men for denne forelæsning, vil jeg fokusere på ioniske ramme (eller ionisk sdk), som er en række angularjs direktiver (web komponenter) og tjenesteydelser.,, ecmascript 6 (es6), ecmascript 2015 (6. udgave, er den gældende version af den ecmascript sprog specifikation standard.es6 har officielt godkendt og offentliggjort som en standard, den 17. juni 2015 med det ecma generalforsamling.,, ecmascript 6 giver adgang til mange nye elementer, hvoraf mange er inspireret af coffeescript, herunder som en pil funktioner, generatorer, klasser, og vi tjekkede. , selv om es6 blev godkendt for nylig du kan bruge det nu ved hjælp af en javascript ansvarlige, som babelstårnet.,, node pakke manager (new public management), node pakke manager er den mest populære pakke manager i verden.antal kolli er vokser hurtigere end ruby, slange, og java tilsammen. new public management kører på node. det, hvorfor ikke bower?, vælger vi new public management, fordi brugen af både de og new public management i samme projekt er smertefuldt og commonjs støtte med de er ikke ligetil. commonjs definerer et modul format til at løse javascript anvendelsesområde uden for browser og new public management støtter dette. commonjs moduler kan være påkrævet med es5 eller es6.,, ////////es5 var vinkel = kræver ('angular), //es6 import vinkel fra "vinkel", webpack, efter min mening webpack er spillets regler i industri, udgang kompliceret grynter eller gulp manuskripter, som du er nødt til at opretholde.webpack giver dig mulighed for at kræve enhver form for dokumentation (. js,. kaffe,. css,. scss,. men heller ikke dér er menneskene sikre, jpg,. perspektivgruppen osv.) og rør dem gennem, læssemaskiner, skabe statisk aktiver, der er til rådighed for din ansøgning.,, forskellen med mus og sodavand er hovedparten af deres behov (minification og udarbejdelse), kan dækkes ved blot at tilføje en konfiguration, der er ikke nødvendigt at udarbejde manuskripter.for eksempel kræver en fræk fil, udarbejdelse af det, autoprefixing, og at sprøjte, der følger minified css i din ansøgning vil blive så enkelt, som det:,, (test: /. scss $/, lader: "stil!css!autoprefixer!siger "}, tror jeg ikke, jeg skal vise dig den ækvivalente med sodavand eller grynter.jeg tror, i forstår min pointe., 2.forudsætninger, det pædagogiske går ud fra, at du har:,, en grundlæggende viden om angularjs og ionisk, en wordpress websted, klar til at blive sat spørgsmålstegn ved (en lokal anlæg er fint), en maskine med node. js, new public management, bower (, vi får brug for nogle områder), monteret med så skrive adgang uden sudo, om projektet mappe, 3.anlæg, inden vi begynder, , du skal bruge for at installere to ting:,, en wordpress stik af, der bliver din blog i en fredfyldt api, selve ansøgningen, stille api, at hente stillinger til din wordpress anlæg, er du nødt til at installere wp resten api - stik af.sørg for, at du installere version , 1.2. x, som version 2 x er på vej., i wordpress, gå til, plugins > tilføje nye,., søgen efter , wp resten api (wp api),., klik, installere nu, til at installere det stik af. hvis anlæg vellykket, klik, aktivere stik af, at aktivere den.,, hvis anlægget var vellykket, åbne en browser og træde http://example.com/wp-json.dette bør give dem et svar, svarer til den, der nedenfor.,, ("navn": "lorem ipsum blog", "beskrivelse": "bare en wordpress sted", "url: http: //////////////yourdomainname. kom /wp json", "ruter": {} "godkendelse": {} "meta -": {}}, anvendelse, til at installere anvendelse, klon - arkivet, ved anvendelse af følgende kommandoer.,,klon - arkivet og give det et navn (her mytutorial) $git klon http://github.com/tutsplus/hybrid-wordpressionicangularjs.git mytutorialåbne projektet $cd mytutorial, næste, skabe en konfiguration fil og de tilhørende.,,kopi misligholdelse ud til din personlige ud $cp ud /default.config.json ud /config.jsoninstallere afhængighed $new public management installere, at mfor sikker på, at både anvendelsen og resten api - arbejde sammen, åben , ud /ud. json,.det er din personlige konfiguration dossier, der er ignoreret af torsk.ændre, base url, af api til en til din wordpress anlæg.,, ("api -": {"baseurl": "http://yourdomainname.com/wp-json"), , løb, løb devserver new public management og åbne http: //localhost: 8080 /webpack dev - / i en browser.hvis alt fungerer som forventet, du skulle være foran en løbende ansøgning, der viser deres wordpress stillinger.jeg har skabt en demo anvendelse for at give en idé om, hvad de kan forvente.,, nu hvor du kan se resultatet af, hvad vi er ude efter, lad mig gennemgå detaljerne. bemærke, at følgende kode prøverne er forenklet.du kan finde kilden kode på github.,, 4.afhængighed,,, new public management installere, kommando installeret flere biblioteker.nogle af dem er direkte afhængighed, mens resten er udvikling afhængighed, direkte besiddelser, er den direkte besiddelser er områder, at deres ansøgning har brug for med henblik på at køre ordentligt, når bygget.,, "områder" ("ioniske sdk": "^ 1.0.0", wp api - angularjs ":" ^ 1.0.0 "), meddelelse om, at ansøgningen ikke er direkte afhængige af angularjs, fordi ioniske sdk omfatter allerede angular.js, vinkel livfulde. js, angular-sanitize.js, og vinkel - router. js,.,, wp api - angularjs (wordpress wp api - klient for angularjs) er et sæt af angularjs tjenesteydelser at tillade kommunikationen med resten api - stik af, at de installeres tidligere.kan du se den fuldstændige liste over afhængighed af github.,, udvikling kolonier, udvikling afhængighed er for det meste webpack læssemaskiner.læssemaskiner er funktioner, der tager kilde til en ressource, fil, anvende nogle ændringer, og returnerer den nye kilde.vi har brug for at tage med. scss,. j.s. (es6). html og. json.du kan se en fuldstændig liste over udvikling afhængighed af github. 5.programarkitektur, jeg har udviklet angularjs ansøgninger i lang tid, og efter mange forsøg jeg har begået følgende struktur: en fil, der kan være udeladt lever under, src /eller /lib, servietter, hver angularjs modul har brug for en ordentlig mappe, hver modul fil, *. modul. js, skal definere en enestående namespace og være det eneste sted, hvor dette namespace synes), hvert modul fil , *. modul. js, skal erklære alle sine besiddelser (selv hvis områder allerede er injiceret i app), hver modul fil modul, *. . er, skal erklære alle sine configs, flyveledere, tjenesteydelser, filtre osv. alle ud, finansinspektørens service, filter, osv. skal eksportere en funktion (commonjs), hvis et modul har brug for en særlig stil,den. scss fil må leve under modulet, og disse henstillinger er stærke, som de kan forsikre, at de har løst koblet moduler, der kan være fælles for flere ansøgninger uden at løbe ind i problemer,.,,, det er, hvad anvendelsen mappe struktur ligner:,, l /├── menu /│ └── menu.module.js │ └── menu.html ├── hjem /│ └── home.module.js │ └── home.config.js │ └── home.controller.js │ └── home.html ├── post /│ └── post.module.js │ └── post.config.js │ └── post.controller.js │ └── post.html ├── scss /│ └── _variables.scss │ └── bootstrap.scss ├── index.js ├── index.html, punkt, når der anvendes webpack, en indgang er nødvendig.vores indgang er l /index. js,.den indeholder vores ansøgning er grundlæggende områder (f.eks. , ioniske. bundt, , der indeholder angularjs), vores hjemmelavede moduler, og tilføjer den frækhed, indgangssted. //ioner, vinkel & wp-api klient import ioniske sdk /frigivelse /er /ioniske. bundt "import" wp api - angularjs /dist /wp api - angularjs. bundt; //vores moduler fra import modhome. /home /home. modul. js; import fra modpost. /post /post. modul. js; import fra modmenu. /menu /menu. modul. js; //- indgang »import«. /scss /bootstrap ", nu, hvor vi har indført vores afhængighed, vi kan skabe vores ansøgning modul.lad os kalde vores app prototype.det har, ioniske,, , wp api - angularjs,, og vores hjemmelavede moduler som afhængighed, //skabe vores prototype modul lad mod = vinkel. - modul ('prototype "[" ionisk, wp api - angularjs, modhome, modmenu, modpost]), når modul skabt, kan vi eksport som en standard commonjs modul.,, eksport misligholdelse mod = forsvarsministeriet. navn, det er et godt eksempel på, hvad et angularjs modul skal se ud.,,,,,,, routing vores anvendelse har en side menu, < ion side menu - opfattelse = "menu" >, , som den menu, modul vil blive gjort.det har også en indhold afsnit , < ion nav opfattelse navn = "indhold" >, , som , hjem og post, moduler skal anføres.,,, - mener, at direktiv er en del af eu - erhvervsgrenen router, at ion - anvendelser.det siger $medlemsstat (eu - erhvervsgrenen router service) , hvor til at sætte deres modeller.på samme måde er det navn, direktiv knyttet til < ion nav udsigt > er en specialbygget ion - direktiv, der er ved hjælp af , eu - erhvervsgrenen synspunkt under.du kan betragte begge direktiver identiske.,,, her er en forenklet udgave af , rod, stater, stater, der alle moduler, deler:,, eksport misligholdelse funktion ($stateprovider) ('nginject; tilbage $stateprovider. stat ('root "(abstrakt: det er rigtigt, synspunkter: {'." (model: « < ion side menuer > < ion side menu indhold > < ion nav bar klasse = "positive" > < /ion nav bar > < ion nav opfattelse navn = "indhold" > og lt; /ion nav udsigt > < /ion side menu indhold > < ion side menu = "venstre" - side opfattelse = "menu" > < /ion side menu > < /ion side menuer > er}}})}, for flere oplysninger om navngivne synspunkter, der henvises til dokumentation om github.,, menu modul,,,,, l /├── menu /│ └── menu.module.js │ └── menu. html,,, menu, modul er meget enkel.dens formål er at tilføje en menu i < ion side menu >,.uden at dette modul, side menu er blank. menuen modul erklærer kun en ud fil, er det , ioniske og , iii. router, som afhængighed, import modconfig fra. /menu. ud ", lad mod = vinkel. - modul ('prototype. menu", - ion - "," iii. router ']); forsvarsministeriet. ud (modconfig) eksport misligholdelse mod = mod.name;,, de mest interessante er konfiguration. , vi ønsker ikke at skabe en stat i menuen modul, som det er tilgængelige overalt.vi dekorere den , rod, stat med menuen indhold.med , eu - erhvervsgrenens opfattelse = "menu", defineres i , rod, stat, vi har brug for til brug menuen @ rod, at henvise til det.,, eksport misligholdelse funktion ($stateprovider) ('nginject. $stateprovider. dekoratør ('views "(stat, forældre) = > (lad synspunkter = moderselskab (medlemsstat); hvis (state.name = = =" rod ") (synspunkter ['menu @ rod"] = (model: kræver (". /menu. html")}} tilbage synspunkter.})}, hjem, modul,,,,, lib /├── hjem /│ └── home.module.js │ └── home.config.js │ └── home.controller.js │ └── hjem. http: //,,. modul. js,,, hjem, modul viser latests stillinger af din wordpress websted.det er en ud fil, en registeransvarlige, og det afhænger af følgende biblioteker:,,, ioniske,,, -. router, wp api - angularjs,,, import modconfig fra. /home. ud; import fra modcontroller. /home. registeransvarlige«. lad mod = vinkel. - modul ('prototype. hjem "[" ion - "," iii. router, wp api - angularjs']); forsvarsministeriet. ud (modconfig); forsvarsministeriet. controller ('homecontroller, modcontroller) eksport misligholdelse mod = mod.name, hjemme. ud. er det tilføjer et nyt ud. medlemsstat, , rod. hjem, med /hjem, url, der har en model og en styreenhed (både i modul).,, eksport misligholdelse funktion ($stateprovider) ('nginject. $stateprovider. stat ('root. hjem, (url: "hjem", synspunkter:' indhold @ rod": {model: kræver (". /home en.html), kontrollør: "homecontroller som homectrl"}}})}, hjemme. - controller. js, er dette en forenklet version i den registeransvarlige logik.den indeholder to funktioner:,,, loadmore: denne funktion befolker , vm. stillinger.det bruger den , $wpapiposts, service, som er del af, wp api - angularjs, biblioteket.,, friske: denne funktion fjerner stillinger og opfordrer , loadmore, igen.,, eksport misligholdelse funktion ($anvendelsesområde, $log, $q, $wpapiposts) ('nginject "var vm = det; vm.posts = [...], vm.loadmore = loadmore; vm.refresh = genopfriske; funktion refresh() {vm.posts = ugyldig; loadmore(). endelig (() = > $anvendelsesområde. $udsendelse ('scroll. refreshcomplete')} funktion loadmore() {tilbage $wpapiposts. $getlist(). så ((respons) = > (vm.posts = (vm. stillinger).vm. stillinger. concat (svar. data): response.data. $anvendelsesområde. $udsendelse ('scroll. infinitescrollcomplete)})}}, hjemme. html, modellen er en ion igen, direktiv, som giver brugeren mulighed for at lade den side ved at side ned.det har også en ion uendelige skriftrulle, direktiv, som kræver, , loadmore, funktion, når frem til.stillinger vises ved hjælp af , ng gentager, direktiv.,,, tip:, brug, spor af, udtryk for bedre resultater.det mindsker dom manipulation, når en stilling er ajourførte.,,, < ion udsigt > < ion nav afsnit > hjem < /ion nav afsnit > < ion indhold > < ion igen trække teksten = "træk at genopfriske" - = "homectrl. refresh()" > < /ion genopfriskningstræning > < div klasse = "kort" ng gentager = "post i homectrl.posts spor af post. id" > <!- post - detaljer - > < /div > < ion uendelige rullen øjeblikkelig kontrol = "ægte" den uendelige = "homectrl. loadmore()" > < /ion uendelige rullen > < /ion indhold > < /ion opfattelse >, efter modul,,,,, l /├── post /│ └── post.module.js │ └── post.config.js │ └── post.controller.js │ └── post. html,,, post, modul viser kun en post. det har en ud - fil, en registeransvarlige, og det afhænger af den samme librairies som, hjem, modul.,, post. modul. js, import modconfig fra. /post. ud; import fra modcontroller. /post. registeransvarlige«. lad mod = vinkel. - modul ('prototype. post "[" ion - "," iii. router, wp api - angularjs']); mod.config (modconfig); forsvarsministeriet. controller ('postcontroller, modcontroller) eksport misligholdelse mod = mod.name, svarende til hjemmet modul, ud gør en ny stat, , rod. post, med , /post /: id, url.det er også registrerer en holdning og en styreenhed.,, post ud. er, at eksportere misligholdelse funktion ($stateprovider) ('nginject. $stateprovider. stat ('root. post ", (url:" /post /: id ", synspunkter: {indhold @ rod" (model: kræver (". /post. html"), kontrollør: "postcontroller som postctrl"}}})}, post. - controller. js, den registeransvarlige har post, der er specificeret i url , /post /: id, via , $stateparams, service (eu - erhvervsgrenen router tjeneste).,, eksport misligholdelse funktion ($anvendelsesområde, $log, $wpapiposts, $stateparams) (' nginject « var vm =. =) vm.post. $anvendelsesområde. $("$ionicview. ladt, lokalitet); funktion init() ($wpapiposts. $-($stateparams. id). ((reaktion) = > (vm.post = response.data.})}}, post. html, modellen er en ion spinner, direktiv, der udviser en rampe, mens der er hentet fra wordpress resten api - grænseflade.når posten er ladt, bruger vi et ioniseret kort at gøre forfatteren avatar, efter afsnit og post - indhold.,,,, tip: brug, bindonce, udtryk, ,:,, (indført i vinkel. 1.3) for at undgå at se data, der ikke vil ændre sig over tid.,, < ion udsigt > < ion nav afsnit > {{postctrl. post. afsnit) < /ion nav afsnit > < ion indhold > < ion spinner ng, hvis = "!postCtrl.post"></ion-spinner> <div class="list card" ng-if="postCtrl.post"> <div class="item item-avatar"> <img ng-src="{{::postCtrl.post.author.avatar}}"> <h2>{{::postCtrl.post.author.name}}</h2> <p>{{::postCtrl.post.date