Hvad er den bedste måde at bruge CoffeeScript på med Django, hvis du udvikler dig på Windows?

Indlæg af Hanne Mølgaard Plasc

Problem



Mens du begynder at bruge Sass/Compass med Django, kunne det ikke være meget nemmere uanset platform, har det været lidt at søge rundt for at finde den bedste måde at bruge CoffeeScript på med Django på en Windows-udviklingskasse. [16]

Bedste reference


Node support på Windows er forbedret betydeligt siden jeg offentliggjorde mit originale svar (som jeg vil forlade til historiske formål), så nu er det meget nemmere at få det til at fungere.



  1. Download og installer Node ved hjælp af Windows installationsprogrammet. Du får automatisk node og npm kommandoer til din Windows PATH (tilgængelig i cmd.exe). [17]

  2. Installer CoffeeScript: npm install -g coffee-script. Så bare for at teste, ved hjælp af cmd.exe ...


    coffee --version
    CoffeeScript version 1.4.0 #sweet!
    

  3. Installer django-kompressor: pip install django-compressor.

  4. Føj til dine indstillinger.py så django-kompressoren forkompilerer din CoffeeScript.


    COMPRESS\_PRECOMPILERS = (
        ('text/coffeescript', 'coffee --compile --stdio'),
    )
    

  5. Profit! Brug nu * .coffee filer eller inline CoffeeScript i Django skabeloner og få det automatisk kompileret til javascript og kombineret med dine andre scripts i en enkelt komprimeret fil.


    Eksempel (taget fra django-kompressor docs): [18]


    {\% load compress \%}
    
    {\% compress js \%}
    <script type="text/coffeescript" charset="utf-8" src="/static/js/awesome.coffee" />
    <script type="text/coffeescript" charset="utf-8">
      # Functions:
      square = (x) -> x * x
    </script>
    {\% endcompress \%}
    



Original svar (forældet):


Målet er at kunne skrive CoffeeScript lige inde i Django skabeloner og få det til automatisk at konvertere til Javascript (sammen med .coffee filer). django-kompressor har en precompiler, der gør dette, før filkomprimeringen den er bedst kendt for.


Selvfølgelig er problemet, at du vil bruge Windows (hvad er der forkert med dig?), Og precompiler forudsætter at du har en typisk Linux-installation af node.js og kaffe-script, der kan påberåbe 'kaffe' fra kommandolinjen med alle sine standardindstillinger. For at få den samme funktionalitet Windows (uden at ty til cygwin), skal du bare lave en lille .bat-fil:



  1. Grib det nyeste Windows-binære node

  2. Tilføj stien, der indeholder node.exe til PATH i Windows-systemmiljøvariabler

  3. Vælg en af:



    1. Da npm ikke er tilgængelig for Windows, kan du bruge ryppi , en minimal Python-nodepakkehåndtering til at installere kaffeskriptpakken. Sæt ryppi.py i din Python scripts-mappe.


      cd /d C:Users<USERNAME>  #'node\_modules' folder can live here or wherever
      ryppi.py install coffee-script
      

    2. Bare download kaffe-script fra hovedwebstedet


  4. Tilføj stien \ til \ coffeescript \ bin (indeholdende 'kage' og 'kaffe') til din PATH i Windows-systemmiljøvariabler

  5. Lav en batchfil , så du kan bruge 'kaffe' fra kommandolinjen (kredit for dette) ved at oprette en coffee.bat-fil i sti \ til \ coffeescript \ bin-mappen ovenfor med dette som indhold: [19]


    @pushd .
    @cd /d \%~dp0
    @node coffee \%*
    @popd
    


    Uden dette skal du gøre 'node \ path \ to \ bin \ coffee' i stedet for bare 'kaffe'.

  6. Prøv at genåbne cmd.exe og skriv ...


    coffee --version
    CoffeeScript version 1.1.2  #sweet!
    


    Nu bruger du det rigtige kaffe-script-program på node.

  7. Indstil django-kompressorpræcompilatoren til at bruge coffee.bat:


    COMPRESS\_PRECOMPILERS = (
        ('text/coffeescript', 'coffee.bat --compile --stdio'),
    )
    


    Jeg lægger det i min local\_settings.py-fil. Bare slip af .bat som sædvanligt i indstillingsfilen, der bruges af din Linux-produktionsserver eller udviklingsboks. Windows var ikke glad uden.

  8. Profit!


    Nu kan du bruge inline CoffeeScript i dine Django skabeloner, og få den automatisk kompileret til javascript og kombineret med alle dine andre scripts i en enkelt komprimeret .js fil. Jeg vil efterlade detaljer om brug af django-kompressor til dets dokumentation. [20]


Andre referencer 1


Du kan bruge en af ​​disse CoffeeScript kompilatorer.


Nogle af dem understøtter filsystemsyn, ligesom den officielle nodepakke. Så du kan starte en konsol og gøre


coffee -c src/ -o /bin --watch 


og alle coffeescript-filerne i src bliver automatisk genkompileret, når de ændres. Du behøver ikke nogen særlig integration med django, selv om det kan være dejligt.

Andre referencer 2


Django Pipeline (Django>=1.5) understøtter CoffeeScript compilation, samt masser af andre ting (fx MINDER, SASS, JS/CSS minificering, osv.). Sørg for at have CoffeeScript installeret, så pip install django-pipeline, tilføj 'pipeline' til din INSTALLED\_APPS og opret derefter følgende config-indgang: [22]


PIPELINE\_COMPILERS = (
  'pipeline.compilers.coffee.CoffeeScriptCompiler',
)


Derefter kan du oprette filer til kompilering som pr. De tilknyttede dokumenter - dybest set kun kildefil (er), destinationsfil og et navn. Du kan henvise til de komprimerede filer med dette navn i skabeloner, der kan lide dette:


{\% compressed\_js 'my\_compressed\_js' \%}

Andre referencer 3


Dette ser lovende ud for mig: http://pypi.python.org/pypi/django-coffeescript/[23]

Andre referencer 4


Jeg finder den forsinkelse, som kompilering via kompressor tilføjer, er for meget. Så jeg kompilerer på klientsiden i stedet og tjekker js-filerne. Øjeblikkelig og meget praktisk, hvis du begynder at se filer, når kommandoen runserver er kørt:


https://gist.github.com/EmilStenstrom/4761479[24]