Je travaille sur une mise en œuvre d'un service Web où nous écrivons notre code avant de Coffeescript. Le problème que j'ai trébuché est tandis que le projet augmente la fonctionnalité doit être séparé dans différents fichiers. Ce dont j'ai vraiment besoin est une structure simple où dans le fichier utils.coffee code> i sera les fonctions générales requises à partir de chaque page et sur chaque fichier séparé que je disposerai
page_foo.coffee Code>
page_bar.coffee code> les fonctions spécifiques. Comment puis-je structurer correctement, donc je vous assure aussi
utils.coffee code> en premier et est accessible à partir de tout le monde? P>
4 Réponses :
L'ordre d'exécution est respecté sur les navigateurs, il suffit donc d'inclure Un outil tel que CodeKit (http://incident57.com/codekit/) peut compiler et minifier + rejoindre + Joindre Tous vos fichiers Si votre application est vraiment grande, lisez-la sur exiger.js et module asynchorone Chargement . Cela vous permettra de gérer des dépendances très facilement et de ne pas charger ce qui est nécessaire: p> utils.js code> d'abord.
.COFFEE CODE> dans un
.js code>, facile à voir avec un script shell aussi. p>
Ce que je fais est d'écrire une tâche de gâteau pour rejoindre et compiler des fichiers dans une séquence prédéterminée, par exemple où Vous pouvez ajouter des tâches pour minimiser le code compilé à l'aide de Yuicompressor ou de votre outil préféré. Et pendant le développement de la surveillance, la compilation, la compilation peut également être automatisée p> consulter Cet gist p> p> outjs code> est le nom de fichier où je veux Le JavaScript compilé et
strfiles CODE> est une chaîne de noms de fichiers p>
Avec CoffeeCaster, vous avez la possibilité d'inclure des fichiers dont vous aurez besoin en haut d'entre eux, en veillant à ce que votre fichier ".js" final (qui sera également une fusion de tous vos fichiers Coffeescript) ont tout dans le bon Commande, à utiliser à l'intérieur du navigateur.
Jetez un coup d'oeil sur les documents:
http://github.com/serpentem/coffee-toaster P>
IT Livré également avec un système d'emballage que lorsqu'il est activé utilisera la hiérarchie de votre dossier en tant que déclarations d'espaces de noms à vos classes si vous le souhaitez, vous pouvez donc étendre les cours à partir de plusieurs fichiers, les importations et les fils, tels que: P>
# => SRC FOLDER toast 'src_folder' # => VENDORS (optional) # vendors: ['vendors/x.js', 'vendors/y.js', ... ] # => OPTIONS (optional, default values listed) # bare: false # packaging: true # expose: '' # minify: false # => HTTPFOLDER (optional), RELEASE / DEBUG (required) httpfolder: 'js' release: 'www/js/app.js' debug: 'www/js/app-debug.js'
Comment puis-je exposer un espace de noms complexe par exemple ACME.Sales.Admin de sorte que c'est la racine de mon application?
Vous créez ces dossiers l'un à l'autre et placez vos fichiers à l'intérieur «AcMe / Sales / Admin / Yourfile.Coffee».
CoffeeCeoaster a été Discontinue et forcée à un nouveau projet, Polvo .
Vous pouvez vérifier comment cela se fait dans projet GAE-init (Disclaimer: Je suis le Créateur). P>
L'idée de base est que vous avez tous les fichiers Depuis que vous souhaitez pouvoir déboguer facilement, lorsque vous le développez, le script de construction doit avoir une option pour simplement les compiler et une autre option pour les combiner et les minimiser. P> *. Coffee code> dans un répertoire spécifique, puis un script de construction compilant tous les fichiers et les mettre dans les chemins correct. P>
Merci j'ai changé ma réponse uniquement à cause de la génialité de celui-ci. Il fournit non seulement une structure optimisée de performance pour le café, mais une grande pile d'outils que j'utilise couramment.
Je ne savais même pas que vous pourriez "non accepter" une réponse :) Vous devriez examiner la propre Gâteau utilitaire Si vous allez cette route (une langue moins dans la pile alors)
C'est une bonne idée, mais cela vous empêche d'avoir 2 fichiers avec le même nom, comme dites Vues / NavItem et Models / NavItem
@watson non, ce n'est pas si vous le gérez correctement .. Vous devez prendre en compte tout le chemin et non seulement le nom de fichier ..
Ce n'est pas spécifique à Coffeescript, mais un problème général avec JavaScript. Ça étant dit ... voir "Structuring CoffeScript Code?" , et spécifiquement ma réponse Here .