IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

NodeJS Discussion :

[Americano] Avoir des pages jade ou ejs


Sujet :

NodeJS

  1. #41
    Membre habitué Avatar de lostsoul
    Homme Profil pro
    Rédacteur web, blogueur, développeur web junior
    Inscrit en
    Novembre 2003
    Messages
    759
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Rédacteur web, blogueur, développeur web junior
    Secteur : Conseil

    Informations forums :
    Inscription : Novembre 2003
    Messages : 759
    Points : 184
    Points
    184
    Par défaut
    Il y a du mieux pour l'heure, enfin !

    En faisant ceci dans /views/essai.ejs :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <div>
    <%- JSON.stringify(date) %>
    </div>
    J'obtiens ça dans le navigateur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    {"date":"24 Mar 2015"}
    Est-ce la bonne méthode ?

    Maintenant, l'affichage n'est pas terrible, il faut voir comment améliorer cela... Mais ça s'améliore un peu quand même.
    ANDRE Ani
    GNU/Linux et Informatique Libre
    https://andre-ani.fr

  2. #42
    Membre habitué Avatar de lostsoul
    Homme Profil pro
    Rédacteur web, blogueur, développeur web junior
    Inscrit en
    Novembre 2003
    Messages
    759
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Rédacteur web, blogueur, développeur web junior
    Secteur : Conseil

    Informations forums :
    Inscription : Novembre 2003
    Messages : 759
    Points : 184
    Points
    184
    Par défaut
    J'ai réussi à afficher également l'heure (mieux compris comment ça fonctionnait), mais maintenant je n'arrive pas à l'afficher comme il faut , sans crochets et guillemets...
    D'après ce que vais vu la :
    https://developer.mozilla.org/fr/doc...JSON/stringify
    Il faudrait utiliser remplaçant, mais je ne comprends pas les exemples de syntaxe.
    ANDRE Ani
    GNU/Linux et Informatique Libre
    https://andre-ani.fr

  3. #43
    Membre actif Avatar de John Blobsmith
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    198
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 198
    Points : 223
    Points
    223
    Par défaut
    Si tu veux avoir juste le texte de la date tu peux remplacer ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    module.exports.essai = function (req, res, next) {
        res.render('essai.ejs', {
            title: 'c est un essai',
    	date: date,
            }
        );
    };
    par ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    module.exports.essai = function (req, res, next) {
        res.render('essai.ejs', {
            title: 'c est un essai',
    	date: date.date,
            }
        );
    };
    dans ton controller

  4. #44
    Membre habitué Avatar de lostsoul
    Homme Profil pro
    Rédacteur web, blogueur, développeur web junior
    Inscrit en
    Novembre 2003
    Messages
    759
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Rédacteur web, blogueur, développeur web junior
    Secteur : Conseil

    Informations forums :
    Inscription : Novembre 2003
    Messages : 759
    Points : 184
    Points
    184
    Par défaut
    D'accord, effectivement ça marche mieux, merci. J'étais donc sur la mauvaise voie avec stringify (que j'ai vu d'ailleurs dans le code pour la météo).

    La météo par contre, je n'y arrive tjs pas. Je récupère les données depuis l'api openweathermap, mais je n'arrive pas à afficher les résultats, à part en console...

    /controllers/index.js :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    var result = require('./../models/meteo.js');
    var text = require('./../models/meteo.js');
     
    module.exports.index = function (req, res, next) {
      res.send('Hello World');
    };
     
    module.exports.test = function (req, res, next) {
        res.render('test.ejs', {title: 'Page de test'});
    };
     
    module.exports.essai = function (req, res, next) {
        res.render('essai.ejs', {
            title: 'c est un essai',
    	result: result.result,
    	text: text
            }
        );
    };

    /models/index.js :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
     
    var querystring = require('querystring');
    var request     = require("request")
    var result = '';
    var text = '';
     
    // Nous construisons ensuite la requête pour obtenir le temps actuel.
    var openWeatherMapQuery = querystring.stringify({
      q: "Bourges, France",
      lang: "fr",
      units: "metric"
    });
    var openWeatherMapURL = "http://api.openweathermap.org/data/2.5/weather?"+ openWeatherMapQuery;
     
    // Nous procédons ensuite à la requête de l'API.
    request({
      url: openWeatherMapURL,
      json: true // Nous recevrons un JSON
    }, function (error, response, resp) {
     
      if (!error && response.statusCode === 200) {
     
        // Nous construisons le texte à réciter.
        var text = "Bulletin météo : "
        text += resp.weather[0].description
        text += ". Il fait actuellement "+ Math.round(resp.main.temp) +" degrés."
     
        var result = querystring.stringify({
          tl: "fr",
          q:  text,
          ie: "UTF-8"
        });
     
        console.log("Météo construite :");
        console.log(text);
        console.log(resp.main.temp);
     
      } else {
     
        console.log("Une erreur est survenue.");
      }
    })
    module.exports.result = result;
    module.exports.text = text;

    /views/essai.ejs :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Meteo :
     
    <div>
    <%= text %>
    </div>
     
    <div>
    <%= result %>
    </div>
    ANDRE Ani
    GNU/Linux et Informatique Libre
    https://andre-ani.fr

  5. #45
    Membre habitué Avatar de lostsoul
    Homme Profil pro
    Rédacteur web, blogueur, développeur web junior
    Inscrit en
    Novembre 2003
    Messages
    759
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Rédacteur web, blogueur, développeur web junior
    Secteur : Conseil

    Informations forums :
    Inscription : Novembre 2003
    Messages : 759
    Points : 184
    Points
    184
    Par défaut
    Petit soucis pour la date. J'ai réussi à la passer en français et l'afficher dans le format que je voulais. Le soucis, c'est de la mettre à jour. J'ai utilisé setinterval comme ceci :

    /models/heure.js :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    var maj = setInterval(function () {temps()}, 1000);
     
    function temps() {
     
    var now = moment(new Date());
    var date = now.format("dddd, D MMMM YYYY, HH:mm:ss");
     
    console.log(date);
     
    module.exports.date = date;
    }
    En console elle se met à jour correctement, mais évidement pas sur la page ejs, et je ne sais pas comment faire...
    ANDRE Ani
    GNU/Linux et Informatique Libre
    https://andre-ani.fr

  6. #46
    Membre actif Avatar de John Blobsmith
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    198
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 198
    Points : 223
    Points
    223
    Par défaut
    Sur la page web c'est normal que la date ne ce mette pas à jour car ça reste du web... Une fois que ton navigateur a fini de charger la page, tu a la valeur a un instant t. Si tu veux avoir une nouvelle valeur :
    - tu recharge la page
    - ou tu récupère la valeur avec le set interval mais côté client
    - ou tu utilise socket.io pour envoyer la nouvelle valeur au client

  7. #47
    Membre habitué Avatar de lostsoul
    Homme Profil pro
    Rédacteur web, blogueur, développeur web junior
    Inscrit en
    Novembre 2003
    Messages
    759
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Rédacteur web, blogueur, développeur web junior
    Secteur : Conseil

    Informations forums :
    Inscription : Novembre 2003
    Messages : 759
    Points : 184
    Points
    184
    Par défaut
    Ok, c'est bien ce que je pensais. Je ne savais pas si le traitement devait se faire côté serveur ou client, qu'elle est la meilleur solution.
    Je vais voir entre set interval ou socket.io

    Pour mon essai d'appli avec divers fonctions (rss, heure, etc...), j'ai fais un fichier séparé pour chaque fonctions dans /models. Est-ce la bonne solution, ou est-ce mieux de faire un seul fichier qui contiendra toutes les différents fonctions ?
    ANDRE Ani
    GNU/Linux et Informatique Libre
    https://andre-ani.fr

  8. #48
    Membre actif Avatar de John Blobsmith
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    198
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 198
    Points : 223
    Points
    223
    Par défaut
    Le mieux c'est de ne pas mettre ensemble des données qui n'ont rien avoir. Donc chaque type de données avec leur traitement spécifique dans un fichier différent.

  9. #49
    Membre habitué Avatar de lostsoul
    Homme Profil pro
    Rédacteur web, blogueur, développeur web junior
    Inscrit en
    Novembre 2003
    Messages
    759
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Rédacteur web, blogueur, développeur web junior
    Secteur : Conseil

    Informations forums :
    Inscription : Novembre 2003
    Messages : 759
    Points : 184
    Points
    184
    Par défaut
    Bon, je suis sur socket.io. J'ai réussi avec un petit essai sur 2 fichiers (app.js et index.html). Maintenant, j'essaye avec le projet express, et c'est plus compliqué... Je ne suis pas sûr de bien m'y prendre. J'ai essayé de laisser séparer les données pour l'heure et le serveur, mais avec socket.io, je ne sais pas trop ou le placer en fait... Mais je pense que le soucis principal ici c'est ma page ejs pour mettre à jour l'heure. Car pas d'erreur autrement.

    Fichiers /server.js :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
     
    var express  = require('express');
    var app      = express();
    var port     = process.env.PORT || 8080;
    var mongoose = require('mongoose');
    var passport = require('passport');
    var flash    = require('connect-flash');
     
    var configDB = require('./config/database.js');
     
    // configuration ===============================================================
    mongoose.connect(configDB.url); // connect to our database
     
    require('./config/passport')(passport); // pass passport for configuration
     
    app.configure(function() {
     
    	// set up our express application
    	app.use(express.logger('dev')); // log every request to the console
    	app.use(express.cookieParser()); // read cookies (needed for auth)
    	app.use(express.bodyParser()); // get information from html forms
     
    	app.set('view engine', 'ejs'); // set up ejs for templating
     
    	// required for passport
    	app.use(express.session({ secret: 'ilovescotchscotchyscotchscotch' })); // session secret
    	app.use(passport.initialize());
    	app.use(passport.session()); // persistent login sessions
    	app.use(flash()); // use connect-flash for flash messages stored in session
     
     
    });
     
    // routes ======================================================================
    require('./app/routes.js')(app, passport); // load our routes and pass in our app and fully configured passport
     
    // launch ======================================================================
    app.listen(port);
    console.log('The magic happens on port ' + port);

    Fichier /models/heure.js :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
     
    var moment = require('moment');
    var http = require("http");
    var fs = require('fs');
    var io = require("socket.io");
     
    var server = http.createServer(function(req, res) {
     
    });
     
    moment.locale('fr', {
        months : "janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),
        monthsShort : "janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),
        weekdays : "dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),
        weekdaysShort : "dim._lun._mar._mer._jeu._ven._sam.".split("_"),
        weekdaysMin : "Di_Lu_Ma_Me_Je_Ve_Sa".split("_"),
        longDateFormat : {
            LT : "HH:mm",
            LTS : "HH:mm:ss",
            L : "DD/MM/YYYY",
            LL : "D MMMM YYYY",
            LLL : "D MMMM YYYY LT",
            LLLL : "dddd D MMMM YYYY LT"
        },
     
     
        ordinalParse : /\d{1,2}(er|ème)/,
        ordinal : function (number) {
            return number + (number === 1 ? 'er' : 'ème');
        },
        meridiemParse: /PD|MD/,
        isPM: function (input) {
            return input.charAt(0) === 'M';
        },
     
        meridiem : function (hours, minutes, isLower) {
            return hours < 12 ? 'PD' : 'MD';
        },
        week : {
            dow : 1, 
            doy : 4  
        }
    });
     
     
    var now = moment(new Date());
    var date = now.format("dddd, D MMMM YYYY, HH:mm:ss");
     
    var io = require('socket.io').listen(server);
     
    io.listen(server);
     
    io.sockets.on('connection', function(socket){
        setInterval(function(){
            socket.emit('date', {'date': new Date()});
        }, 1000);
        console.log('date');
    });
     
    console.log(date);
     
    module.exports.date = date;

    Fichiers /views/profile.ejs :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    <div>
    <script src="/socket.io/socket.io.js"></script>
             <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.js"></script>
            <script>
          var socket = io.connect();
     
          socket.on('date', function(data){
            $('#date').text(data.date);
          });
        </script>
        <div  id="date"> </div>
    </div>
    ANDRE Ani
    GNU/Linux et Informatique Libre
    https://andre-ani.fr

  10. #50
    Membre actif
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    154
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Haute Vienne (Limousin)

    Informations forums :
    Inscription : Avril 2009
    Messages : 154
    Points : 233
    Points
    233
    Par défaut
    Utiliser socket.io juste pour afficher l'heure, c'est utiliser un bazooka pour tuer une mouche

    Je te propose de créer un nouveau fil tout propre, où tu expose clairement ton but, la finalité du site/appli, puis de le construire au fur et à mesure ensemble en expliquant chacun des concepts. si c'est pas trop sale, on pourrait le mettre en forme et en faire un tuto sur developpez?! qu'un pense tu? parce que en l’état, tu pars dans tous les sens, sans avoir bien assimiler deux trois concepts de base (je suis aussi passé par cette galère!), et tu vas y perdre bcp de temps.

  11. #51
    Membre habitué Avatar de lostsoul
    Homme Profil pro
    Rédacteur web, blogueur, développeur web junior
    Inscrit en
    Novembre 2003
    Messages
    759
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Rédacteur web, blogueur, développeur web junior
    Secteur : Conseil

    Informations forums :
    Inscription : Novembre 2003
    Messages : 759
    Points : 184
    Points
    184
    Par défaut
    Ok pour socket.io ;-)

    Oui, je débute sur Node, sa m'intéresse beaucoup, mais, je m'éparpille un peu dans tous les sens...
    Je découvre, et, pour le moment, je voudrais arriver à faire une ptite appli single page assez simple (authentification locale, puis 2 / 3 trucs à afficher et ou / configurer, peut-être avec une BDD).

    Volontiers si cela peut en aider d'autres à débuter, pourquoi pas en faire un tuto ;-)
    ANDRE Ani
    GNU/Linux et Informatique Libre
    https://andre-ani.fr

Discussions similaires

  1. Avoir le possibilité d'exporter des pages wiki en pdf
    Par Actraiser dans le forum SharePoint
    Réponses: 2
    Dernier message: 08/07/2008, 14h22
  2. [AJAX] Avoir des infos sur une page web
    Par Skieur38 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 07/03/2007, 21h38
  3. [STRUTS] avoir des pages d'erreur differente
    Par jeb001 dans le forum Struts 1
    Réponses: 6
    Dernier message: 09/11/2005, 17h32
  4. Comment avoir des pages Web cryptées ?
    Par k_boy dans le forum Sécurité
    Réponses: 6
    Dernier message: 03/10/2005, 19h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo