7
votes

Organisation de plusieurs fichiers Coffescript

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 i sera les fonctions générales requises à partir de chaque page et sur chaque fichier séparé que je disposerai page_foo.coffee page_bar.coffee les fonctions spécifiques. Comment puis-je structurer correctement, donc je vous assure aussi utils.coffee en premier et est accessible à partir de tout le monde?


1 commentaires

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 .


4 Réponses :


5
votes

L'ordre d'exécution est respecté sur les navigateurs, il suffit donc d'inclure utils.js d'abord.

Un outil tel que CodeKit (http://incident57.com/codekit/) peut compiler et minifier + rejoindre + Joindre Tous vos fichiers .COFFEE dans un .js , facile à voir avec un script shell aussi.

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: xxx


0 commentaires

2
votes

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 xxx

outjs est le nom de fichier où je veux Le JavaScript compilé et strfiles est une chaîne de noms de fichiers

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 xxx

consulter Cet gist


0 commentaires

7
votes

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'


3 commentaires

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 .



3
votes

Vous pouvez vérifier comment cela se fait dans projet GAE-init (Disclaimer: Je suis le Créateur).

L'idée de base est que vous avez tous les fichiers *. Coffee dans un répertoire spécifique, puis un script de construction compilant tous les fichiers et les mettre dans les chemins correct.

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.


4 commentaires

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 ..