Les applications web ré-inventées
Wouahou, j'ai trouvé un truc dans le navigateur, on va l'appeler WEB 2.0 !
Et,



curl https://install.meteor.com | /bin/sh
meteor create lyonJS && cd $_
meteor add bootstrap
meteor add accounts-basemeteor add accounts-uimeteor add accounts-password// et oumeteor add accounts-facebookmeteor add accounts-twittermeteor add accounts-githubmeteor add accounts-googlemeteor add accounts-meetupmeteor add accounts-weibo

npm install -g meteorite npm install -g yo npm install -g generator-meteor mkdir your-new-project && cd $_ yo meteor[...]meteor update && meteor
<body> {{> error}}{{> list}} </body><template name="error"> {{getError}} </template><template name="list"> <h1>Votez pour un sujet</h1> {{> loginButtons}} <ol id="listSubjects"> {{#each subjects}} <li>{{> subject}}</li> {{/each}}</ol>{{#unless subjects}} Aucun sujet en cours.{{/unless}} </template>
if (Meteor.isClient) { // useless if code in client folderTemplate.error.helpers({ getError: function () { return Session.get('error'); } });}
Session.set('error','Arrgh erreur interne inconnue');
test sur http://lyonjs.meteor.com et la console
Au niveau online : DDP (Collections, Streams), et Deps
Subjects = new Meteor.Collection('my-subjects');Subjects.insert({label: "LyonJS like Meteor"});
Subjects = new Meteor.Collection('my-subjects');
Subjects.insert({label: "LyonJS like Meteor"});Subjects.update(myId, {$set: {aNewField: itsValue}});Subjects.remove({_id: oneId});Subjects.find().forEach(function(item) {console.log(item);});
Template.list.events({'focus #fldNewSubject' : function funcCleanEror() { Session.set('error', ''); },'click #btnNewSubject': function funcDisplayLog() {Subjects.insert({label: whatEverYouWant});});
Evénements disponibles:
focus, click, keyX, mouseX ... + selector
Meteor.methods({ rmSubject: function funcRmSubject(id) { var user = Meteor.user(), subject = Subjects.findOne({_id: id}); if (this.isSimulation) console.log('client-side only');if (!isAdmin()) return new Meteor.error(403, 'Suppression de sujet réservé aux admins.'); if (!subject) return new Meteor.error(404, 'Sujet non trouvé, suppression impossible'); return Subjects.remove(id);} });
Et ce code peut être commun au client et serveur : gain de temps pour le controle de vos formulaires
// installationsudo npm install -g laika// nouvelle instance de MongoDb mongod --smallfiles --noprealloc --nojournal// installer phantomJssudo npm install -g phantomjs
Pour déployer son application sur http://lyonjs.meteor.com
meteor deploy lyonjs
meteor bundle lft
npm install -g meteorite
parts install meteor
mrt remove insecure// Et gérer la collection avec les méthodes Allow / Deny
mrt remove autopublish mrt add iron-routermkdir monApp/packages/lyonJS && cd $_touch package.js smart.json lyonJS.js lyonJStests.js
cd monApp/packages/lyonJSmeteor test-packages ./
// remplacer les insert/delete/update client-side par :Meteor.call('addSubject', [params]);Meteor.call('rmSubject', [params]);Meteor.call('voteUpSubject', [params]);Meteor.call('voteDownSubject', [params]);
http://pegleg.it (recherche de film)
http://anonkun.com/
(livre interactif)
