2017-07-31 4 views
2

Je travaille sur une preuve de concept pour le modèle DOM ségrégé et j'utilise Browserify comme pipeline d'actifs. Par conséquent, je "demande" des modules car j'en ai besoin dans le code. S'il vous plaît voir cet exemple de code très simple:Requérir mes propres modules

var loginForm = require('page-objects/loginForm'); 

lf = loginForm(); 

lf.signInButton.on('click', function(event){ 
    event.preventDefault(); 
    lf.email.val('TEST') 
}) 

et est l'objet de la page ici:

module.exports = LoginForm; 

function LoginForm(){ 
    var $ = require('jQuery'), 
    navbarForm = $('form.navbar-form'); 

    return { 
     email: navbarForm.find('input[placeholder="Email"]'), 
     password: navbarForm.find('input[placeholder="Password"]'), 
     signInButton: navbarForm.find(':button') 
    } 
} 

Je ne comprends pas et ne peut pas trouver une recherche qui renvoie une réponse à pourquoi je dois instancier objets pour les utiliser. Les exemples que j'ai trouvés sur le Browserify GitHub et le Handbook ne montrent pas cela comme une exigence. Cependant, si je ne "monte" pas un objet comme celui-ci dans mon code, le module n'est pas trouvé ... Je voudrais savoir pourquoi. Y a-t-il des changements que je peux apporter à mon code pour NE PAS avoir à faire cela?

code

sans l'instanciation d'objet:

var loginForm = require('page-objects/loginForm'); 

loginForm.signInButton.on('click', function(event){ 
    event.preventDefault(); 
    loginForm .email.val('TEST') 
}) 
+0

Pourriez-vous montrer votre * ne sont pas « nouvelle place » code *? –

+0

modifié pour inclure le code sans l'instanciation de l'objet –

Répondre

0

En ce moment, vous exportez une fonction qui retourne un objet. Pour récupérer l'objet, vous devez d'abord exécuter la fonction exportée. Si vous voulez juste l'objet sans avoir d'abord exécuter une fonction, juste exporter l'objet au lieu d'une fonction:

var $ = require('jQuery'), 
var navbarForm = $('form.navbar-form'); 

module.exports = { 
    email: navbarForm.find('input[placeholder="Email"]'), 
    password: navbarForm.find('input[placeholder="Password"]'), 
    signInButton: navbarForm.find(':button') 
}