需要我自己的模块
Requiring My Own Modules
我正在为隔离 DOM 模式进行概念验证,并使用 Browserify 作为我的资产管道。结果我是 "requiring" 模块,因为我在代码中需要它们。请看这个非常简单的代码示例:
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')
}
}
我不明白,也无法通过搜索找到 returns 为什么我需要实例化对象才能使用它们的答案。我在 Browserify GitHub 和手册中找到的示例并未将其显示为要求。但是,如果我在我的代码中没有 "new up" 这样的对象,则找不到该模块...我想知道为什么会这样。是否可以对我的代码进行更改以不必执行此操作?
没有对象实例化的代码:
var loginForm = require('page-objects/loginForm');
loginForm.signInButton.on('click', function(event){
event.preventDefault();
loginForm .email.val('TEST')
})
此刻,你导出一个函数,其中returns一个对象。要检索对象,您必须先执行导出的函数。如果您只想要对象而不先执行函数,只需导出对象而不是函数:
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')
}
我正在为隔离 DOM 模式进行概念验证,并使用 Browserify 作为我的资产管道。结果我是 "requiring" 模块,因为我在代码中需要它们。请看这个非常简单的代码示例:
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')
}
}
我不明白,也无法通过搜索找到 returns 为什么我需要实例化对象才能使用它们的答案。我在 Browserify GitHub 和手册中找到的示例并未将其显示为要求。但是,如果我在我的代码中没有 "new up" 这样的对象,则找不到该模块...我想知道为什么会这样。是否可以对我的代码进行更改以不必执行此操作?
没有对象实例化的代码:
var loginForm = require('page-objects/loginForm');
loginForm.signInButton.on('click', function(event){
event.preventDefault();
loginForm .email.val('TEST')
})
此刻,你导出一个函数,其中returns一个对象。要检索对象,您必须先执行导出的函数。如果您只想要对象而不先执行函数,只需导出对象而不是函数:
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')
}