我正在研究分离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')
})发布于 2017-07-31 14:15:20
此时,导出一个返回对象的函数。要检索对象,必须先执行导出的函数。如果只想要对象而不首先执行函数,只需导出对象而不是函数:
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')
}https://stackoverflow.com/questions/45417445
复制相似问题