Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Postamana nei ogarnalem wiec tu nie ma
- ////////////////////////////// Logger
- var utl = 'http://ssilogger.pk.edu.pl/log';
- const EventEmitter = require('events');
- const emitter = new EventEmitter();
- // Tworzymy klase o ktorej mowa w App.js przy sekcji z Emiterem
- class Logger extends EventEmitter {
- log(wiadomosc) {
- //gdzies wysylamy do adresu url ale u nas tylko do kontroli
- console.log(wiadomosc);
- this.emit('messageLogged');
- }
- }
- // Eksportowanie tej funkjci, inaczej wszystko jest prywatne
- // module.exports.log = log;
- // Teraz po utworzeniu klasy mozemy wyeksportowac po prostu klase
- module.exports = Logger;
- ////////////////////////////// App
- ////////// Wprowadzenie
- // Starsze podejscie do tworzenia funkcji
- function witaj(imie) {
- console.log("Witaj " + imie + "!");
- }
- witaj("Imię");
- // Nowsze podejscie do tworzenia funkcji
- var czesc = function(imie){
- console.log("Czesc " + imie);
- }
- czesc("Imię");
- // Timeout
- setTimeout(function () {
- witaj("Timeout");
- }, 2000);
- ////////// Zabawy modulami (innymi plikami, export itp)
- // Lepiej deklarowac jaki const, na poczatku pliku jak wszystkie importy
- // Dzieki const nie mozemy zmienic wartosci i nadpisac, ale mozemy zmienic nadal wlasnosci wiec jest git
- // logger = 1;
- const logger = require('./logger');
- // Jesli nic nie wyeksportujemy to log zwroci pusty obiekt bo wszystko jest prywatne
- console.log(logger);
- // Path jest domyslnie, zwraca sciezke do pliku
- const path = require('path');
- var sciezka = path.parse(__filename);
- console.log(sciezka);
- // Os jest tez domyslnie, info o systemie
- const os = require('os');
- var calkowitaPamiec = os.totalmem();
- var wolnaPamiec = os.freemem();
- console.log('Calkowita pamiec: ' + calkowitaPamiec);
- // Uzywamy templatow wreszcie. Inne apostrofy.
- console.log(`Wolna pamiec ${wolnaPamiec} z ${calkowitaPamiec}`);
- // File system, znow domyslne
- var fs = require('fs');
- // Mozemy podgladac pliki z danej sciezki. Jest wersia synchroniczna i asynchroniczna, nizej synchroniczna bo sie wykona na pewno od razu
- const pliki = fs.readdirSync('./');
- console.log(pliki);
- console.log('---------------------------------------------------');
- // Emiter
- const EventEmitter = require('events');
- const emitter = new EventEmitter();
- // Rejestrujemy emiter
- emitter.on('messageLogger', function () {
- console.log('Listener zostal wywolany');
- });
- // Wznosimy wydarzenia ktore zosalo wywolane
- emitter.emit('messageLogger');
- emitter.emit('messageLogger');
- // Tworzyy drugi emiter, nazwany messageArg i z arrow funckja (standard ES6+)
- emitter.on('messageArg', (arg) => {
- console.log('Listener z argumentem', arg);
- });
- // Cos jest nie tak z tym obietkem ale czemu to nie wiem
- // emitter.emit('messageArg', arg{id:1, url:'http:'});
- // Logger tworzy tak inna instancje emita wiec nie bedzie to samo. Zeby bylo to smo musimy ogarnac klase ktora bedzie dziedziczyc itp
- // logger.log("abc");
- // Teraz mozemy wywolac z klasy tego loggera. Pamietac o imporcie!
- const loggers = require('./logger');
- const loggerscnd = new loggers();
- loggerscnd.log("aaa");
- // Mozemy teraz podpiac sie do loggera zmieniajac emittera na loggera, zmianiajac kod wyzej na taki:
- /*
- logger.on('messageLogger', function () {
- console.log('Listener zostal wywolany');
- })
- // Wznosimy wydarzenia ktore zosalo wywolane
- logger.emit('messageLogger');
- logger.emit('messageLogger');
- // Tworzyy drugi emiter, nazwany messageArg i z arrow funckja (standard ES6+)
- logger.on('messageArg', (arg) => {
- console.log('Listener z argumentem', arg);
- })
- logger.emit('messageArg', arg[id:1, url:'http://']);
- */
- console.log('---------------------------------------------------');
- ////////// Troche webowki
- const http = require('http');
- const serwer = http.createServer();
- // Dzieki tejj funkcji (eventowi) connection mozemy sprawdzac czy ktos sie laczy do nas
- serwer.on('connection', (socket => {
- console.log('Nowe polaczenie...');
- }));
- // Otwarcie serwera na porcie 3000
- serwer.listen(3000);
- console.log('Serwer oczekuje na porcie 3000');
- // Rozszerzamy nasz serwer na inny port dajac mu mozliwosci wysweitlania
- const serwerDrugi = http.createServer((req, res) => {
- // po url === podajemy w '' nazwe ktora wpisuje sie normalnie w linku
- if(req.url === '/') {
- // We wricie mozna nawet html pisac no ale bez sensu jest ten sposob
- res.write("Witaj Swiecie!");
- res.end();
- }
- if(req.url === '/api/liczby') {
- res.write(JSON.stringify([1,2,3,4]));
- res.end();
- }
- })
- serwerDrugi.on('connection', (socket => {
- console.log('Nowe polaczenie...');
- }));
- // Otwarcie serwera na porcie 3000
- serwerDrugi.listen(3003);
- console.log('Serwer oczekuje na porcie 3000');
- ////////////////////////////// App1 - z uzyciem Express.js
- const express = require('express');
- const app = express();
- app.use(express.json());
- // Expresem jak widac nizej jest duzo szybciej i ladniej
- app.get('/', (req,res) => {
- res.send("Witaj swiecie!");
- });
- app.get('/app/lista', (req, res) => {
- res.send([1,2,3,4]);
- });
- // Jak zaskakuje brak bracketow nizej - w arrow functions nie trzeba jesli jest tylko jedna linjka albo jeden return
- // Zakomentowane bo nizej kombinujemy
- //app.listen(3005, () => console.log("Oczekuje na porcie 3005"));
- // Dzięki :rok mozemy podac w adresie jakis argument czyli np app/2019/10
- // Zakomentowane bo nizej kombinujemy z lista aut i sie adresy nakladaly
- //app.get('/app/:rok/:miesiac', (req, res) => {
- // res.send([req.params]); // res.send([req.query]);
- //});
- // Mozna uzywac tez roznych zmiennych srodowiskowych ale to troche ryzyko bo nie wiemy kto co ma w systemie ustaione
- // Zeby uniknac bledu uzywamy albo portu albo domyslnie 3000 jak nie ma takiej zmiennej
- const port = process.env.PORT || 3000;
- app.listen(port, () => console.log(`Oczekuje na porcie ${port}`));
- // Bedziemy przekazywac liste na strone
- const lista = [
- {
- id:1,
- nazwa: 'ALFA ROMEO'
- },
- {
- id:2,
- nazwa: 'AUDI'
- },
- {
- id:3,
- nazwa: 'BMW'
- },
- {
- id:4,
- nazwa: 'CITROEN'
- },
- ];
- app.get('/app/listaAut', (req, res) => {
- res.send(lista);
- });
- // Ustawiamy mozliwosc dostawania sie po ID do konkretnych modeli z listy
- app.get('/app/listaAut/:id', (req, res) => {
- // Najpierw sprawdzamy czy taki element w ogole jest. Parsujemy bo wszystko co nam przychodzi z adresu to string
- let element = lista.find(l=> l.id === parseInt(req.params.id));
- // Jesli nie odnaleziono to wywalamy 404 z komunikatem
- if(!element) {
- res.status(404).send('Element o takim ID nie zostal znaleziony');
- } else {
- res.send(element);
- }
- });
- // Uzywamy metode POST, przez ktora mozemy przesylac JSON np.
- app.post('api/lista', (req, res) => {
- // Prosta weryfikacja czy jest cos takiego jak nazwa w body i czy ma >=3 znaki
- if(!req.body.nazwa || req.body.nazwa.length < 3) {
- res.status(404).send('Nazwa jest wymagana i musi mie c minimum 3 znaki');
- return;
- } else {
- // Fabrykujemy wysylanego przez POST JSONa
- const element = {
- id: lista.length + 1,
- nazwa: req.body.nazwa
- };
- // Push na liste i przeslanie
- lista.push(element);
- res.send(element);
- }
- });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement