38 votes

Est-il possible d'envoyer CoffeeScript sur le navigateur du client et de le compiler en JavaScript * ici *?

Est-il possible d'envoyer CoffeeScript sur le navigateur du client et de le compiler en JavaScript ici ?

 <script type="text/coffeescript">
    square = (x) -> x * x
    list = [1, 2, 3, 4, 5]        
    squares = (square num for num in list)
</script>
 

Le compilateur CoffeeScript étant écrit en JavaScript, puis-je l'envoyer au client pour compiler / exécuter ce code dans le navigateur du client?

50voto

Trevor Burnham Points 43199

Jeremy a déjà celui-ci, mais permettez-moi d'ajouter quelques détails importants et des mises en garde:

  1. À 39k au format gzip (à comparer avec jQuery à 29k), coffee-script.js est un gros fichier, de sorte que si vous êtes en train de laisser vos utilisateurs d'exécuter leurs propres CoffeeScript, vous ne devriez pas l'utiliser en production.
  2. Comme mentionné dans la documentation, chaque CoffeeScript extrait de l'être dans son propre anonyme de fermeture. Donc, votre exemple ne pas faire n'importe quoi-squares de ne pas être visibles de l'extérieur du script. Au lieu de cela, vous voulez le changer en window.squares = ....
  3. Tous les CoffeeScript code, qu'ils soient externes ou en ligne, sera exécuté après tout code JavaScript sur la page. C'est parce qu' coffee-script.js ne pas lire vos <script type="text/coffeescript> balises jusqu'à ce que après le document est prêt, en ce moment, votre JavaScripts avez déjà exécuté.
  4. Distance CoffeeScripts sont chargés via XMLHTTPRequest, ce qui signifie qu'ils doivent être hébergés sur le même domaine que votre site. (Certains navigateurs Chrome, à moins d'avoir un problème avec XMLHTTPRequests sur file:// chemins.)
  5. Actuellement, l'ordre dans lequel les différentes distance CoffeeScripts n'est pas garanti. J'ai soumis un patch pour cela, mais il n'est pas officiellement partie de la CoffeeScript encore. Voir ce pull request.

Ainsi, vous pouvez jeter un oeil à quelques solutions de rechange pour servir CoffeeScript compilé en JavaScript à la place. Si vous êtes en développement pour un Ruby ou Python serveur, il y a des plugins disponibles. J'ai essayé de les énumérer tous, à http://github.com/jashkenas/coffee-script/wiki/Web-framework-plugins.

Si vous êtes l'élaboration d'un site sans un backend, un outil que je recommande fortement la recherche est celle de l' Intermédiaire, ce qui vous permet de travailler avec CoffeeScript (ainsi que Haml et Sass, si vous voulez) au cours du développement, puis de compiler et de rapetisser pour un déploiement en production.

8voto

PandaWood Points 3487

La réponse est oui. Je ne vais pas répéter @Trevor est une excellente réponse, mais plutôt d'en donner un exemple de ce que vous pensez:

http://forgivingworm.wordpress.com/2010/09/27/running-coffeescript-in-browser/

Fondamentalement, vous

  1. Tag votre coffeescript avec le texte/coffeescript
  2. Inclure coffee-script.js après tout coffeescript sur la page (le compilateur d'évaluer et de compiler tous les coffeescript dans l'ordre)

Exemple de code HTML ci-dessous

<html>
<head>
<title>In-Browser test</title>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js&#8221;> </script>
<script type="text/coffeescript">
$ -> $(‘#header‘).css ‘background-color‘, ‘green‘
</script>
<script type="text/javascript" src="http://github.com/jashkenas/coffee-script/raw/master/extras/coffee-script.js&#8221;> </script>
</head>
<body>
<h1 id="header" style="color:white">CoffeeScript is alive!</h1>
</body>
</html>

2voto

Ciro Santilli Points 3341
 <!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="utf-8"/>
  <title>CoffeScript on browser</title>
</head>
<body>
<script type="text/coffeescript">
  alert 'It works!'
</script>
<script src="http://cdnjs.cloudflare.com/ajax/libs/coffee-script/1.7.1/coffee-script.min.js"></script>
</body>
</html>
 
  • CoffeeScript doit être chargé après le script que vous voulez exécuter.
  • si vous utilisez src vous devez pouvoir accéder au fichier via XMLHTTPRequest , en particulier il échoue sur les navigateurs avec file:// .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X