Hogyan készítsünk JavaScript kompatibilis mind kliens és szerver oldali?

szavazat
2

Azt tudom, hogy modulok NodeJS (ez meglehetősen egyszerű). Azonban, ha azt szeretnénk, hogy valamit, ami feltehetőleg működik mind szerver és kliens oldali környezetben, akkor azt, hogy egyszer elérni ezt?

Képzeljük el, hogy szeretne létrehozni egy modell típusát ( „osztály”). Tegyük fel, hogy van egy class-teremtés nevezett funkció Lib.define(). Tehát írtad ezt:

Lib.Model = Lib.define({
    init: function() {
        // constructor...
    },

    save: function() {
        // saves the model.
    }
});

A fenti kód tenné Lib.Model egy objektumot, ami egy instantiable típusát. Azonban, hogy hogyan írnál úgy, hogy ez is NodeJS kompatibilis? Ha megpróbálja megköveteli a fenti fájlt ( require('Model.js')), akkor nem csinál semmit, mivel nincs hozzárendelés export. Ha azonban sikerül, akkor én csak állítólag van egy felesleges exporttárgy kliensoldali környezetben?

Van más módja van ennek mellett szükség, amelyek egyszerűen betölteni és feldolgozni a JS és a munka világszerte úgy, hogy a fenti kódot hozna Modeltagja a globális változó Lib?

I am looking be vm most, de nem vagyok biztos benne, hogy fogok én használni rendesen. Van egy fájl / osztálybetöltője hogy megoldja utak és rengeteg szkriptek, mint amit Dojo csinál. Írjak némi logika, hogy ott a megszokott módon működik a kliens oldali (helyezi szkriptcímkéket), és NodeJS, egyszerűen kiolvasta a fájl tartalmát, és vm.runInThisContext(code)?.

A kérdést 12/06/2011 13:10
a forrás felhasználó
Más nyelveken...                            


1 válasz

szavazat
1

JSHint csak érzékeli, hogy van egy exportsszimbólum, és hozzáteszi, hogy ez, ha van. Az ellenőrzés a következőképpen néz ki:

// Make JSHINT a Node module, if possible.
if (typeof exports == 'object' && exports)
    exports.JSHINT = JSHINT;

Ez ellenőrzi, hogy exportsvan egy objektumot, majd ellenőrzi, hogy ez nem null(via && exports). Úgy tűnik, hogy ésszerű megoldást, bár természetesen ez jellemző a CommonJS modulrendszer (ami Node használ).

Válaszolt 12/06/2011 13:17
a forrás felhasználó

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more