/ / Prečo sakra pridáva ďalší kód Rails 3.1 / Sprockets 2 / CoffeeScript? - coffeescript, ruby-on-rails-3.1, ozubené kolesá

Prečo je heck Rails 3.1 / Sprockets 2 / CoffeeScript pridaním extra kódu? - koffeescript, rubín na koľajniciach-3.1, reťazové kolesá

Práca s koľajnicami 3.1 (rc5), a všimol som si, že každý súbor, ktorý obsahuje koffeescript, vrátane koľajníc (alebo reťazových kolies), sa pridáva do inicializácie javascriptu v hornej a dolnej časti. Inými slovami, výstup prázdneho súboru .js.coffee bude vyzerať takto:

(function() {
}).call(this);

To je dráždivé, pretože to priťahuje mojerozsah javascriptu (pokiaľ naozaj neviem, čo robím). Vo všeobecnosti rozdelím všetky svoje triedy javascriptov do samostatných súborov a verím, že ak ich funkčný kód obalí moje triedy, jednoducho ich vyradia z rozsahu. Alebo aspoň, zdá sa, že k nim nepristupujem, pretože neustále dostávam nedefinované chyby.

Existuje spôsob, ako to potlačiť? Zdá sa, že tento súbor v reťazových kolách má čo do činenia s pridaním tohto kódu: https://github.com/sstephenson/sprockets/blob/master/lib/sprockets/jst_processor.rb

Chápem, že zabalenie všetkého do funkcie by sa mohlo javiť ako ďalšie pohodlie, pretože vtedy sa nič nespustí, kým sa nenačíta DOM, ale pokiaľ to dokážem povedať, len to zkazí môj rozsah.

odpovede:

10 pre odpoveď č. 1

Máte v úmysle dať svoje objekty doglobálny rozsah? Myslím, že CoffeeScript zvyčajne zabalí kód do anonymných funkcií tak, aby náhodne nevnikol premenné do globálneho rozsahu. Ak neexistuje spôsob, ako ho vypnúť, najlepšie by bolo, keby ste konkrétne pridali čokoľvek, čo chcete. globálny rozsah objektu okna:

window.myGlobal = myGlobal;

Zdá sa, že ide o osvedčený postup javascriptudní vložiť kód do funkčného rozsahu a byť explicitný o pridávaní objektov do globálneho rozsahu a je to niečo, čo zvyčajne vidím CoffeeScript robiť automaticky.


2 pre odpoveď č. 2

Nechcete dať všetko do globálneho rozsahu. Chcete modul alebo modul, ako je systém, v ktorom môžete pomenovať veci, takže sa nemusíte zblížiť s inými knižnicami. Prečítajte si

https://github.com/jashkenas/coffee-script/wiki/Easy-modules-with-coffeescript