Giter Site home page Giter Site logo

awslab's Introduction

awslab

1. Opis

Przykładowa aplikacja posiada interfejs webowy. Do swojego działania wykorzystuje platformę nodeJS (http://nodejs.org/) oraz framework express.js (http://expressjs.com/).

2. Architektura

Aplikacja składa się z nastepujących elementów:

  • lib/service.js - komponent implementujący usługę WWW.
  • app.js - komponent reprezentujący aplikację, punkt startowy aplikacji
  • helpers.js - funkcje pomocnicze.

#3. Wykonywanie ćwiczeń laboratoryjnych

Ćwiczenie laboratoryjne wymaga uwtorzenia modułu (w postaci nowego pliku źródłowego w folderze /lab ) oraz zaimportowania go do pliku app.js. W ramach nowego modułu, należy zdefiniować funkcję o następującej strukturze:

function(request, callback) {/*...*/}

gdzie:

  • request - obiekt reprezentujacy request HTTP (patrz: http://expressjs.com/api.html#req)

  • callback - funkcja 'callback' pozwalajaca na zwrócenie rezultatu. Sygnatura funkcji zgodna jest z konwencją platformy nodeJS (pierwszy paramter zarezerwowany jest na opcjonalny obiekt reprezentujacy błąd), np: callback(err) - wywołanie sygnalizujące wystapienie błędu callback(null, data) - wywołanie zwracające poprawny rezultat.

Aby aplikacja posiadał nową funkcjonalność musi być ona zmapowana do okreslonej ścieżki webowej. W tym celu należy, po zaimportowaniu modułu do aplikacji dodać do tablicy urlMap nowy obiekt o strukturze {path: ścieżka, action: akcja}.

##3.1 Przykład W ramach przykładu rozbudujemy istniejącą aplikację o funkcjonalność wypisującą wartości podane w ramach parametrów fName oraz lName wprowadzonych w ramach URL. Kroki wymagane do realizacji:

  1. Utworzenie pliku źródłowego (modułu) w katalogu projektu (nazwijmy go example_1.js), implementacja oraz wyeksportowanie funkcji obłsugującej request.
//example_1.js

var task =  function(request, callback){
	var fName = request.query.fName ? request.query.fName : "brak parametru fName";
	var lName = request.query.lName ? request.query.lName : "brak parametru lName";
	callback(null, fName + " " + lName);
}

exports.lab = task
  1. Zaimportowanie modułu do aplikacji i konfiguracja ścieżki URL, pod którą dostępna będzie zaimplementowana funkcjonalność
//app.js
//...
var example_1 = require("./example_1").lab


var urlMap = [
	...,	 
	{path: "/example_1", action: example_1}, 
	];

//...
  1. Uruchomienie i przetestowanie aplikacji

node app.js

Przykładowe wywołanie: > http://localhost:8080/example_1?fName=Jan&lName=Nowak

awslab's People

Contributors

radamus avatar

Watchers

James Cloos avatar Krzysztof Trzewikowski avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.