2015-08-11 2 views
5

À quel point est-il facile d'utiliser des plugins jQuery prêts à l'emploi dans Elm? Je commence juste à apprendre Elm lang et je suis curieux de savoir s'il est possible d'utiliser les listes déroulantes de Semantic UI dans mon application. Comment devrait-on aborder cette tâche? Sans bibliothèques comme l'interface utilisateur sémantique, il est assez difficile de faire des listes déroulantes appropriées pour le mobile, par exemple, et l'écriture de tout ce code à partir de zéro semble comme réinventer la roue.Câbler Elm lang et l'interface utilisateur sémantique

+0

Je pense que ce dont vous avez besoin est [ports] (http://elm-lang.org/guide/interop) –

+0

Pourriez-vous élaborer? Dois-je créer un port pour chaque liste déroulante et le mettre à jour chaque fois qu'une partie correspondante de l'état a été modifiée dans la fonction 'update'? On dirait une tonne de passe-partout. –

+0

J'ai aussi ce problème, ayant déjà un site en semantique-ui. – alesch

Répondre

6

Ce n'est pas une bonne idée. L'orme est pur. Cela signifie que pour n'importe quel état donné, nous pouvons générer l'interface utilisateur. Et pour modifier l'interface utilisateur par programme, l'état doit changer.
La raison entière pour employer l'orme est en raison de la croyance que l'impureté est difficile à raisonner, et la pureté est préférée. JQuery permet à une action de lire directement & modifier l'interface utilisateur sans modifier l'état de l'application. C'est impur.

Ainsi, Elm et jQuery sont fondamentalement en désaccord et vous risquez d'entrer dans un pétrin en essayant de faire fonctionner les deux ensemble. La manière la plus simple de procéder est probablement de trouver une bibliothèque CSS ne nécessitant pas de JS, qui vous donne un ensemble de composants avec lequel vous pouvez travailler (par exemple http://purecss.io/) et utiliser Elm conjointement avec cela.

+3

Les bibliothèques externes sont un cas d'utilisation assez commun. Arrêter des tonnes de librairies externes parce qu'elles sont impures n'est pas une option. Vous ne pouvez pas réinventer la roue tous les jours. L'écosystème js doit être utilisable. – schlicht

+1

@schlicht toute la philosophie d'une langue pure est "impure n'est pas une option". Cela dit, l'état mutable externe peut être isolé et représenté comme un signal, et les modifications apportées à celui-ci sont modélisées en tant qu'effets et appliquées en tant que tâches. Mais alors vous perdez beaucoup d'avantages. – z5h

+1

Je suis légèrement en désaccord, le but imho est plus de réduire les impuretés au minimum et seulement d'avoir un contact avec lui étaient nécessaires. Sans effets secondaires, les programmes deviennent plutôt ennuyeux. Et d'un point de vue pratique, il est impossible de refaire tout ce dont on pourrait avoir besoin en orme. – schlicht

4

Je ne connais pas spécifiquement jQuery, mais Elm a un Ports/Interop System spécifiquement pour utiliser les bibliothèques Javascript existantes et éviter de réinventer trop de roues. Je ne l'ai pas utilisé mais cela pourrait correspondre à vos besoins.