繁体   English   中英

需要我自己的模块

[英]Requiring My Own Modules

我正在研究隔离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')
})

此时,您将导出一个返回对象的函数。 要检索该对象,必须首先执行导出的功能。 如果只需要对象而不先执行函数,则只需导出对象而不是函数即可:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM