Affichage des articles dont le libellé est JavaScript. Afficher tous les articles
Affichage des articles dont le libellé est JavaScript. Afficher tous les articles

mardi 3 mars 2020

Chart.js vs ngx-charts quelle solution pour quelle utilisation ?

C'est la question que je souhaite me poser ce matin en effet. Je souhaite intégrer dans mon  application les composants les plus facile à utiliser, les plus jolis, les meilleurs, les mieux ... etc.

Je trouve d'abord ce site de comparaison de tous les "packages" npm trends", trend comme trenddy "à la mode"  :


https://www.npmtrends.com/angular-chart.js-vs-ngx-charts
npm trends angular-chart.js vs ngx-charts
Un fantastique effet Whaoooouuuu. Voici un site qui vous donne l'occasion de comparer les téléchargements les différents npm ou packages.

Alors, je peux comparer le nombre de téléchargements :


https://www.npmtrends.com/angular-chart.js-vs-ngx-charts-vs-ng2-charts-vs-chart.js
npm trend angular-chart.js vs ngx-charts vs ng2-charts vs chart.js
Mais le succès d'un package en terme de nombre de téléchargements n'est pas forcément le seul critère de qualité.

Pour l'instant mon choix se fixe sur Chart.js c'est une librairie facile d'accès facile à intégrer. Il me semble que pour aller beaucoup plus loin il y a "d3". Il sera toujours temps d'intégrer cette librairie.

Voici donc Chart.js


https://www.chartjs.org/
Chart.js
To Be Continued




jeudi 25 avril 2019

Que penser de ASP.NET Core et React ?

Parmi tous les Framework JavaScript lequel choisir ? C'est la question à un millions d'euros car elle implique un fort investissement par la suite dans le maitrise et l'appropriation de ce framework alors lequel choisir entre AngularJS, Angular 6, React, on me parle de VueJS, Ember, Meteor mais pas seulement.

Foisonnement des Frameworks JavaScripts

alsaCréations - Les frameworks JavaScript en 2018
Voilà une très belle comparaison des Frameworks JavaScript, une chose est sûr, je peux m'investir dans React ... un des plus plébiscité par la communauté.

Le Blog Inteam - TOP 5 des Frameworks JavaScript 2017
D'autres Frameworks évoqués Meteor, Ember, leurs avantages, leurs inconvénients.

Mais bon, ces articles datent un peu déjà.

J'en ai trouvé un autre :

https://2017.stateofjs.com/2017/front-end/results/

Concernant les critères de choix d'un framework JavaSCript :

IPPON - Aide au choix d’un framework JavaScript
L'énoncé des critères de choix d'un Framework oui la courbe d'apprentissage est importante c'est un des défaut d'Angular qui est très difficile au début.

Une très bonne idée de ce site c'est d'aller voir la communauté GitHub, leur nombre et leurs activités.

Ainsi pour React nous obtenons :

Communauté open source React sous GitHub
Communauté open source React sous GitHub

Et aller voir dans les Insights, les Pulses ce qui donne une idée si la communauté est importante et active.

Et pour Angular nous obtenons :

Communauté open source Angular sous GitHub
Communauté open source Angular sous GitHub
Le leader de la communauté Angular Pete Bacon Darwing semble plus actif que pour React. Vous pouvez aller visiter toute la communauté pour vous faire une idée assez précise de ses activités.

Et je me rends compte que Ember ou Vue sont bien plus modeste voir inexistant à côté.

Je trouve aussi plein d'informations techniques sur les différents frameworks ici :

codeur mag - React, Angular, Vue : quel framework JavaScript choisir ?
Il faut savoir que ReactJs ne gère que l’interface d’une application web, et peut donc être utilisée avec un framework MVC tel qu’Angular.

Vous en voulez encore, encore plus de Javascripts, vous avez ceci mais c'est en anglais :

Raygun - 9 Popular JavaScript Frameworks for 2019

C'est amusant mais tous utilisent Github pour comparer la popularité et l'acceptation par les communautés de ces différents framework JavaScript. Aux vues de tout ceci React est en très bonne position voir le premier.

On ne parle plus de NodeJS de Knockout ! Donc maintenant essayons de bosser avec ASP.NET et le framework JavaScript React.

Intégration de ASP.NET Core et de React

On vient de lire que React ne gère que l'interface ça tombe bien j'aimerais utilisé React au dessus d'ASP.NET MVC alors ASP.NET Core MVC ?

Il me semble que la meilleur page pour ça c'est celle ci :

Microsoft ASP.NET Core - Utiliser le modèle de projet React avec ASP.NET Core

Quand il est écrit "console" il s'agit en fait bien sûr de la "console du gestionnaire de packages". Je tape la commande suivante :

PM>dotnet --info

Qu'elle version du ASP.NET Core est installée ?
Puisque l'on me demande de savoir qu'elle version est installée :

SDK .NET Core (reflétant tous les global.json) :
 Version:   2.1.505


et que pour pouvoir taper la commande :

PM>dotnet new react -o my-new-app
cd my-new-app


il faut que ASP.NET Core 2.1 soit installé. Ici c'est Ok je peut y aller. Oups petit souci nous sommes dans la partie "Applications monopages".

Création d'une application ASP.NET Core et React

Après l'exécution de la commande PM>dir je suis dans Users/UserName je créé un Répertoire VisualStudio je fais PM>cd VisualStudio puis :


Visual Studio création d'une application ASP.NET Core et React
Je vais voir dans le répertoire D:\Users\Braby\VisualStudio\my-react-app une application est bien là ... Je prends mon Visual Studio et je vais ouvrir le fichier projet my-react-app.csproj

Au moment de l'ouverture :

Ouverture de mon application ASP.NET Core et React
PowerShell version 2.0 is not supported. Upgrade to PowerShell 3.0

Solution à ce problème Ici

Alors que je viens d'installer Visual Studio Community il y a seulement quelques jours, c'est infernal c'est mise à jour incessantes.

Sinon, on a bien sous les yeux une application ASP.NET Core et si on regarde dans le fichier : \\ClientApp\package.json


my-react-app\ClientApp\package.json
le version de React est 16.0.0.

Exécution de l'application ASP.NET Core & React

D'abord un petit build, npm se charge de tout pour restaurer les dépendance du projet :
Application ASP.NET Core React - Build
Ca prend du temps en effet quelques minutes mais à la fin : Génération Réussie.

Exécution avec IIS Express :

Application ASP.NET Core 2.1 avec React
Je suis bluffé on est quand même avec la version community de Visual Studio et ça fonctionne j'ai même un exemple sympathique de bouton compteur que je peux incrémenter et même des données.

Je peux débuter le développement de ma nouvelle application SPA ASP.NET Core MVC avec React.

Conclusion

Il semble que l'on arrive à une certaine maturité, l'emploi des scripts dans la console package manager simplifie des tâches complexes d'installation et de configuration des frameworks. On arrive assez vite à une application qui fonctionne.

Have fun!

jeudi 2 novembre 2017

ASP.NET Web API - Créer une véritable application - #2

Vous souhaitez  utiliser une Web API pour fournir un service RESTful (autrement dit API REST) vers un Client ASP.NET et ce n'est pas si facile. En effet cette techno est faite pour fournir une API vers le poste de travail, la tablette, le mobile. Mais pour afficher des données en provenance d'une Web API dans une application ASP.NET, il va falloir écrire pas mal de javascript et oui ... alors allons-y.

Démarrons avec une bonne application de départ, un bon Template, je vous conseille BookService de Mike Wasson qui s'illustre en écrivant la série d'articles suivants :

Using Web API 2 with Entity Framework 6


https://docs.microsoft.com/en-us/aspnet/web-api/overview/data/using-web-api-with-entity-framework/part-1
Voilà, on est en plein dans le vif du sujet, la plus part des sujets sont résolus dans cette série d'articles seulement maintenant, comment aller plus loin. En effet, le CRUD (Create Read Update Delete) n'est pas complet. On ne peut en définitive pas faire grand chose avec cette simple application.

Je vais adapter les codes sources de ce sample pour en faire une Filmothèque, et vous permettre de gérer vos films favoris.

Eviter un premier écueil, le piège du cache

Il ne faut pas oublier le cache de votre navigateur. Pour développer, ici on est en JavaScripts et donc si vous devez modifier les scripts associés à votre projet, comme par exemple le script "app.js" vous devrez supprimer les données du cache de votre navigateur sinon vous restez avec l'ancien script et vous ne verrez pas vos modifications :


JavaScripts de mon application ASP.NET WebAPI
Vous trouverez pour chaque navigateur le moyen de supprimer les données du cache :

Supprimer les données du cache de votre navigateur !
Plus pratique, le raccourcis :

Ctrl + F5 : démarrer et vider le cache
 
Qui démarre le navigateur en supprimant les données du cache.

Gestion des données avec le Package Manager et "Code First Migrations"

Je ne connaissais pas, alors je prends des notes d'un truc assez cool. C'est l'utilisation de "Code First Migrations" avec Entity Framework. C'est à dire d'écrire du code C# pour remplir la BD avec des données en utilisant la fonction Configuration.Seed.

Puis simplement avec les commandes :

PM> Enable-Migrations
PM> Update-Database

Le plus difficile, c'est de trouver comment afficher la Console du Gestionnaire de packages, c'est ici :


Outils->Gestionnaire de packages NuGet->Console du Gestionnaire de package
Dans cet exemple :
On va apprendre à maitriser le script app.js qui est le ViewModel de notre vue sur le service WebAPI
On fera également du bootstrap Framework CSS
On ajoutera un bouton "Delete" pour pouvoir supprimer une entité et ainsi réaliser le CRUD complet.

Architecture de l'application WebAPI

Il s'agit bien entendu d'une architecture MVC (Model View Controller). Avec un contrôleur sécifique dédié aux WebApi.

Model

Le Model est calqué sur la base de donnée grâce à l'utilisation de "Code First". Le modèle peut être modifier dans le code et la base mise à jour.

Le fichier Configuration.cs du répertoire Migrations permet en utilisant la fonction Seed de créer des enregistrements dans la BD.


Utilisation de Code first et création d'éléments dans la Base de Données

Controller

Il s'agit d'une WebAPI le contrôleur dérive donc d'un ApiController

La fonction GetFilm de l'ApiController qui permet de retourner le film demandé par "id" :

GetFilm FilmsController : ApiController

View

La View Index.cshtml est posée sur un ViewModel définit dans le JavaScript app.js que l'on a vu au dessus. C'est à la fois la difficulté et la simplicité de de ce choix d'application.

Simplicité car l'application est fluide et toutes les opérations sur les objets découlent de ce choix d'architecture, difficulté car il faut modifier le JavaScript pour l'adapter au besoin de lapplication.

On va ajouter une table pour nous permettre d'afficher nos données et de les manipuler : afficher la Vue détails de notre objet film.


Ajouter une légende
Et on ajoute un href deleteFilm qui va déclencher la fonction JavaScript :

app.js function deleteFilm

Voici donc le CRUD de mon application FilmService

Démonstration rapide du CRUD par quelques copies d'écrans. Au démarrage de l'application nous avons dans le navigateur la page suivante :


Home/Index
J'ajoute mon film, je choisi comme Author : Cédric clapich, je clique sur le bouton Submit.

Add Film

Le nouveau film apparait dans la liste des Films :


Je peux alors choisir d'afficher les détails du film ou de le supprimer. Je choisis d'afficher les détails en cliquant sur Details :

La partie détails apparait
Je choisis en suite de supprimer ce film, je clique sur Delete.

Suppression du film
Si je reclique sur "Delete" un message "Not Found" apparait...



Voilà, c'est un CRUD avec une Application ASP.NET qui utilise knockout.js pour fabriquer le ViewModel du pattern MVC.

Pour ajouter un film, j'ai utilisé un POST. Il faudrait utiliser un PUT pour effectuer une mise à jour mais l'Update du CRUD peut toujours être vu comme une suppression suivi d'une recréation. Nous avons donc une application complète qui résous quelques petits soucis laissés en suspend par M. Wasson.

Vous êtes intéressé par des détails supplémentaires... n'hésitez pas, faites moi signe, laissez moi un commentaire. Je vous expliquerai la partie qu'il vous manque.

Voilà on vient de débuter un vrai projet d'API REST.

To Be Continued ...

Download Source Code

Je vous livre les sources, je reviendrais les commenter de façon plus approfondi une prochaine fois. A l'intérieur du .zip il y a un petit fichier readme.txt qui vous permet d'installer la BD de l'application.

Download Source Code ASP.NET WebAPI FilmLibrary in C#

Je dois partir faire du "ASP.NET Core" multiplateforme ...

Don't forget to Have fun!

lundi 19 juin 2017

ASP.NET MVC & WebAPI + Angular2 - Templates for Visual Studio 2017

Au sujet d'Angular2 et des templates pour Visual Studio, en reprenant ce sujet je suis un peu surpris de constater que l'on tombe à nouveau sur le Pack de Mads Kristensen que j'adore par ailleurs. La fois précédente, j'étais avec Visual Studio 2015 et MVC5, je devais installer tout un tas de trucs :

Visual Studio 2015 Update 3. Note that Update 2 is not enough.
.NET Core 1.0.1
TypeScript 2.0 for Visual Studio 2015.
Node.js version 4 or later.

Maintenant que je suis avec Visual Studio 2017 quel est le Template me propose Mads ? J'ai hâte de le découvrir.

ASP.NET and Angular2

Templates for Visual Studio 2017

Actuellement mon Visual Studio 2017 me propose comme application Web, les templates suivants :

Visual Studio 2017 Templates de base
Application web ASP.NET (.NET Framework)
Application web ASP.NET Core (.NET Core)
Application web ASP.NET Core (.NET Framework)

Visual Studio 2017 Templates
Si je choisie MVC :

Visual Studio 2017 Templates MVC
J'obtiens la structure d'application suivante :
Template pour ASP.NET .NET Framework MVC
Si je choisie WebAPI, j'obtiens la structure d'application suivante :

Template pour ASP.NET .NET Framework WebAPI

Comparaison des Templates MVC et WebAPI

J'en profite au passage pour repérer les grandes différences entre les deux types d'application MVC et WebAPI.

ASP.NET MVC vs ASP.NET WebAPI
Au niveau du fichier Global.asax.cs on notera la différence fondamentale suivante :

Global.asax.cs MVC vs WebAPI

Installation du Pack

Je clique sur le .vsix de Mads : ASP.NET Core Template Pack v1.1.37.vsix
Une petite popup plus loin :
Installation du ASP.NET Core Template Pack
Ben en fait, quedalle, nada, wallou ... il s'agit d'une erreur de ma part je n'ai pas lu assez profondément les prérequis du Template Pack qui ne s'installe qu'avec Visual Studio 2015.

Fin des opérations.
Qu'elle déception !

ASP.NET MVC WebAPI + Angular2 with Visual Studio 2017

Je pensais que l'utilisation de Visual Studio 2017 simplifierait les choses mais pour l'instant pas de Template. Donc, création d'une application de base ASP.NET .NET Framework MVC WebAPI Angular2 "à la mano" :

Fichier->Nouveau->Projet :
Création d'un projet Application Web ASP.NET .NET Framework MVC WebAPI Angular2
Choix du Template de base .NET Framework 4.6.1 :

Application web ASP.NET (.NET Framework)
Choix des options l'application modèle ASP.NET 4.6.1 :

ASP.NET 4.6.1 MVC option WebAPI
Il s'agit maintenant de configurer les packages Angular2 à l'aide de l'outil NPM (Node Package Manager)

Création du fichier package.json dans le projet

On créé un fichier .json nommé package.json  :

Ajouter une légende
Création d'un fichier de package JSon :

package.json pour l'utilçisation de NPM

Contenu du fichier package.json sur GitHub

Je vais chercher le contenu de ce fichier à l'adresse suivante :

https://github.com/angular/quickstart/blob/master/package.json
Je remplis mon nouvel élément .json avec le contenu de ce fichier trouvé sur GitHub :

Contenu du fichier package.json

Restauration des packages Node.js pour Angular2

En cliquant droit sur le fichier package.json->Restaurer les pacakges :

Fonctionnalité de Restauration des packages Nodes sur un fichier package.json
Le résultat de l'exécution de cette commande dans le fenêtre de Sortie : Bower/npm :
Sortie : Bower/npm
Un répertoire node_modules a été créé dans la solution :
Cliquez sur Afficher tous les fichiers :

Répertoire des packages NodeJS

Configuration du SystemJS

Ajout d'un fichier systemjs.config.js dans la solution :

Création du fichier systemjs.config.js
Son contenu se trouve à l'adresse suivante : 

systemjs.config.js

Configuration du TypeScript JSON

Ajouter->Nouvel élement ... tsconfig.json
Son contenu sur GitHub :

Le fichier de Configuration TypeScript sur le site de GitHub
Voilà notre application de base pour Angular2 est maintenant prête, elle s'exécute :

Exécution de l'application ASP.NET .NET Framework MVC WebAPI + Angular2 pour Visual Studio 2017
Je me demande bien pourquoi tout cela n'est pas encore dans un Template, je suppose que maintenant il est facile de démarrer avec Visual Studio 2017 et Angular2, cela intéresse donc moins Mads.

Template MVC WebAPI + Angular2 pour Visual Studio 2017

Supprimer le contenu du répertoire packages qui pèse 52,6 Mo
Supprimer le répertoire node_modules qui pèse 103 Mo

Archivez le tout.

Cliquez sur le lien suivant pour télécharger le projet Visual Studio 2017

Restaurer les NuGets

Pour restaurer votre application de base avec Angular2, il faudra restaurer les packages nugets par :
Bouton droit sur le projet->Gérer les packages NuGet...

Gérer les packages NuGet
Gestionnaire de packages NuGet : ASP.NET Framework MVC WepAPI + Angular2 

Gestionnaire de packages NuGet

Restaurer les packages NodeJS pour Angular2

Sur le fichier de gestion des packages faites Bouton droit->Restaurer les packages :

Restaurations des packages NodeJs pour Angualr2
Voilà, vous êtes enfin prêt à travailler avec ASP.NET en C# modèle MVC & WebAPI + Angular2.

Souriez, j'espère que vous êtes content !