Index
Node.js è un runtime di JavaScript Open source multipiattaforma orientato agli eventi per l’esecuzione di codice JavaScript, costruito sul motore JavaScript V8 di Google Chrome. In questo documento illustreremo sinteticamente come eseguire una semplice applicazione web node.js all’interno dell’ambiente pase di Ibm.
Per prima cosa andremo ad installare i pacchetti open source tramite Access Client Solution.
IBM i Access Client Solutions offre un’interfaccia indipendente dalla piattaforma basata su Java, che può essere eseguita sulla maggior parte dei sistemi operativi che supportano Java, tra cui Linux, Mac e Windows. IBM i Access Client Solutions raccoglie le attività utilizzate più comunemente per la gestione di IBM i in un’unica ubicazione semplificata.
Da questo link si trovano tutte le informazioni utili per installare e gestire l’ambiente opensource per IbmI.
https://bitbucket.org/ibmi/opensource/src/e9ab9d2e8c1cc1f96b4dd4bd9801d8f8ddf9c8e8/docs/yum/
Dopo aver installato nodejs, ci collegheremo all’ambiente pase per installare express.js, un microframework che consente di generare percorsi (url) più facilmente e di utilizzare dei template.
Il collegamento avviene attraverso il richiamo del programma qp2term o tramite la sessione putty presente in una della funzioni dell’access client solution.
Installare idb-connector
Node.js iDB Connector è un IBM i Node.js Db2 driver open source project from IBM.
npm install idb-connector
Inserire nella cartella express View il codice html che avrà come estensione .ejs
Da notare nel formato html le specifiche con “%”; sono i campi passati come request al browser da node
<!DOCTYPE html>
<html>
<head>
<title><%= title %></title>
<link rel='stylesheet' href='/stylesheets/style.css' />
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap-theme.min.css">
</head>
<body>
<h1><%= title %></h1>
<p>Welcome to <%= title %></p>
<table class="table table-dark">
<thead>
<tr>
<th scope="col">Nr</th>
<th scope="col">Conto</th>
<th scope="col">Descrizione</th>
<th scope="col">Importo</th>
</tr>
</thead>
<tbody>
<% if(data.length){
for(var i = 0; i< data.length; i++) {%>
<tr>
<th scope="row"><%= (i+1) %></th>
<td><%= data[i].COD%></td>
<!-- <td><%= data[i].DES%></td> -->
<td><%= data[i].IMPO%></td>
<td>
<a class="btn btn-success edit" href="../customers/edit/<%=data[i].id%>">Edit</a>
<a class="btn btn-danger delete" >
Implementare l’index.js per inserire altri routing all’applicazione base.
Nel routing nella pagina sono implementati le connessioni al database e l’accesso sql. I dati vengono restituiti nel formato json.
var express = require('express');
var router = express.Router();
/* GET home page. */
router.get('/', function(req, res, next) {
res.render('index', { title: 'Express' });
});
/* GET new page */
router.get('/analisi', function(req, res, next) {
const idbc=require("idb-connector");
const dbconn=new idbc.dbconn();
dbconn.conn("*LOCAL"); //connessione db
const dbstmt=new idbc.dbstmt(dbconn);
dbstmt.exec('select cliente cod , ragioneSoc des, sum(impofc) Imponibile from libreria.file1
inner join libreria.file2 on cliente=cliente2 group by conffc, dscocp',
function(rows,err) {
if(err){
console.log('err');
res.render('analisi',{title:"Customers - Ejs - Node.js",data:''});
}else
{console.log(rows);
/* restituzione della pagina con le rows dell'sql */
res.render('analisi',{title:"Customers - Ejs -Node.js",data:(rows)}); } }); });
module.exports = router;
DEBUG =appjson:* npm start (questo comando verrà lanciato nella shell e farà partire l’applicazione nel server http)
Ecco, abbiamo appena creato una piccola applicazione per la gestione di una lista di dati.
Node è adatto per strutturare le applicazioni basate su servizi.
l vantaggio più evidente di Node.js è la possibilità di realizzare applicazioni server-side senza dover imparare linguaggi di programmazione “tradizionali”. Ciò permette agli utenti meno esperti, come ad esempio chi si occupa solo di programmazione lato frontend, di realizzare applicazioni Web multiutente gestendo la logica lato server. In altre parole Node.js permette di scrivere codice JavaScript come se fosse un linguaggio di programmazione di pagine dinamiche, realizzando tutto ciò che di solito richiede l’utilizzo di PHP, JSP, ASP o altre tecnologie equivalenti.
L’estensione “RPG IV to Free Format Conversion” sviluppata da Bob Cozzi (Cozzi Research) è pensata per semplificare la conversione di…
Ciao a tutti, oggi voglio segnalarvi un altro interessante contributo di Massimo Duca, parte della sua ormai nota serie IBM…
Incuriosito da alcuni messaggi di Cristian Larsen su Linkedin (New Release - Display File DDS Edit v.0.10.1) ho voluto scaricare…
Ciao a tutti,oggi voglio segnalarvi un annuncio che potrebbe segnare una svolta per lo sviluppo applicativo su ambienti IBM: Project…
Voglio segnalarvi un nuovo articolo molto interessante di Massimo Duca nella serie IBM i & SQL Tips. In questo sesto…
Ciao a tutti, voglio segnalarvi un post molto utile di Marco Riva sul suo sito Markonetools, in cui spiega in…
View Comments
Molto interessante. Sto provando sul nostro ibm i 7.4 ma installando idb-connector con npm install idb-connector ottengo un errore: node: "Un file o una directory nel nome percorso non esiste." e anche guardando il log non capisco dove sia il problema. Può aiutarmi
non funziona nulla, variabili non definite, articolo molto aprossimativo è dir poco,
neppure la istruzione di avvio funziona, non vengono descritti i nomi da dare alla app.
La porta 3010 non è quella di default di express ( 3000 ) per cui l' URL è sbagliata...
non so che altro, ci ho perso anche troppo tempo
L'articolo non ha nessuna pretesa di spiegare il framework Express, ma cerca in modo sintetico di fornire delle linee guida per creare semplici applicazioni sfruttando le potenzialità dello strumento e senza entrare troppo nei tecnicismi, altrimenti non sarebbe comprensibile.
Per quanto riguarda le questioni:
- la porta express è la 3000, si può modificare nel contenuto di "www" sotto la cartella "bin"
- le variabili non sono dichiarate ma sono gli alias del campi dell'sql.
- il comando di lancio è quello standard express; se non parte vuol dire che non trova la path o qualche altro problema.
Di seguito le specifiche da eseguire per impostare la path
PATH=/QOpenSys/pkgs/bin:$PATH
export PATH
Spero di aver risposto, non esiti a contattarmi così ci confrontiamo sul merito.
Grazie