node.js - Refaktorovanie userscriptu na použitie javascript modulov
Pracujem na userscripte - konkrétne na tomto userscripte - ktorý bol navrhnutý tak, aby zapúzdroval funkcionalitu do modulov. Aby som mohol vykonať niektoré automatizované testovanie, rád by som rozdelil moduly do samostatných súborov a použil node.js funkcie pre exportovanie modulov a require na ich zjednotenie do jedného súboru na použitie v Greasemonkey alebo jednoduchých rozšíreniach prehliadača.
Moja prvá myšlienka bola jednoducho skopírovať moduly do ich vlastných súborov takto
module.js
var exportedModule = (function (){
var Module = {
// public functions and members
};
//private functions and members
return Module;
}());
module.exports = exports = exportedModule;
A potom mať centrálny súbor, ktorý vyžaduje každý z týchto modulov, možno ich kompilovať niečím ako Browserify.
script.js
var importedModule = require(./module);
importedModule.init();
Je to možné?
Odpoveď č. 1
Zdá sa mi, že by vám bolo lepšie používať Requirejs, ktorý používa moduly v štýle AMD a je prirodzene viac priateľský k prehliadaču. Node moduly v štýle commonjs sú synchronné a veľmi dobre nezapadajú do modelu prehliadača.
Samozrejme, používanie requirejs trochu zmení vaše skripty.
Odpoveď č. 2
Je to možné a Browserify to zjednodušuje:
browserify src/my.user.js -o dist/my.user.js
Metaúdaje v zdrojovom súbore sa môžu presunúť, ale stále sa správne analyzujú (aspoň Greasemonkey ich správne spracuje).
Pre komplexnejší príklad, ktorý kompiluje rôzne zdroje, vrátane CSS a obrázkov, pozrite si tu.
