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