Il est en effet illusoire de vouloir se servir de TiddlyWiki comme base d’apprentissage du langage JavaScript puisque TW5 ne fonctionne absolument pas comme une plateforme web classique.
Voici deux extraits éloquents issus des discussions sur le forum officiel en anglais:
1- Insertion JavaScript dans un Tiddler
Source Mail Archive
Jed Carty - Samedi, 04 Mars 2017
On peut toujours ouvrir un wiki et y ajouter du JavaScript, mais le code JS ne prendra effet qu’après le wiki aura été sauvegardé et relancé avec son nouveau contenu. De plus, le tiddler contenant le code doit être soit de type macro JavaScript et être tagué $:/tags/RawMarkup
, soit contenu dans un widget.
Dans tous les cas, la sauvegarde et le rechargement du wiki doivent être effectués avant qu’un code JS quelconque intégré ne prenne effet.
Je pense que ce comportement peut être modifié mis que ce n’est pas généralement recommandé.
Vous ne pouvez pas entrer de code JavaScript après que le wiki soit chargé et que ce code prenne effet pour des raisons de sécurité.
BJ Dimanche, 05 Mars 2017
On peut aussi utiliser un ifame dans un fichier tid standard:
<iframe sandbox = "allow-same-origin allow-scripts allow-popups
allow-forms" src= """data:text/html;charset=utf-8,<script
src="http://www.reddit.com/.embed?limit=5";
type="text/javascript"></script>"""/>
PMario Dimanche, 05 Mars 2017
TW assainit le code JavaScript écrit dans un tiddler standard pour des raisons de sécurité.
Les macros standard sont définies par \define ... \end ..
Ces macros sont et restituent du texte (“text substitutions”). Tout ce qui se trouve entre les termes “define - end” est du wikiTexte, qui est certes puissant mais tout de même limité comparé à du code JavaScript.
‘‘Les macros JavaScript’’ peuvent emprunter toutes les possibilités de JavaScript mais restent limitées à retourner du texte. En cela, elles fonctionnent exactement de la même manière que que les ‘‘macros wikitext’’… Les macros ne sont pas en mesure de “rafraîchir” le rendu de la sortie (output) comme peuvent le faire les ‘‘widgets’’. En conséquence elles sont plus simples à utiliser et à définir mais vous aurez toujours utiliser un réglage développeur.
Les macros JavaScript ont été introduites parce-que l’on en avait besoin pour traiter quelques cs particuliers. Il n’en demeure pas moins que le wikitext de TiddlyWiki reste très performant. Ces macros ne restent donc utilisées que dans quelques parties du core TW5.
Jeremy Ruston Dimanche, 05 Mars 2017
L’objectif des restrictions de sécurité de TiddlyWiki est de permettre de partager en toute sécurité le contenu entre les utilisateurs. Cela exige que le code JavaScript soit clairement identifié afin que le destinataire puisse décider s’il dispose de la confiance nécessaire ou non pour exécuter ce contenu; autoriser JavaScript en ligne (inline) dans des blocs en Wikitext rendrait impossible au destinataire de savoir s’ils peut restituer le wikitext entrant en toute sécurité.
D’où le fait que les macros JavaScript sont autorisées parcequ’elles sont déjà identifiées comme étant sûres et qu’elles peuvent être bloquées si nécessaire.
Le second facteur dans la conception de TiddlyWiki qui empêche l’utilisation de bibliothèques JavaScript tierces est que TiddlyWiki ne supporte pas le paradigme de développement Web traditionnel qui vise à conserver l’état des dans le DOM (c’est le paradigme popularisé il ya une décennie par jQuery). Au lieu de cela, TiddlyWiki utilise un DOM virtuel et des mises à jour différentielles (c’est le paradigme utilisé par les frameworks récents comme REACT).
Le résultat c’est que TiddlyWiki ne prend généralement pas en charge simplement la suppression dans une balise de script comme les pages Web traditionnelles. Cela dit, la bibliothèque de plugins TiddlyWiki contient de nombreux exemples d’intégration correcte des bibliothèques tierces.
PMario Lundi, 06 Mars 2017
Le core TW5 ne comporte que 11 macros JvaScript et 860 macros \define
déclarations dans l’interface utilisateur et dans les gabarits. dont environ 200 d’entre elles sont dupliquées dans les éditions TW5 traduites. Les macros se trouvent donc partout dans le noyau et nous n’avons que 11 exceptions qui ont été écrites en JavaScript. Tout le reste n’est que pure wikitext… À mon sens, c’est impressionnant.
Les macros JavaScript ne peuvent pas être modifiées par la plupart des utilisateurs. Les macros standard peuvent être modifiées par tous les utilisateurs. C’est une énorme différence.
Il y a une grande différence entre les macros de TiddlyWiki Classique (TWc) et TiddlyWiki5 (TW5). Ce sont deux choses totalement différentes.
Les macros TW5 ne sont que des substitutions de texte sans mécanisme de rafraîchissement intégré.
Les macros TWC ressemblent plus aux widgets actuels de TW5…
l’analyse et le rendu d’un langage spécifique à un domaine (DLC) est un sujet complètement différent, mais réalisable. Nous avons déjà de tels plugins.
Voyez par exemple des plugins tels que railroad, markdown, katex, qui peuvent vous mettre sur la voie…
2- Comment adapter des librairies JavaScript tierces à TiddyWiki
Source Mail Archive
Le problème de fond est que de nombreuses bibliothèques JavaScript utilisent une technique par laquelle l’état de l’interface utilisateur est stocké dans le DOM.
Ceci ne fonctionne pas dans TiddlyWiki5 (tout comme dans d’autres frameworks JavaScript modernes) car code est conservé dans les objets JavaScript et reconstruit de nouveaux éléments à la volée, sans passer par la case de rechargement du DOM. (Autrement dit, JavaScript en ligne est désactivé)
Il n’y a aucun moyen de convertir automatiquement le code JavaScript basé sur DOM pour travailler avec TiddlyWiki5.
La réponse à cette question nécessite donc
- D’apprendre JavaScript,
- Et d’apprendre TiddlyWiki5.
Jeremy Ruston (2015)
Tout ceci est un peu frustrant, mais il va falloir s’y faire…
Je pense qu’avant tout il faut impérativement comprendre les différents concepts sous-tendus par TW5, par exemple:
- Macros JavaScript
- Macros WikiText
- Widgets…
Il y en a d’autres dont il faut comprendre le sens avant d’étudier plus avant TW5.