84 votes

JavaScript require() sur le côté client

Est-il possible d'utiliser require() (ou quelque chose de similaire) sur le côté client?

Exemple

var myClass = require('./js/myclass.js');

Merci pour la réponse.

41voto

Andrew Hare Points 159332

Vous devriez regarder dans require.js ou head.js pour cela.

25voto

dkastner Points 161

J'ai été en utilisant browserify. Il me permet aussi de s'intégrer Node.js des modules dans mon code côté client. J'ai blogué à ce sujet ici: http://numbers.brighterplanet.com/2011/08/04/add-node-js-commonjs-style-require-to-client-side-javascript-with-browserify/

14voto

Renaat De Muynck Points 1230

Si vous voulez avoir Node.js style require vous pouvez utiliser quelque chose comme ceci:

var require = (function () {
    var cache = {};
    function loadScript(url) {
        var xhr = new XMLHttpRequest(),
            fnBody;
        xhr.open('get', url, false);
        xhr.send();
        if (xhr.status === 200 && xhr.getResponseHeader('Content-Type') === 'application/x-javascript') {
            fnBody = 'var exports = {};\n' + xhr.responseText + '\nreturn exports;';
            cache[url] = (new Function(fnBody)).call({});
        }
    }
    function resolve(module) {
        //TODO resolve urls
        return module;
    }
    function require(module) {
        var url = resolve(module);
        if (!Object.prototype.hasOwnProperty.call(cache, url)) {
            loadScript(url);
        }
        return cache[url];
    }
    require.cache = cache;
    require.resolve = resolve;
    return require;
}());

Attention: ce code fonctionne, mais est incomplète (surtout url résolution) et de ne pas mettre en œuvre tous les Node.js caractéristiques (je viens de mettre cela ensemble la nuit dernière). VOUS ne DEVRIEZ PAS UTILISER CE CODE dans le réel des applications, mais il vous donne un point de départ. Je l'ai testé avec ce module simple et elle fonctionne:

function hello() {
    console.log('Hello world!');
}

exports.hello = hello;

13voto

serby Points 1425

Je me suis posé les mêmes questions. Quand j'ai regardé dedans, j'ai trouvé le choix écrasante.

Heureusement, j'ai trouvé cette excellente feuille de calcul qui vous aide à choisir la meilleure chargeur en fonction de vos besoins:

https://spreadsheets.google.com/lv?key=tDdcrv9wNQRCNCRCflWxhYQ

9voto

gor Points 6313

Jetez un oeil à requirejs projet.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X