2017-07-31 96 views
2

我正在研究分離DOM模式的概念證明,並且使用Browserify作爲我的資產管道。因此,我「需要」模塊,因爲我需要它們在代碼中。請看這個非常簡單的代碼示例:需要我自己的模塊

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

lf = loginForm(); 

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

這裏是網頁對象:

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') 
    } 
} 

我不明白,找不到返回的答案,爲什麼我需要實例化搜索對象使用它們。我在Browserify GitHub和Handbook上找到的例子並沒有表明這是一個需求。但是,如果我不在代碼中「新建」這樣的對象,那麼該模塊就沒有找到......我想知道這是爲什麼。我可以對我的代碼進行修改而不必執行此操作嗎?

代碼,而不對象實例:

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

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

你能否顯示你的*不是「new up」*代碼?編輯 –

+0

以包含沒有對象實例化的代碼 –

回答

0

此時,您導出它返回一個對象的函數。要檢索對象,必須先執行導出的函數。如果你只是想要對象沒有先執行一個函數,只需要導出對象而不是一個函數:

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') 
}