View Full Version : Javascript - creazione app multipiattaforma
Qual' è il miglior tool per creare app multipiattaforma con Javascript, HTML5 e CSS3?
Meglio ancora se open-source
Grazie in anticipo
Blocco Note.
Io però uso vim, che ha il vantaggio di essere open-source.
Puoi provare Atom (https://atom.io) o Visual Studio Code (https://code.visualstudio.com)
ok,
grazie
Però un buon framework per app multipiattaforma?
Però un buon framework per app multipiattaforma? È da almeno 5 anni che non sento più parlare di applicazioni basate su tecnologie web che funzionano correttamente su una sola piattaforma. Come framework per realizzare applicazioni HTML5 multipiattaforma puoi usare HTML5. :asd:
Non da solo ovviamente, ti servirà anche Angular.js (https://angularjs.org/) con Angular Material (https://material.angularjs.org/latest/).
esiste un elenco con tutti i framework per questo scopo?
Strumento come Kivy?
esiste un elenco con tutti i framework per questo scopo? Angular non ha molti concorrenti. Io annovero solo React+Redux+altro, e qualcuno menziona Ember.js. Tra tutti questi ritengo che Angular sia il più affermato (vedi trends (https://www.google.com/trends/explore?date=all&q=%2Fm%2F0j45p7w,%2Fm%2F012l1vxv,emberjs)), nonchè quello che a me personalmente piace di più.
Strumento come Kivy? Ma che è sta roba. :asd:
Mi sembra una accrocchio per Python che introduce un paradigma assai diverso da quello del web, e non mi pare neanche in grado di esportare su HTML5. E anche se lo fosse mi terrei molto alla larga da frameworks per applicazioni web che introducono paradigmi molto diversi da quelli del web. Magari sto Kivy si rivela il Flash del futuro. :asd:
dovahkiin
20-08-2016, 18:51
Se il tuo intento è voler creare delle app native (multipiattaforma) sfruttando le tecnologie web, puoi dare un'occhiata a cordova, ionic e/o react-native (questo rispecchia di meno il paradigma del web, ma ci si avvicina ed è piuttosto performante).
Nel caso in cui invece non sei interessato alle app native, ma vuoi sviluppare delle webapp, allora qualsiasi framework che ti risulta più comodo va bene.
Io mi sento di consigliare Vue.js per lo sviluppo delle interfacce seguendo il pattern model-view-view-model.
grazie,
Kivy è diverso ok, non sembra però male
Xamarin?
Xamarin? Non capisco perchè continui a nominare fantasiosi frameworks che hanno poco a che vedere col web.
Tra l'altro, ripeto, non è che tutti sti porting funzionino perfettamente. Se usi Xamarin per sviluppare un'applicazione web (mai provato e non so neanche se si possa fare) è assai probabile che incontrerai dei problemi. Evita paradigmi diversi da quello del web e usa frameworks sviluppati per il web, che abbiano coscienza delle amenità del box model (per dirne una) ed evitino di essere invasivi.
Quoto il suggerimento di Cordova per le app native e controbatto con Phonegap Build (https://build.phonegap.com/) se la tua app è opensource o se puoi permetterti le tariffe.
espanico
21-08-2016, 15:27
Prova a darti anche io qualche diritta. Mi accodo anche io ai consigli già dati. Nello specifico su Ionic, se conosci e sai usare angularjs ti consiglio utilizzarlo, ha tutto quello che serve per creare un app completa. Oppure se sei agli inizi potresti utilizzare il più famoso JQuery Mobile, oppure Framework 7 si tratta di un framework per la UI da utilizzare in accoppiata con Cordova Apache. Oppure Ratchet.
Tutto dipende dalle tue conoscenze e da che app devi sviluppare.
In firma puoi vedere la mia app utilizzando questa tecnica.
ok,
per quanto riguarda lato web. Grazie a tutti :)
Però situazioni diverse tipo Kivy e Xamarin perchè sono così sbagliati?
Però situazioni diverse tipo Kivy e Xamarin perchè sono così sbagliati? Facciamo un attimo a capirci, tu nel post iniziale hai chiesto "Qual' è il miglior tool per creare app multipiattaforma con Javascript, HTML5 e CSS3", "meglio ancora se open-source". JavaScript, HTML5, e CSS3 sono le tecnologie del web, quindi tu vuoi realizzare un'app web o mobile ibrida.
Siamo nel 2016, e AngularJS+Material+eventualmente Phonegap/Cordova mi sembra la risposta canonica. Il fatto che tu trovi Xamarin e uno sfigatissimo Kivy soluzioni paragonabili mi suggerisce che tu sia alquanto inesperto. Prima di tutto perchè sti due "cosi" c'entrano poco e niente col web e non credo sia neanche possibile usarli per realizzare applicazioni web, poi perchè almeno uno dei due (Kivy) mi sembra una roba mai sentita usata da quattro sfigati (e non certo per fare applicazioni cross-platform) con scarsa community, scarso supporto, e scarsi use cases.
Adesso sicuro sto forum si rivela improvvisamente pieno di fervidi utilizzatori di Kivy che ne potrebbero decantare per ore le incredibili qualità e non senza notare come a qualunque altro framework manchi almeno metà delle cose che Kivy orgogliosamente ha. Indipercui preciso:
Visto che AngularJS è una tecnologia nata e cresciuta per il web e Kivy il web non sa manco che è, e visto che il web è usufruibile su praticamente tutti i dispositivi ad oggi in uso, Kivi è sicuramente meno cross-platform di AngularJS.
La community che supporta AngularJS è sicuramente più vasta di quella di Kivy, prova a quantificare risultati su Google e discussioni su StackOverflow e te ne renderai conto.
In virtù della precedente e del fatto che l'azienda che produce e supporta AngularJS è un po' più grandina del team sfigato che produce e supporta Kivy :), direi che AngularJS gode anche di un supporto decisamente migliore.
TL;DNR: nessuno ti impedisce di usare Kivy o Xamarin, ma non è quello che hai chiesto.
Il futuro per la gran parte delle app che verranno sviluppatee e' probabilmente React-Native (o presente se si vive gia' nel futuro) da abbinare a codice nativo qual'ora si debba integrare con plugin.
Con l'evoluzione della "piattaforma web" oggigiorno viene sempre a meno l'uso di phonegap/cordova che dovrebbe venire abbandonato dato lo scarso rendimento in generale (soprattutto per quanto riguarda performance).
React-Native permette uno sviluppo cross-platform con performance di gran lunga maggiori a phonegap/cordova e ci hanno gia' fatto app 10x piu' complesse dei vari progetti in phonegap/cordova che ricordiamoci, utilizzano semplicemente una webview esponendo tramite JS delle API di sistema non presenti nella piattaforma web.
https://facebook.github.io/react-native/
Sono consapevole di come funzioni Cordova e difatti non capisco come possa esserci un'alternativa più performante.
Visto che nel codice React io posso emettere (che io sappia) pezzi di HTML senza limitazioni, incluso CSS inline per dire, questo significa che React Native non è altro che un browser che dice di essere più performante. O sbaglio?
Sono consapevole di come funzioni Cordova e difatti non capisco come possa esserci un'alternativa più performante.
Visto che nel codice React io posso emettere (che io sappia) pezzi di HTML senza limitazioni, incluso CSS inline per dire, questo significa che React Native non è altro che un browser che dice di essere più performante. O sbaglio?
Sbagli :)
Apri il link e leggi, se non capisci stasera quando torno spiego
pabloski
23-08-2016, 18:05
Sono consapevole di come funzioni Cordova e difatti non capisco come possa esserci un'alternativa più performante.
Visto che nel codice React io posso emettere (che io sappia) pezzi di HTML senza limitazioni, incluso CSS inline per dire, questo significa che React Native non è altro che un browser che dice di essere più performante. O sbaglio?
React Native non renderizza il contenuto in una webview, ma implementa dei bindings alle api della piattaforma sottostante tramite quelli che loro chiamano "moduli nativi".
Quei pezzi di codice ( che somigliano al HTML classico ) che vengono ritornati dai return nelle render, sono in realta' l'equivalente di uno XAML o QML. Un motore di rendering apposito li mappa in istanze degli opportuni moduli nativi.
L'interpretazione del codice javascript avviene invece tramite l'interprete/jit offerto dalla piattaforma ( parliamo di Android e iOS, visto che non esiste React Native per altre piattaforme ).
In ogni caso la webview non e' minimamente coinvolta.
Quindi se usa VM qual è la differenza rispetto al povero flash o una sfigatissima applet Java? Che lo scrivo con un linguaggio orrendo come javascript?
pabloski
24-08-2016, 14:45
Quindi se usa VM qual è la differenza rispetto al povero flash o una sfigatissima applet Java? Che lo scrivo con un linguaggio orrendo come javascript?
In pratica nessuna, solo che si spera ad ogni giro che non nascera' un nuovo filone horror di vulnerabilita' apocalittiche.
Per quel che mi riguarda, per il webdev Go e' la strada piu' sensata al giorno d'oggi. Lato frontend web ovviamente o JS o niente.
Per altri usi, e' possibile considerare varie soluzioni multipiattaforma. Nessuna perfetta, ognuna con i suoi pro e contro.
Io sono ancora un sostenitore di AIR per lo sviluppo mobile, pero' realisticamente si tratta di un ambiente praticamente abbandonato dalla stessa Adobe, per cui il futuro e' molto incerto. Xamarin puo' essere una validissima alternativa a React Native e compagni, ma il fatto che MS stia annaspando nel settore mobile, mi fa pensare che potrebbe essere abbandonato nel prossimo futuro.
Tenendo conto di cio', chi usa C#/.NET per altri usi, puo' considerare Xamarin direttamente. Ma chi non e' uno sviluppare .NET, fa prima ad approcciarsi a React/JS.
Quindi se usa VM qual è la differenza rispetto al povero flash o una sfigatissima applet Java? Che lo scrivo con un linguaggio orrendo come javascript?
Non e' che sia proprio una VM ma in realta' gira sull'interprete javascript della piattaforma, sviluppata quindi da Apple / Google, non da sviluppatori terzi e si basa praticamente Chrome/Safari che sono usati da milioni di persone e negli ultimi 5 anni non ricordo di aver mai sentito di una vulnerabilita' grossa su queste piattaforme.
Flash e' un plugin esterno al browser.
Una applet Java gira sulla JVM, anch'essa parte "esterna" al browser.
C'e' una grossa differenza anche in termini di accesso a risorse del sistema.
Quei pezzi di codice ( che somigliano al HTML classico ) che vengono ritornati dai return nelle render, sono in realta' l'equivalente di uno XAML o QML. Un motore di rendering apposito li mappa in istanze degli opportuni moduli nativi. Quindi in React Native non avrei ad esempio la possibilita' di emettere elementi div, span, p, img, e via dicendo? In React questa possibilita' mi pare ci sia.
Non e' che sia proprio una VM ma in realta' gira sull'interprete javascript della piattaforma, Io ormai ho fatto l'abitudine alla gente che definisce "VM" un semplice interprete. :rolleyes:
(Tecnicamente poi hanno ragione se consideri che sempre di macchine di Turing si tratta. :fagiano: )
pabloski
25-08-2016, 09:51
Quindi in React Native non avrei ad esempio la possibilita' di emettere elementi div, span, p, img, e via dicendo? In React questa possibilita' mi pare ci sia.
Puoi farlo ma tramite una webview https://facebook.github.io/react-native/docs/webview.html
Puoi farlo ma tramite una webview https://facebook.github.io/react-native/docs/webview.html Si ma a quel punto tanto vale Cordova, e magari React vero e proprio.
Avevo frainteso React Native, credevo fosse uno strumento che permettesse di portare sul mobile applicazioni web implementate in React, ma mi pare di capire che non è così perchè anche se la sintassi è la stessa poi non è possibile usare gli elementi di HTML5.
Non mi ha molto senso sta roba, non capisco che bisogno c'era di implementare il milionesimo framework (https://xkcd.com/927/).
pabloski
25-08-2016, 14:20
Si ma a quel punto tanto vale Cordova, e magari React vero e proprio.
Beh si. Ovviamente la webview in React Native e' solo un modo per visualizzare "siti web", non certo per renderizzare la gui dell'app.
Avevo frainteso React Native, credevo fosse uno strumento che permettesse di portare sul mobile applicazioni web implementate in React, ma mi pare di capire che non è così perchè anche se la sintassi è la stessa poi non è possibile usare gli elementi di HTML5.
Beh React Native usa JSX per sputare il codice che vuoi. Solo che l'ambiente offre una serie di componenti che sono quelli che poi mappano in analoghi oggetti del sistema sottostante.
Nessuno vieta di creare una libreria di componenti che imita quelli di React Native ed usarli con ReactJS.
Non mi ha molto senso sta roba, non capisco che bisogno c'era di implementare il milionesimo framework (https://xkcd.com/927/).
Che io sappia esiste solo un altro framework diffuso simile a React Native ed e' Nativescript ( che e' essenzialmente basato su AngularJS ).
La loro ragion d'essere sta tutta nelle performance, molto migliori delle soluzioni basate su webview tipo Ionic, Cordova, ecc...
Nessuno vieta di creare una libreria di componenti che imita quelli di React Native ed usarli con ReactJS. Cosa che infatti e' stata fatta (https://github.com/necolas/react-native-web).
Che io sappia esiste solo un altro framework diffuso simile a React Native ed e' Nativescript ( che e' essenzialmente basato su AngularJS ).
La loro ragion d'essere sta tutta nelle performance, molto migliori delle soluzioni basate su webview tipo Ionic, Cordova, ecc... Nel momento in cui non fai piu' uso di un browser stai usando un qualunque framework cross-platform. Non ci credo che non ce n'erano altri prima di React Native e Nativescript.
pabloski
25-08-2016, 18:02
Non ci credo che non ce n'erano altri prima di React Native e Nativescript.
Xamarin? QT? AIR? HaXe?
Nessuno che si basasse su JS pero', e' questo il trucco. La' fuori ci sono milioni di programmatori JS che grazie a Nativescript e React Native possono sviluppare app mobile.
miglior modo di testare le app mobile su desktop?
Si ma a quel punto tanto vale Cordova, e magari React vero e proprio.
Avevo frainteso React Native, credevo fosse uno strumento che permettesse di portare sul mobile applicazioni web implementate in React, ma mi pare di capire che non è così perchè anche se la sintassi è la stessa poi non è possibile usare gli elementi di HTML5.
Non mi ha molto senso sta roba, non capisco che bisogno c'era di implementare il milionesimo framework (https://xkcd.com/927/).
secondo me non hai bene chiaro il tutto.
se fai un app in React native non userai mai la webview e come gia' detto i componenti vengono in qualche modo trasformati in nativi quindi la tua app ha ottime prestazioni non lontanamente comparabili a roba da webview (cordova/phonegap)
non c'era nessun framework del genere quindi aveva senso e sta avendo un ottimo successo aprendo la strada o dettando il futuro se restera' usato anche nei prossimi anni.
io stimo che un 75% delle app che trovi sull'app store oggi nel giro di un paio d'anni verranno scritte in React Native o tecnologie simili.
Xamarin? QT? AIR? HaXe?
Nessuno che si basasse su JS pero', e' questo il trucco. La' fuori ci sono milioni di programmatori JS che grazie a Nativescript e React Native possono sviluppare app mobile. Fair enough. :)
miglior modo di testare le app mobile su desktop? Dipende da come le sviluppi. Se sono app ibride basta testarle nel tuo browser, mi pare che Chrome abbia anche qualche impostazione per simulare un browser/webview mobile.
Altrimenti usa strumenti specifici del framework che hai scelto. Non so cosa abbia React Native ma ho riportato poco piu' sopra React Native for Web (https://github.com/necolas/react-native-web), forse puo' essere usato per testare nel browser.
se fai un app in React native non userai mai la webview e come gia' detto i componenti vengono in qualche modo trasformati in nativi quindi la tua app ha ottime prestazioni non lontanamente comparabili a roba da webview (cordova/phonegap) Avevo gia' inteso
non c'era nessun framework del genere Nessuno per JavaScript vuoi dire? pabloski ha citato degli esempi.
Nessuno per JavaScript.
Javascript è il linguaggio del web de facto.
Con react native puoi avere un developer full stack che ti fa app web, backend in node e app mobile iOS/Android.
E in tutto questo ci sono tante parti di codice che vengono condivise.
A me sembra ancora una volta enorme.
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.