OVH Cloud OVH Cloud

Comment créer une librairie de scripts ?

19 réponses
Avatar
JyM
Bonjour au groupe

J'ai créé un site avec un certain nombre de pages qui utilisent à peu près
toutes les mêmes scripts.

- Comment créer une librairie ? Faut il un programme spécial ?
- Y a-t-'il un ordre particulier qui accélère l'exécution des fonctions ?
(par ex. les fonctions les + utilisées en tête).
- Les fonctions de la librairie sont-elles appelées 1 par 1, ou toute la
librairie est elle chargée pour utiliser une fonction ?
- Comment sont passés les arguments des fonctions ?
- Et finalement y-a-t-il un site qui réponde à ttes ces questions??

Merci

9 réponses

1 2
Avatar
zwetan
"Jean-Marc MOLINA" wrote:

Par rapport à la création d'une bibliothèque je te recommande de regrouper
tes fonctions ou classes (grâce au prototypage) en modules/composants. Par
exemple mettre toutes les fonctions pour gérer des chaînes de caractères
dans un fichier string.js. Je te conseille aussi de préfixer tes fonctions
par un nom unique afin de ne pas entrer en conflits avec les fonctions de
base ou celles d'autres bibliothèques, par exemple utilise le préfixe
"JyM_". Dans d'autres langages on parle d'espace de nom (C++) ou de
"package" (Java). C'est une notion qui n'existe pas en JavaScript mais ça
n'est pas une raison pour transformer sa biblio en bordel :).


en effet
une autre manire que j'aime bien
c'est d'organiser les scripts "class" dans des repertoires "packages"

et en // utiliser les objets comme des espaces de nom

|_ malib
|_ string.js
|_ utils.js
|_ malib.js

malib = {};
malib.string = {};
malib.utils = {};
etc..




On peut même
pousser le vice jusqu'à utiliser un préfixe pour les modules. Ça permet de
dissocier par exemple une fonction de comparaison de chaînes et de...
personnes : JyM_string_comp Vs. JyM_perso_comp. On voit tout l'intérêt de
la

chose quand la biblio commence à avoir un certain nombre de fonctions,
c'est

beaucoup plus facile de s'y retrouver. De même comme certains éditeurs
(Eclipse) permettent d'accéder à une fonction en un clic, si les fonctions
sont bien nommées (en utilisant des préfixes) on le retrouve plus
facilement.



et a propos d'Eclipse voir cette extension
que je trouve TRES TRES pratique
JS Eclipse
http://www.interaktonline.com/Products/Eclipse/JSEclipse/Overview/


Quand on développe, même une petite biblio, c'est aussi sympa de
documenter

son code. Ça permet de s'y retrouver quand on replonge dedans quelques
mois

plus tard. Et l'intérêt d'une doc prend tout son intérêt quand on veut
partager sa biblio avec des amis "geeks" :). Voir la discussion
42dd2c02$0$10635$ où je parle de JSDoc
(http://www.sourceforge.net/projects/jsdoc). C'est un langage de
documentation, embarqué à JS, qui permet d'indiquer par exemple la
description d'une fonction, ce qu'elle fait, et de décrire ses
paramètres...

que du bonheur.



perso je prefere NaturalDocs
mais bon question de preference je suppose :)


Sinon gros point noir, avis perso, on ne peut pas inclure un autre script
depuis un script. Par exemple si le module des persos utilise des
fonctions

du module de gestion des chaînes de caractères, on ne peut pas l'indiquer
dans son code. Il faut obligatoirement inclure le module "string" avant
d'inclure le module "perso", dans la page HTML. Ça devient assez
fastidieux

et plutôt bordélique à force. Dans d'autres langages comme C++, PHP ou
Java

on indique explicitement que tel module à besoin de tel autre. On inclut,
on

importe... question de savoir qui fait quoi et avec qui.



humm ca depends

en definissant des functions de cette maniere

StringUtil = {};
function NS_trim(){ ..}
StringUtil.trim = NS_trim;

oui il faut prendre en compte l'ordre des scrips

par contre si on declare des fonctions anonymes

StringUtil = {};
StringUtil.trim = function() {...};

on peut tres bien utiliser le chemin objet "StringUtil.trim"
avant que la fonction elle-meme soit utilisée

apres donc il ne reste qu'a s'assurer que le script contenant la definition
de la fonction soit bien chargé avant de l'appeler

Si tu trouves des références sur le sujet ça m'intéresse ! Je peux t'en
retrouver sur les "best practices" pour nommer ses fonctions et variables,


je ne dirais pas jusqu'a dire que c'est uen referecne de "best practice"
mais bon je trouve la maniere d'orgnaiser mes codes plutot solide
cf ici http://live.burrrn.com/browser/ECMA-262


ça sera déjà un bon début. De même pour l'organisation des fichiers, ça
peut

sembler simple et évident mais plus la biblio se développe et plus
facilement elle se transforme en chaos. D'où l'intérêt de planifier un peu
tout ça...

Bon c'était juste pour le plaisir d'en parler, sujet passionnant.



idem :)

zwetan

Avatar
ASM
"Jean-Marc MOLINA" wrote:

JSDoc
(http://www.sourceforge.net/projects/jsdoc). C'est un langage de
documentation, embarqué à JS, qui permet d'indiquer par exemple la
description d'une fonction, ce qu'elle fait, et de décrire ses


paramètres...

que du bonheur.


perso je prefere NaturalDocs
mais bon question de preference je suppose :)


De mon jeune temps (et de mémoire) je n'avais rien compris
à ce jsdoc ... !
Et n'y suis plus jamais retourné.

où trouve t-on ce NaturalDocs ?
(voir à voir)




--
Stephane Moriaux et son [moins] vieux Mac


Avatar
zwetan
"ASM" wrote:

De mon jeune temps (et de mémoire) je n'avais rien compris
à ce jsdoc ... !
Et n'y suis plus jamais retourné.

où trouve t-on ce NaturalDocs ?
(voir à voir)



http://www.naturaldocs.org/

:)

Avatar
Jean-Marc MOLINA
Bertrand B wrote:
il me semble qe JSON et JSAN décrivent des modèles d'inclusions
un point d'entrée :
http://ajaxpatterns.org/On-Demand_Javascript


Voilà qui est intéressant. Du JavaScript distribué. Par contre un mécanisme
dans le langage serait le bienvenu car faire du "On Demand" pour une chose
aussi basique...

Avatar
Jean-Marc MOLINA
zwetan wrote:
et a propos d'Eclipse voir cette extension
que je trouve TRES TRES pratique
JS Eclipse
http://www.interaktonline.com/Products/Eclipse/JSEclipse/Overview/


Moi le projet WTP : http://eclipse.org/webtools/index.html. Après si vous me
trouvez un débogueur JavaScript intégré à Eclipse... je suis preneur ! Pour
l'instant je me contente du débogueur de Mozilla, ce qui est déjà pas mal.

perso je prefere NaturalDocs
mais bon question de preference je suppose :)


Projet intéressant ! Moi j'utilise aussi Doxygen mais hélas il ne supporte
pas JavaScript. Après c'est tout l'intérêt du Javadoc, c'est un standard et
il est facile de trouver un outil qui le supporte. Par contre le concept de
Natural Docs reste intéressant.

je ne dirais pas jusqu'a dire que c'est uen referecne de "best
practice" mais bon je trouve la maniere d'orgnaiser mes codes plutot
solide
cf ici http://live.burrrn.com/browser/ECMA-262


Tu parles de la hiérarchie "à la Subversion" ?

Avatar
zwetan
"Jean-Marc MOLINA" wrote in message
news:43cbc628$0$31870$
zwetan wrote:
et a propos d'Eclipse voir cette extension
que je trouve TRES TRES pratique
JS Eclipse
http://www.interaktonline.com/Products/Eclipse/JSEclipse/Overview/


Moi le projet WTP : http://eclipse.org/webtools/index.html. Après si vous
me

trouvez un débogueur JavaScript intégré à Eclipse... je suis preneur !
Pour

l'instant je me contente du débogueur de Mozilla, ce qui est déjà pas mal.



as tu vu comment JS Eclipse gere la completion de code ?
c'est le seul editeur que je connaisse qui liste correctement ce qui est
déclaré
dans le prototype (apres je n'ai pas testé intensivement WTP)

[snip]

je ne dirais pas jusqu'a dire que c'est uen referecne de "best
practice" mais bon je trouve la maniere d'orgnaiser mes codes plutot
solide
cf ici http://live.burrrn.com/browser/ECMA-262


Tu parles de la hiérarchie "à la Subversion" ?



humm c'est plus l'organisation generale
systeme de build
generation de librairies
generation de doc
unit tests
et oui versioning avec SVN

c'est un peu un ensemble que je trouve cohérent
le code est construit, testé, nettoyé, etc.

mais bon je suis pas le seul a faire comme ca,
mochikit ( http://www.mochikit.com )fait comme ca aussi,
sauf que les builds sont gérées par python,
les unit tests testés par un autre "framework",
la doc générée par python etc.

zwetan


Avatar
Bertrand B
Bertrand B wrote:
il me semble qe JSON et JSAN décrivent des modèles d'inclusions
un point d'entrée :
http://ajaxpatterns.org/On-Demand_Javascript


Voilà qui est intéressant. Du JavaScript distribué. Par contre un mécanisme
dans le langage serait le bienvenu car faire du "On Demand" pour une ch ose
aussi basique...


Mais bon dans Javascrit il manque plein de chose par exemple dans la

page en question il y a la ligne :
// If not loaded yet, wait for next syn

Et oui et il n'y a pas de moyen simple de faire un sleep (d'autant plus
important que certains navigateurs ne sont visiblement pas mutlihread)

Autre point tout aussi emb^étant si n ultiplie les settimeout ou les
xmlhtpreuqest en mode asynchrone on se retrouve vite en situation
multitache sans aucun outil de type sémaphore

pour paraphraser je dirais que javascript n'est pas fait pour ça (ou pa s
encore puisque import est un mot réservé il y a de l'espoir).

--
Un blog sur les pages persos de wanadoo ?
chtioblogue : http://perso.wanadoo.fr/bertrand.belguise/blog/blog.html
(Totalement client-side sans php ni base de donnée)


Avatar
ASM

Autre point tout aussi emb^étant si n ultiplie les settimeout ou les
xmlhtpreuqest en mode asynchrone


[private jock]
vivement le prochain Noël et le nouvo qulavié ! :-)
[/private jock]


--
Stephane Moriaux et son [moins] vieux Mac

Avatar
Jean-Marc MOLINA
zwetan wrote:
as tu vu comment JS Eclipse gere la completion de code ?
c'est le seul editeur que je connaisse qui liste correctement ce qui
est déclaré
dans le prototype (apres je n'ai pas testé intensivement WTP)


Oui ! De toutes façons je ne développe qu'en programmation prototypée.

humm c'est plus l'organisation generale
systeme de build
generation de librairies
generation de doc
unit tests
et oui versioning avec SVN

c'est un peu un ensemble que je trouve cohérent
le code est construit, testé, nettoyé, etc.


On voyait tout ça dans l'adresse que tu as donnée ?! :). Plus sérieusement
il est clair qu'avoir un processus de développement cohérent est important.
Pour les tests je te recommande de jeter un coup d'œil à XP (eXtreme
Programming).

Sinon pour le "source code control" ça été la révolution quand j'ai
découvert Subversion.

mais bon je suis pas le seul a faire comme ca,
mochikit ( http://www.mochikit.com )fait comme ca aussi,
sauf que les builds sont gérées par python,
les unit tests testés par un autre "framework",
la doc générée par python etc.


Sympa cette petite biblio ! Il y a même une démo AJAX d'une liste.

1 2