Meteori on täyden pinon JavaScript-kehys webille ja mobiilisovellukset . Se on ollut olemassa vuodesta 2011, ja se on saanut vahvan maineen keskuudessa Meteor-kehittäjät ihanteellisen, helppokäyttöisen ratkaisun nopeaan prototyyppien muodostamiseen. Viime aikoina kehittäjät ovat kuitenkin huomanneet, että Meteor ei ole enää vain prototyyppien valmistus: se on valmis käytettäväksi kaupalliseen kehittämiseen. Sen tarjoamien pakettien arsenalilla, vankalla mongoDB / node.js -säätiöllä ja tarjoamalla koodauksen joustavuudella; Meteorin avulla se on helppo rakentaa vankat ja turvalliset reaaliaikaiset verkkosovellukset , kaiken käsittely selainohjelmasta palvelimeen tai tietokantaan.
Tämä Meteor-opetusohjelma opastaa sinua luomaan perusverkkosovelluksen Meteoriin - yksinkertaisen luettelon, jonka avulla käyttäjät voivat kirjautua sisään ja hallita kirjoluetteloa.
Miksi käyttää Meteoria? Lyhyt vastaus on 'koska Meteor on hauskaa'. Se tekee verkkosovellusten kehittämisestä helppoa. Se on helppo oppia, ja sen avulla voit keskittyä enemmän sovelluksesi toimivuuteen kuin tietojen synkronoinnin ja sivujen tarjoamisen perusteisiin.
Siinä on myös paljon toimintatapoja, jotka on rakennettu kätevästi sisään. Meteor suorittaa automaattisesti päivitykset, joten tietojen muutokset näkyvät välittömästi selainikkunassasi, ja jopa itse sovelluksen koodimuutokset siirretään kaikkiin selaimiin ja laitteisiin reaaliajassa. Meteorissa on sisäänrakennettu viivekorjaus, se on helppo ottaa käyttöön ja siinä on helposti asennettavat 'paketit', jotka käsittelevät kaikenlaisia toimintoja.
Vaikka se on suhteellisen uusi kehys, monet aloittelijat rakentavat jo Meteor-sovelluksia, mukaan lukien suhteellisen suuria palveluja, kuten Vastaavasti ja Teleskooppi .
Meteorin asentaminen * nix -järjestelmiin on yksi linja:
curl https://install.meteor.com/ | sh
Vaikka virallista tukea ei vieläkään ole, heidän Windows-esikatselunsa on tulossa mukavasti. Huhujen mukaan Windows-tuki toimitetaan 1.1-ohjelmalla, ja sen pitäisi tulla saataville huhti- tai toukokuussa 2015. Kuten Meteorin kaltaiselta älykkäästä kehyksestä voi odottaa, sovelluksen käynnistysohjelma edellyttää yhden komentorivin käynnistämistä:
meteor create book-list
Tämä luo hakemiston nimeltä ”book-list” ja täyttää sen jollakin kattilalevyllä ja riippuvaisella koodilla. Suorita sovellus kirjoittamalla vasta luotu hakemisto ja suorittamalla:
meteor
Avaa http://localhost:3000
selaimessasi ja näet seuraavat:
Voit myös tarkistaa sovelluksemme version 0 MeteorPad-sivustolta, joka on kuin JSFiddle for Meteor: Kirjaluettelo: Oletussovellus
Meteor tallentaa näkymänsä HTML-tiedostoihin. Jos avaat ”book-list.html”, näemme:
book-list {{> hello}} Click Me You've pressed the button {{counter}} times.
Meteor käyttää 'Blaze' -mallimoottoria vastausten hahmottamiseen näistä HTML-tiedostoista. Tuplakiinnikkeiden tulisi olla tuttuja kaikille, jotka ovat käyttäneet Handlebars.js: ää (tai muita vastaavia mallimoottoreita), ja niillä on samanlainen tehtävä tässä. Blaze tutkii lausekkeet jokaisen kaksoisoljeparin sisällä ja korvaa ne kummallakin näiden lausekkeiden tuottamalla arvolla.
Tässä yksinkertaisessa esimerkkiohjelmassa on vain kaksi kaksoisjousitettua lauseketta:
Ensimmäinen, {{> hei}}, kehottaa Blazeä sisällyttämään mallin nimeltä 'hei'. Tämä malli on määritelty tiedoston alaosassa olevassa osiossa.
Toinen, {{counter}}, on hieman monimutkaisempi. Jos haluat nähdä, mistä tämä 'laskuri' -arvo tulee, meidän on avattava 'book-list.js':
if (Meteor.isClient) { // counter starts at 0 Session.setDefault('counter', 0); Template.hello.helpers({ counter: function () { return Session.get('counter'); } }); Template.hello.events({ 'click button': function () { // increment the counter when button is clicked Session.set('counter', Session.get('counter') + 1); } }); } if (Meteor.isServer) { Meteor.startup(function () { // code to run on server at startup }); }
Jotkut asiat edellyttävät selitystä täällä. Ensin jaetaan osiin ”if (Meteor.isClient)” ja “if (Meteor.isServer)”. Muista, että meteori on täyden pinon kehys, joten kirjoittamasi koodi suoritetaan sekä palvelimella että asiakkaalla. Näiden ehtojen avulla voimme rajoittaa sitä: ensimmäinen lohko toimii vain asiakkaalla ja toinen vain palvelimella.
Toiseksi, siellä on Session.setDefault-kutsu - tämä alustaa selaimessa istunnon muuttujan nimeltä laskuri. Istuntomuuttujat toimivat vähän kuin globaalit Meteorissa (hyville ja sairaille). Istuntomuuttuja ei kuitenkaan näy suoraan kohdassa {{counter}}. Sen sijaan kyseinen laskurilauseke on 'auttaja', joka on määritelty Malline.hello.apuohjelmat-osiossa. Tämä auttaja yksinkertaisesti nappaa istuntomuuttujan arvon ja palauttaa sen.
Huomaa, että auttaja on ”reaktiivinen”. Tämä tarkoittaa sitä, että aina, kun istuntomuuttuja muuttuu, Meteor suorittaa tämän viittaavan auttajatoiminnon automaattisesti uudelleen ja Blaze päivittää selaimen automaattisesti uudella sisällöllä.
Asiakaskoodi valvoo myös tapahtumia “Template.hello.events” -palvelun kautta. Tunnistamme tapahtuman tapahtuman tyypin ja valitsimen mukaan (tässä tapauksessa 'napsautuspainike') ja kerrot sitten meteorille, mitä kyseisen tapahtuman pitäisi tehdä. Tässä tapauksessa istuntomuuttujaa kasvatetaan, mikä suorittaa uudelleen auttajatoiminnon ja puolestaan renderöi sisällön uudelleen.
Kaikki tämä on hyvä ja hyvä, mutta se ei ole Meteor-sovellus, jota haluamme tälle opetusohjelmalle.
Aloitetaan tämän sovelluksen muokkaaminen - näytämme staattisen, koodatun luettelon kirjoista. Toistaiseksi piilotamme luettelon kirjoista a istunnon muuttuja . IsClient-koodissa käytämme istuntomuuttujaa 'Template.hello.rendered' -toiminnon avulla heti, kun bookList-malli on renderoitu:
Template.hello.rendered = function() { Session.setDefault('books', [ {title: 'To Kill a Mockingbird', author: 'Harper Lee'}, {title: '1984', author: 'George Orwell'}, {title: 'The Lord of the Rings', author: 'J. R. R. Tolkien'}, {title: 'The Catcher in the Rye', author: 'J. D. Salinger'}, {title: 'The Great Gatsby', author: 'F. Scott Fitzgerald'} ]); };
Sitten palautamme istuntomuuttujan uudella auttajalla 'hei' -mallissa:
Template.hello.helpers({ books: function () { return Session.get('books'); } });
Ja näytä se näytöllä muuttuvan interpolaation kautta 'hei' -mallissa:
Here are your books:
{{ books }}
Voit tarkistaa tämän koodin toiminnassa Meteorpadilla: Book-List: Näytä istuntomuuttuja
Ensinnäkin on huomattava, että Meteor-palvelin havaitsi automaattisesti kooditietokantamme muutokset, työnsi uuden koodin asiakkaille ja kehotti asiakasta lataamaan uudelleen. Jopa sovelluksen käyttöönoton jälkeen voimme ottaa käyttöön muutoksia ja päivittää asiakkaamme automaattisesti pikakoodipainallusten avulla.
Tähän mennessä saamme tämän:
Hups, näytämme tiedot väärin. Blaze saa pisteitä tarkkuudesta täällä (miksi kyllä, se on joukko esineitä), mutta meidän on oltava hieman fiksumpia, jos haluamme näyttää kirjeluettelomme hyödyllisellä tavalla. Onneksi Blaze on erittäin helppoa työskennellä tietojoukkojen kanssa '#each' -direktiivin avulla:
Here are your books:
{{#each books}} - {{title}} by {{author}}
{{/each}}
Blaze-ohjelmassa '#each' toimii vähän kuin Angularin 'ng-repeat' -direktiivi - se iteroi matriisirakenteen läpi, asettaa nykyisen kontekstin matriisin nykyiselle objektille ja näyttää HTML: n toistuvasti '{{#each' sisällä …}} ”. Kirjalistamme näyttää tältä:
MeteorPadissa: Näytä istunnon muuttuja oikein
Ennen kuin jatkat, puhdistetaan koodi hieman.
Meteor antaa valtavan liikkumavaran koodipohjan järjestämisessä. Kuten näette, on vain muutamia kovia ja nopeita sääntöjä: mihin tahansa laitat HTML: n ja JavaScriptin, Meteor löytää sen. Tämä joustavuus on mukavaa, mutta se tarkoittaa sitä, että sinun on itse järjestettävä koodisi järkevällä tavalla, joten et ole juuttunut jättimäisen sekaannuksen ylläpitämiseen.
Nimeä ensin tämä 'hei' -malli uudeksi merkitykselliseksi, kuten 'bookList', ja korvaa kattilan HTML-koodi tällä:
book-list {{> bookList}} Here are some books:
{{#each books}} - {{title}} by {{author}}
{{/each}}
Toiseksi, jaetaan 'asiakas' ja 'palvelin' osat erillisiksi tiedostoiksi. Sovellushakemistossamme asetamme 'asiakas' -alihakemiston ja 'palvelin' -hakemiston - Meteor tietää automaattisesti suorittavan '/ client /' -tiedostot asiakkaalla ja ajaa '/ server /' -tiedostot palvelin. On hyvä tapa laittaa mallikoodi mallin mukaan nimettyyn JavaScript-tiedostoon, joten laitetaan asiakaskoodimme tiedostoon client / bookList.js. Voimme laittaa tällä hetkellä tyhjän palvelimen käynnistyskoodin kansioon ”server / startup.js”. Siirretään lopuksi mallikoodi 'client / bookList.html' -kohtaan.
Huomaa, että vaikka tämäkin on vaihdettu, Meteor löytää automaattisesti kaikki HTML- ja JavaScript-tiedostomme. Niin kauan kuin tiedosto on jonnekin kohdassa '/ client /' Meteor tietää ajavan sen asiakkaalla. Niin kauan kuin tiedosto on jonnekin kohdassa '/ server /' meteori tietää ajavan sen palvelimella. Jälleen kehittäjän tehtävä on pitää asiat järjestyksessä.
Joten nyt koodimme pitäisi näyttää tältä:
book-list {{> bookList}}
Here are some books:
{{#each books}} - {{title}} by {{author}}
{{/each}}
Template.bookList.rendered = function() { Session.setDefault('books', [ {title: 'To Kill a Mockingbird', author: 'Harper Lee'}, {title: '1984', author: 'George Orwell'}, {title: 'The Lord of the Rings', author: 'J. R. R. Tolkien'}, {title: 'The Catcher in the Rye', author: 'J. D. Salinger'}, {title: 'The Great Gatsby', author: 'F. Scott Fitzgerald'} ]); }; Template.bookList.helpers({ books: function () { return Session.get('books'); } });
Meteor.startup(function () { // code to run on server at startup }); ~~~ Check it out on MeteorPad: [Initial Code Cleanup](http://meteorpad.com/pad/MwvMcsBAzfbWwEXp3/Book-List:%20Initial%20Code%20Cleanup) Verify that everything's running correctly by checking the browser window and then we're good to move on to the next step. ## Using the Database in Meteor The Meteor server runs on top of a MongoDB database. In this section of our tutorial, we will move the static list of books out of the session variable and into that database. First, delete the Template.bookList.rendered code, so that we're no longer putting stuff into that session variable. Next, we should add that list of books to the database as fixture data when the server initializes. As you'd expect for MongoDB, Meteor stores data in 'collections'. So, we'll create a new collection for our books. To keep things simple we will name it 'books'. It turns out that both the client and the server will want to know about this collection, so we'll put this code in a new subfolder: '/lib/'. Meteor knows automatically that files in '/lib/' run on the client and the server. We'll create a file called 'lib/collections/books.js', and give it just one line of code: ~~~ js Books = new Meteor.Collection('books');
Selainikkunassa osoitti http: // paikallinen isäntä: 3000 , siirry kehittäjäkonsoliin ja tarkista Kirjat-arvo. Sen pitäisi nyt olla Mongo-kokoelma! Kokeile suorittaa ”Books.find (). Fetch ()”, niin saat tyhjän taulukon - mikä on järkevää, koska emme ole vielä lisänneet siihen kirjoja. Voimme yrittää lisätä kohteita konsoliin:
Books.insert({title: 'To Kill a Mockingbird', author: 'Harper Lee'})
Asioiden lisääminen konsoliin on melko tylsiä. Sen sijaan asetamme asiat niin, että kun palvelin käynnistyy, lisätään automaattisesti valaisintiedot tietokantaan. Palataan siis takaisin palvelimeen / startup.js ja lisätään tämä:
Meteor.startup(function () { if (!Books.findOne()) { Books.insert({title: 'To Kill a Mockingbird', author: 'Harper Lee'}); Books.insert({title: '1984', author: 'George Orwell'}); Books.insert({title: 'The Lord of the Rings', author: 'J. R. R. Tolkien'}); Books.insert({title: 'The Catcher in the Rye', author: 'J. D. Salinger'}); Books.insert({title: 'The Great Gatsby', author: 'F. Scott Fitzgerald'}); } });
Kun palvelin käynnistyy, lisätään valaisintiedot, jos tietoja ei ole läsnä. Voimme varmistaa tämän menemällä takaisin terminaaliin, pysäyttämällä meteoripalvelimen ja suorittamalla tämän komennon:
meteor reset
Huomaa: tulet harvoin tarvitsevat tämän komennon, koska se nollautuu - ts. tyhjentää - Meteorin käyttämä tietokanta. Jos Meteor-sovelluksessasi on käyttäjätietoja tietokannassa, sinun ei pitäisi suorittaa tätä komentoa. Mutta tässä tapauksessa selvitämme vain mitä testitietoja meillä on.
Käynnistämme palvelimen uudelleen:
meteor
Käynnistyksen yhteydessä Meteor suorittaa käynnistysrutiinin, tarkistaa, että tietokanta on tyhjä, ja lisää valaisimen tiedot. Tässä vaiheessa, jos menemme konsoliin ja kirjoitamme 'Books.find (). Fetch ()', saamme viisi kirjaa, jotka meillä oli aiemmin.
Tässä vaiheessa on jäljellä vain kirjojen näyttäminen ruudulla. Onneksi se on yhtä yksinkertaista kuin korvata 'return Session.get (' kirjat '); seuraavien kanssa kirjoissa auttaja:
return Books.find();
Ja olemme taas liiketoiminnassa! Sovellus näyttää nyt tietoja tietokannan kohdistimesta istuntomuuttujan sijaan.
Katso se MeteorPad: Siirtyminen tietokantaan
Esitän tämän sanomalla: 'älä tee tätä'.
Mitä luulet tapahtuvan, jos joku käynnistää tämän sovelluksen selaimessaan, menee konsoliin ja kirjoittaa 'Books.remove ({})'?
Vastaus on: he hävittäisivät kokoelman.
Joten, se on melko suuri turvallisuusongelma - käyttäjillämme on liian paljon pääsy tietokantaamme. Kuka tahansa asiakas voi käyttää koko tietokantaa. Paitsi että kuka tahansa asiakas voi tehdä mitään muutosta koko tietokantaan, mukaan lukien ”.remove ({})” -tietojen pyyhintä.
Tämä ei ole hyvä, joten korjataan se.
Meteor käyttää ns. ”Paketteja” toiminnallisuuden lisäämiseen. Mitkä moduulit ovat Node.js: lle ja jalokivet Rubylle, paketit ovat Meteorille niputettu toiminnallisuus. Paketteja on kaikenlaisille asioille. Selaa käytettävissä olevia tarkista atmos.js .
Oletus meteorisovellus, jonka teimme 'meteor create' -sovelluksella, sisältää kaksi pakettia nimeltä 'automaattinen julkaisu' ja 'epävarma'. Ensimmäisen paketin avulla asiakkailla on automaattinen pääsy koko tietokantaan, ja toisen avulla käyttäjät voivat suorittaa mitä tahansa toimia tietokannassa.
Poistetaan ne. Voimme tehdä sen suorittamalla seuraavat sovellushakemistosta:
meteor remove autopublish insecure
Kun se on valmis, näet luetteloluettelon tiedot katoavan ruudulta (koska sinulla ei ole enää pääsyä niihin), ja jos yrität Books.insert-puhelua, saat virheilmoituksen: 'insert failed : Pääsy evätty'. MeteorPadissa: Turvallisuus ylikuormitettu
Jos et ota mitään muuta tästä Meteor-opetusohjelmasta, muista tämä: kun asennat Meteor-sovellusta, muista poistaa paketit automaattisesti julkaistaviksi ja epävarmoiksi. Meteorilla on monia hyviä turvatoimia, mutta ne kaikki ovat turhaa, jos jätät nämä kaksi pakettia asennettuna.
Joten miksi Meteor sisällyttää nämä paketit automaattisesti ollenkaan, jos ne ovat niin vaarallisia tietoturvalle? Syynä on, että erityisesti aloittelijoille nämä kaksi pakettia helpottavat aloittamista - voit helposti virheenkorjata ja muokata tietokantaa selaimen konsolista. Mutta on hyvä käytäntö purkaa automaattinen julkaisu ja turvata mahdollisimman pian.
Joten korjasimme tuon aukon, mutta olemme esittäneet kaksi ongelmaa. Ensinnäkin meillä ei ole nyt pääsyä tietokantaan. Toiseksi meillä ei ole tapaa olla vuorovaikutuksessa tietokannan kanssa.
Käsitellään tässä ensimmäistä ongelmaa. Meteor tarjoaa turvallisen pääsyn tietokantaan saamalla palvelimen 'julkaisemaan' tietokannan osajoukon ja antamalla asiakkaan 'tilata' kyseisen julkaisun.
Luo ensin '/server/publications.js':
Meteor.publish('books', function() { return Books.find({}); });
Ja luomme /client/subscriptions.js:
Meteor.subscribe('books');
Katso se MeteorPadista: Julkaise ja tilaa
Palvelin 'julkaisee' kohdistimen, jolla on pääsy kaikkiin tietoihin, ja asiakas 'tilaa' sen toisesta päästä. Asiakas käyttää tätä tilausta täyttääksesi tietokannan peilikopion kaikilla kohdistimen tiedoilla. Kun käytämme 'Books.find (). Fetch ()' -sivustoa, näemme kaikki viisi objektia ja ne näytetään näytöllä kuten aiemmin.
Ero on nyt siinä, että on todella helppoa rajoittaa sitä, mitä asiakkaat voivat käyttää. Yritä vaihtaa julkaisu “find ()” tietojen osajoukkoon:
Meteor.publish('books', function() { return Books.find({}, {limit:3}); });
Nyt asiakas näkee vain kolme viidestä kirjasta, eikä lopuihin ole mitään tapaa. Tämä ei ole vain suuri hyöty turvallisuudesta (en näe kaikkien muiden pankkitilejä), mutta voit käyttää sitä tietojen jakamiseen ja välttää asiakkaan ylikuormitusta.
Olemme nähneet, kuinka asiakkaille annetaan lukuoikeus tietokantaan rajoitetulla ja turvallisella tavalla. Tarkastellaan nyt toista ongelmaa: kuinka annamme käyttäjien muuttaa tietokantaa antamatta heidän tehdä mitään haluamaansa? Paketin epävarmuuden poistaminen teki siitä asiakkaille pääsyn lainkaan - yritetään sallia kirjojen lisääminen uudelleen. Meteorissa teemme tämän lisäämällä 'menetelmä' palvelimelle. Lisätään menetelmä, joka lisää uuden kirjan, tiedostoon '/lib/collections/books.js':
Meteor.methods({ addBook: function(bookData) { var bookID = Books.insert(bookData); return bookID; } });
Kuten näette, tämä vie 'bookData' - tässä tapauksessa objektin, jolla on 'otsikko' ja 'kirjoittaja' kentät - ja lisää sen tietokantaan. Kun asiakkaasi latautuu uudelleen, voimme sitten kutsua tätä menetelmää asiakkaalta. Voit mennä konsoliin ja kirjoittaa jotain tällaista:
Meteor.call('addBook', {title: 'A Tale of Two Cities', author: 'Charles Dickens'})
Ja presto! Saat toisen kirjan kirjaluetteloon. Konsolin käyttö on sietämätöntä, joten jatketaan ja lisätään yksinkertainen lomake 'bookList' -mallin loppuun, jonka avulla voimme lisätä uusia kirjoja:
Title:
Author:
Ja voimme liittää sen JavaScriptiin käyttämällä tapahtumapaikkaa, kuten meillä oli alkuperäisessä testisovelluksessa:
Template.bookList.events({ 'submit .add-book': function(event) { event.preventDefault(); // this prevents built-in form submission Meteor.call('addBook', {title: event.target.title.value, author: event.target.author.value}) } });
Näet tämän toiminnassa MeteorPadissa: Menetelmät
Kun meillä oli epävarma ja automaattinen julkaisu, asiakkaat voivat käyttää ja muuttaa koko tietokantaa. Nyt kun epävarma ja automaattinen julkaisu on kadonnut, mutta julkaisujen, tilausten ja menetelmien avulla asiakkaat voivat käyttää tietokantaa ja olla vuorovaikutuksessa sen kanssa hallitusti.
Sivuhuomautuksena: Voit myös puuttua Meteorin tietoturvakysymyksiin käyttämällä sallimis- ja estämissääntöjä. Voit saada lisätietoja näistä ja joistakin syistä, mieluummin yllä olevaa lähestymistapaa osoitteessa discovermeteor.com .
Näyttää siltä, että olemme juuri kiertäneet takaisin alkuun, mutta on yksi tärkeä ero: nyt on todella helppoa rajoittaa pääsyä tietokantaan. Yritetään lisätä käyttäjiä tähän sovellukseen, jotta näet, miten tämä toimii. Lisätään kirjautumisjärjestelmä sovellukseemme, ja sen sijaan, että kaikki asiakkaat työskentelevät yhden koko järjestelmän kattavan kirjaluettelon kanssa, teemme sen, jotta jokainen käyttäjä voi vain lisätä tai lukea omaa kirjaluetteloa.
Siirry sovellushakemistoon ja asenna kaksi pakettia:
meteor add accounts-ui accounts-password
Siellä. Olet juuri lisännyt kirjautumisjärjestelmän sovellukseen. Nyt meidän on vain lisättävä kirjautumiskäyttöliittymä osoitteeseen book-list.html. Laita tämä yksi viiva rungon yläosaan:
{{> loginButtons}}
Sinun pitäisi nähdä kirjautumiskehote ruudun yläosassa:
Huomaa, että jos napsautat kirjautumislinkkiä, se pyytää sähköpostiosoitetta ja salasanaa. Voimme vaihtaa sen yksinkertaiseen käyttäjätunnuksen / salasanan kirjautumisjärjestelmään luomalla '/client/config.js', jossa on seuraava:
Accounts.ui.config({ passwordSignupFields: 'USERNAME_ONLY' });
Tässä vaiheessa voit kirjoittaa 'Meteor.userId ()' konsoliin, ja se palauttaa 'null'. Voit yrittää luoda tilin napsauttamalla linkkiä. Soittaessa “Meteor.userId ()” pitäisi nyt palauttaa tunnusmerkkijono. Palvelimella on pääsy tähän samaan tietoon ('this.userId'), joten on triviaalia saada 'lisätä kirjoja' -menetelmä pakottamaan käyttäjä kirjautumaan sisään ja sisällyttämään käyttäjätunnuskenttä:
Meteor.methods({ addBook: function(bookData) { if (this.userId) { bookData.userID = this.userId; var bookID = Books.insert(bookData); return bookID; } } });
Ainoa mitä on jäljellä, on rajoittaa asiakasta ja näyttää vain tämän käyttäjän lisäämät kirjat. Käytämme julkaisun kykyä kaventaa sitä, mitä asiakkaalla on pääsy:
Meteor.publish('books', function() { return Books.find({userID: this.userId}); });
Nyt julkaisu löytää vain kirjoja tältä käyttäjältä. Voimme käyttää käyttäjän ID: tä jopa Blaze-lausekkeista nimellä '{{currentUser}}'; ja voimme käyttää tätä '{{#if}}' -direktiivin (joka tekee juuri sen mitä luulet tekevän) avulla tietojen näyttämiseen vain, kun käyttäjä on kirjautunut sisään:
{{#if currentUser}} Here are your books:
{{#each books}} - {{title}} by {{author}}
{{/each}}
Title:
Author:
{{else}} Please log in to see your books
{{/if}}
Katso lopputulos MeteorPad: Käyttäjät-sivulta
Nyt voimme ottaa tämän Meteor-sovelluksen käyttöön Internetissä. Teemme tämän menemällä päätelaitteen sovellushakemistoon ja suorittamalla:
meteor deploy .meteor.com
Varmista, että olet korvannut '' todellisella, lyhyellä nimellä sovelluksen esiintymälle. Tämän komennon suorittaminen kehottaa sinua perustamaan tilin Meteoriin ja sitten asettamaan uuden sovelluksesi Meteorin testipalvelimille, jotta voit kokeilla sitä Internetissä.
Nopea esittely, tämä meteor.com-ratkaisu on kaikki mitä tarvitset. Meteor-tiimi ei ole ilmoittanut nimenomaisia rajoituksia palvelimiensa tallennustilalle tai kaistanleveydelle. Ainoa merkittävä rajoitus on, että jos sovellustasi ei käytetä pitkään aikaan, sivusto kestää muutaman sekunnin ylöspäin seuraavalle käyttäjälle .
Sitä vastoin meteor.com ei ole tarkoitettu kaupalliseen käyttöön. Mutta kun menet tuotantoon, on olemassa palvelualustana toimivia yrityksiä Modulus ja Digitaalinen valtameri jotka tekevät Meteor-sovellusten käyttöönotosta helppoa. Jos haluat ottaa meteorisovelluksen käyttöön omalle palvelimellesi, 'meteor ylös' tekee prosessista myös suoraviivaisen.
Onnittelut! Kun olet oppinut Meteoria, olet nyt luonut ja ottanut käyttöön yksinkertaisen reaaliaikaisen Meteor-verkkosovelluksen. Tämä on tietysti vain pieni askel kokonaisuuteen ominaisuuksien ja toiminnallisuuden universumissa. Jos pidät siitä, mitä olet tähän mennessä nähnyt, suosittelen lämpimästi Ensimmäinen meteorisovelluksesi David Turnbullilta , joka opastaa lukijoita luomaan monimutkaisemman sovelluksen, jossa on enemmän tietoa meteorien ominaisuuksista matkan varrella. Se on saatavana Kindle-kirjana pieneen hintaan ja ilmaisena PDF-tiedostona Turnbullin verkkosivustolla.
Haluat myös tutkia Meteorille saatavilla olevia paketteja. Yhdeksän kertaa kymmenestä vastaus 'miten teen meteorissa?' onko 'siihen on paketti'. 'Kuinka voin lisätä reitityksen sovellukseeni?' Sinä käytät Rautareititin . 'Kuinka voin tarjota RESTful-sovellusliittymän?' Sinä käytät RESTivus . 'Kuinka sisällytän yksikötestauksen?' Sinä käytät Nopeus . 'Kuinka voin lisätä skeeman vahvistuksia?' Sinä käytät Kokoelma 2 . Voit helposti eksyä Atmosphere.js tarkastelemalla kaikkia saatavilla olevia paketteja.
Kuten tästä opetusohjelmasta näet, Meteor on yksinkertainen ja hauska kirjoittaa sovelluksia, mutta olisin pahoillani, jos en mainitsisi haittoja.
Meteori on edelleen suhteellisen epäkypsä. Se saavutti 1.0 viime lokakuussa, ja se johtaa joihinkin ongelmiin. Jos haluat tehdä jotain hämärää, kukaan ei ole vielä kirjoittanut pakettia tälle toiminnolle. Olemassa olevilla paketeilla on todennäköisesti vikoja yksinkertaisesti siksi, että niitä ei ole ollut tarpeeksi kauan kaikkien ongelmien selvittämiseksi.
Skaalaus voi olla myös jonkin verran tuntematon Meteorin kanssa. On paljon Meteor-sivustoja, jotka skaalautuvat kohtuulliseen määrään käyttäjiä, mutta muutama erittäin suuri sivusto - ei mitään Facebookin tai LinkedInin tilauksessa, jossa on kymmeniä tai satoja miljoonia käyttäjiä.
Useimmissa sovelluksissa Meteor on kuitenkin täydellinen valinta, koska se on mahdollisuus lyhentää kehitysaikaa ja osallistua jonkin suuren aloitukseen.