11
votes

Comment mélanger les plugins de soulignement dans les exigences?

Quelle est la bonne façon d'exécuter du code sur Souligné quand il est chargé? Je suis en train d'exécuter le dessous de code pour étendre le _ namespace exporté automatiquement lorsque les modules exigent:

require.config({
    paths: {
        jquery: 'libs/jquery/jquery.min',
        underscore: 'libs/underscore/lodash.min',
        underscorestring: 'libs/underscore/underscore.string.min'
    },

    shim: {
        underscore: {
            exports: '_'
        }
        underscorestring: {
            deps: ['underscore'],
            init: function (_) {
                //Mixin plugin to namespace
                _.mixin(_.str.exports());

                return _;
            }
        }
    }
});


0 commentaires

3 Réponses :


3
votes

Est-ce que vous exigez em> sous-traitant quelque part? Parce que si ce n'est pas nécessaire, cela ne sera pas chargé. J'ai réussi à le faire fonctionner avec presque exactement le même code que vous avez posté:

require.config({
    paths: {
        underscore: [
            '//raw.github.com/documentcloud/underscore/master/underscore-min'
        ,   'lib/underscore'
        ]
    ,   underscorestring: 'https://raw.github.com/epeli/underscore.string/master/dist/underscore.string.min'
    }
,   shim: {
        underscore: { exports: '_' },
        underscorestring: {
            deps: ['underscore'],
            init: function(_) { 
                _.mixin(_.str.exports());
                return _; // guess, this is not needed.
            }
        }
    }
,   exclude: ['underscore']
});

require(['underscore', 'underscorestring'], function(_) {
    console.log( _.chars("i'm a happy string.") );
});


0 commentaires

19
votes

Je ne sais pas si c'est la bonne façon, mais je l'ai eu de travail en inversant les choses afin que underscore dépend underscore.string. De plus, cette façon vous n'avez pas besoin underscore.string

define([
  'underscore',
  'underscore.string'
], function(_, _s) {
  _.mixin(_s.exports());
  return _;
});


2 commentaires

Il ne semble pas que "init" fonctionne dans la cale avec les dernières exigences. Consultez cette technique à la place: blog.falafel.com/blogs/basem-emara/2014/02/17/...


Vous pouvez utiliser la propriété Carte pour alias efficacement 'Undercore' sur votre "Underscore.Mixed". Voir Exigerjs.org/docs/jquery.html#noconflictMap



0
votes

Combattre avec cela pendant des heures avant de comprendre ce que je faisais mal

C'est ce que j'ai fait de mal p>

Vous ne devez pas renommer le fichier sous-traitant.string dans Main.js P> Même si dans ma bibliothèque, j'ai renommé le fichier dans les chemins que je le nomme Retour à "Unserscore.string" p>

Voici comment votre Main.js Strong> devrait ressembler à p> xxx pré>

Vous pouvez alors l'ajouter comme dépendance forte> avec votre shim comme je l'ai fait pour mon fichier de mixin p> xxx pré >

ou juste définir strong> dans vos différentes pages telles que P>

 /*global define */
define([     
    'underscore',
    'underscore.string'
], function ( ) {   
  _.mixin(_.str.exports());


0 commentaires