Bonjour,
Je cherche depuis plusieurs mois maintenant un moyen d'utiliser javascript de maniere orienté objet comme on peut le faire avec PHP (Classes, heritages, constructeurs, instanciation etc.)
Je recherche un moyen simple de pouvoir creer mon propre framework javascript et pouvoir le réutiliser de maniere flexible dans plusieurs projet différents. J'ai utilisé Jquery ou encore angularJS, mais je ne trouve pas ce dont je recherche car ces langages je les trouve assez bavards concernant le jquery, et angularJS je le trouve trop rigide bien que puissant.
Comment faire pour utiliser javascript en Orienté Objet afin de créer des classes dans lesquels je pourrais y mettre toutes sortes de fonctions et les instancier dans mon script ? Comment on met en place l'autoload le systeme d'autoload comme en php ? Si possible ?
Merci de votre aide
Je te recommande deux (très) bonnes lectures pour répondre à tes questions :
- Javascript : les bons éléménts (Douglas Crockford, traduit en français)
- Secrets of the Javascript Ninja (John Resig (le créateur de jQuery), pas (encore) traduit en français à ma connaissance)
Ces deux bouquins devraient éclairer ta lanterne concernant la nature même de javascript et son système d'héritage prototypal.
Sinon, en tant que tel, il n'y a pas d'autoload en javascript, mais je t'invite malgré tout à te pencher sur la lib browserify (ou commonJS, ou requireJS, c'est globalement pareil), qui permet d'utiliser, côté client, le système de modules fort utilisé dans node.js et qui présente la plupart des avantages que tu cherches.
Bon travail,
Je te déconseille d'utiliser la syntaxe es6 sauf si tu veux faire un site pour 2 navigateurs et demi.
https://kangax.github.io/compat-table/es6/
Pour avoir du code réutilisable je te conseille de créer des "objets".
t'as 2 syntaxes :
var obj = {
attr: valeur,
fct : function () {}
}
ou bien
var obj = function () {
mes attr... (var et fonctions, syntaxe en ".")
}
Faut savoir qu'il n'y a pas de classes en js mais des prototypes.
dans les 2 cas tu peux faire un new. La différence c'est que dans le 2eme cas t'as un constructeur
L'es6 n'introduit qu'une surcouche à cette syntaxe pour simuler une classe
Enfin, t'as un autre moyen de faire du code réutilisable avec jquery c'est de faire des plugins.
comme l'a dit lisarael, Douglas Crockford est considéré comme l'expert du js. Tu devrais lire son livre.
Babel compile en ES5 donc pas de soucis de compatibilité normalement nan ? Polyfill sur les composants ? http://babeljs.io/docs/advanced/caveats/#es5
Ouais sauf que Babel ne gère pas encore tout, et que, ES6 étant une mise à jour du langage, je trouve dommage, pédagogiquement parlant, de passer sur ES6 sans maîtriser les bases précédentes du langage (qui restent dans ES6), et qui sont tout aussi importantes à comprendre : l'importance des fonctions, les closures, la chaîne prototypale, etc... d'ici à ce qu'on puisse utiliser ES6 en natif, autant maîtriser ES5 sur le bout des doigts.
Non pas que ES6 soit mauvais, loin de là, mais j'ai l'impression que trop de gens le prennent comme une "solution" à leurs problèmes de compréhension de javascript.