SUW15 – v.36 tisdag – Vår Server klass från dagens lektion (kodexempel)

Idag har vi skapat vår första klass till vår stack. ”Server” klassens uppgift är att, med hjälp av express, sätta upp en webserver som kan leverera publika filer samt skicka alla anrop vår server tar emot till våran ”index.html” fil i ”www/” mappen.

Dagens kod:

'use strict';

module.exports = class Server {
  constructor() {
    // save our settings to this
    this.settings = g.settings.Server;

    // add express to this
    this.app = m.express();

    // run the setup method
    this.setup();
  }

  setup() {
    // tell express to use middleware to parse JSON
    this.app.use(m.bodyparser.json());
    // declare a webroot
    this.app.use(
      m.express.static(
        m.path.join(g.settings.appRoot, this.settings.webroot)
      )
    );

    // compress all files using gzip
    this.app.use(m.compression());

    // parse all request cookies
    this.app.use(m.cookieparser());

    // parse all urlencoded request body data
    // for example from "standard" HTML forms
    this.app.use(m.bodyparser.urlencoded({extended: false}));

    // create an endpoint ("*")
    var me = this;
    this.app.get(this.settings.endpoint, function(req, res) {
      // send my index.html file
      res.sendFile(me.settings.indexFile, {root: me.settings.webroot});
    });

    // listen on port 3000
    this.app.listen(this.settings.port,  function() {
      console.log("Server listening on port "+me.settings.port);
    });
  }
}

Vi lade även till nya inställningar i settingsContr.js:

[ ... ]
  classLoader: {
    baseDir: m.path.join(appRoot,'classes/'),
    toLoad: [
      'Server', // NEW: load server class
      'LessWatch'
    ]
  },
  Server: { // settings for Server class
    endpoint: '*',
    // favicon: 'www/favicon.ico',
    webroot: 'www',
    indexFile: 'index.html',
    port: 3000
  },
[ ... ]

Samt instantierar nu Server klassen i app.js:

[ ... ]

// loads all classes
m.classLoader();

// start LessWatch
new g.classes.LessWatch();

// start express server
new g.classes.Server();

0 votes