J'essaie d'obtenir CoffeScript travailler avec Sinatra. Je suis nouveau pour les deux technologies, donc c'est probablement quelque chose de stupide. Mon problème semble être que le CoffeScript compile à JavaScript mais n'exécute pas à la page, apparaissant plutôt comme HTML.
#sinatra app require 'coffee-script' get "/test.js" do coffee :hello end #hello.coffee alert "hello world" #My page (/test.js) doesn't execute the js - just displays the code #On screen in the browser I get this: (function() { alert("hello world"); }).call(this); #In the HTML I get this within the body tags <pre style="word-wrap: break-word; white-space: pre-wrap;">(function() { alert('hello world!'); }).call(this); </pre>
4 Réponses :
hmm ... il semble que votre exemple est basé sur Cette documentation Sinatra . Mais pour une raison quelconque, Sinatra essaie de servir le fichier code> en tant que HTML et le prétraiter en conséquence. Êtes-vous par exemple réglage
content_type code> ailleurs dans votre application? Essayez de changer votre code sur
get "/alert", :provides => 'html' do
'<script type=src="test.js"></script>'
end
Merci beaucoup pour votre réponse. J'ai essayé les deux mais toujours pas de chance - vous avez raison de ne pas être dans les tags de script cependant. J'ai ajouté des informations supplémentaires dans la question sur ce que je vois. Pourrait essayer les solutions de niveau de rack.
Je viens de créer un observateur sur mes fichiers de Coffeescript tout en développant Coffee -WC Dirname / Code> puis déployez les fichiers JS compilés vers la production. Ce n'est pas idéal, mais il est moins compliqué d'une certaine manière et supprime la dépendance à la nœud.js de mon serveur de production (qui dans mon cas est Heroku.) P>
En fait, le script de café de Ruby's's's's code> GEM (maintenant une valeur par défaut dans les rails 3.1) ne dépend pas du nœud. Il gère le compilateur de Coffescript (qui est un fichier JavaScript) via Execjs , qui cherchera à son tour le < un href = "https://github.com/cowboyd/therubyracer" rel = "nofollow NOREFERRER"> THERUBYRACER GEM; C'est un interpréteur JavaScript sans dépendances. Totalement hérékuable.
En particulier, vous voulez THERUBYRACER-HEROKU .
Ouais que Gem est utile. N'avait pas entendu comment cela a fonctionné avant, mais cela fait un sens parfait maintenant (Coffescript précompile à JavaScript avec un interprète JavaScript basé sur Ruby)
Ou, si vous utilisez jruby, Therubyrhino .
de Modèle Sinatra-Coffee-Script Je cherchais juste la même configuration.
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8" /> <title>Sinatra Coffee-Script Template</title> <style type="text/css"> .dark { background: #2F2F2F; color: #7F7F7F; } .light { background: #EEEEEE; color: #2F2F2F; } </style> </head> <body> <%= yield %> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.5.0/jquery.min.js"></script> <script src="/javascripts/listeners.js" type="text/javascript"></script> </body> </html>
Vous n'avez pas mentionné à propos de Application.js dans l'index.erb ou dans layout.erb..erb..Comment Is Sinatra le jetterait au navigateur
Utilisez un gemme comme Sinatra-Asset-Snack ( https://rubygems.org/gems/ Sinatra-Asset-Snack ) Ou encore mieux, utilisez une bootstrap pour démarrer votre projet afin que vous n'ayez pas à vous soucier de la configuration de la plomberie ( https://github.com/benkitzelman/sinatra-backbone-bootstrap ) p>
Lorsque vous dites "dans le HTML", quel HTML parlez-vous? Comment votre JavaScript a-t-il été intégré là-bas? En outre, il y a une incohérence supérieure-
"bonjour monde" code> vs. code> "bonjour enfants" code>.
Quand je dis "dans le HTML", je veux dire quand j'appuie la source de la page. IncoSistabilité corrigée - désolé pour toute confusion.
Juste, je comprends que, mais je demande: comment avez-vous créé cette page sur la fin de Sinatra?