需要我自己的模块

时间:2017-07-31 13:35:21

标签: javascript browserify

我正在研究隔离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和手册中找到的示例并没有显示这是一个要求。但是,如果我不这样做,那么新的"我的代码中没有找到这样的对象...我想知道为什么会这样。我可以对代码进行更改而不必执行此操作吗?

没有对象实例化的代码:

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

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

1 个答案:

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