我想使用这种模式是新的热点,但我不明白它的优点是什么,我不理解范围的含义.
模式:
(function(window, document, undefined){
window.MyObject = {
methodA: function() { ... },
methodB: function() { ... }
};
})(window, document)
Run Code Online (Sandbox Code Playgroud)
所以我对此有几个问题.
封装像这样的对象有什么特别的优势吗?
为什么窗口和文档被输入而不是正常访问?
为什么undefined
要传递这个?
将我们正在创建的对象直接附加到窗口是一个特别好的主意吗?
我已经习惯了我称之为Crockford风格的Javascript封装(因为我把它从Douglas Crockford Javascript视频中删除了).
NameSpace.MyObject = function() {
// Private methods
// These methods are available in the closure
// but are not exposed outside the object we'll be returning.
var methodA = function() { ... };
// Public methods
// We return an object that uses our private …
Run Code Online (Sandbox Code Playgroud) 我有一个Express项目,我将其设置为登录到文件:
logPath = '/mnt/log/api.log'
logfile = fs.createWriteStream logPath, {flags: 'a'}
loggingOptions =
format: 'default'
stream: logfile
app.use express.logger(loggingOptions)
Run Code Online (Sandbox Code Playgroud)
这适用于记录请求,但我想将自己的消息添加到日志中,但我无法弄清楚如何.console.log
没有被重定向,并且似乎没有创建我可以写入的"记录器"对象.
那么我唯一的选择是传递对文件流的引用并写入该文件流?
我正在写一些React/Flux代码并使用Jest来测试它.到目前为止一切都很好,除了我的测试已经花了很长时间才完成.
罪魁祸首似乎是在每次测试之间重置模拟.
我的一般设置看起来像这样:
jest.dontMock('react');
jest.dontMock('../Widget.jsx');
describe('Widget', function() {
var React, TestUtils, Widget, WidgetStore;
beforeEach(function() {
React = require('react/addons');
TestUtils = React.addons.TestUtils;
WidgetStore = require('../WidgetStore');
Widget = require('../Widget');
});
it('should fetch initial state from the store', function() {
WidgetStore.getDoobles.mockReturnValueOnce({});
var widget = TestUtils.renderIntoDocutment(
<Widget />
);
expect(WidgetStore.getDoobles.mock.calls.length).toBe(1);
});
it('should refresh its data when clicked', function() {
WidgetStore.getDoobles.mockReturnValueOnce({});
var widget = TestUtils.renderIntoDocutment(
<Widget />
);
WidgetStore.getDoobles.mockReturnValueOnce({'foo': 'bar'});
TestUtils.Simulate.click(widget);
expect(WidgetStore.getDoobles.mock.calls.length).toBe(2);
});
});
Run Code Online (Sandbox Code Playgroud)
在我的例子中,如果我不在两个测试之间重新加载存储,我将得到错误的调用结果getDoobles
,这是有道理的,因为它将是同一个对象.
但重新加载模拟需要一些时间,如果我做了很多测试,那么他们最终会变慢.
我很乐意克隆对象或调用重置函数.单个函数(mockClear()
)有一个复位函数,但似乎没有整个对象的全局复位.而且我无法克隆该对象,因为克隆与我的React组件访问的对象不是同一个对象,因此所有调用都不会被注册.
这引出了另一个问题.看来我需要重新加载依赖链中的所有内容.如果我只是重新要求WidgetStore
那么我有权访问的对象似乎不是有权访问的对象Widget …
我有一个登录表单的基本文本输入,我希望浏览器记住用户输入的电子邮件地址,但它不起作用.我认为我不需要添加一个完整的自动完成系统来实现这一点,因为它是浏览器应该做的事情.我在访问过的网站上看不出有什么特别之处.
如果我搜索此问题,所有答案都是关于禁用自动完成功能.
这是我的登录表单:
<form id="login-form">
<fieldset>
<input id="email" type="email" placeholder="Your email" required="" >
<input id="password" type="password" placeholder="Pick a good password" required="" minlength="6">
<button class="login">Register</button>
</fieldset>
</form>
Run Code Online (Sandbox Code Playgroud) React-bootstrap-table 中分页行的默认样式使用引导网格列大小调整类名称(例如“col-xs-6”)。我们使用与默认大小不同的网格(60 而不是 12),因此分页元素最终会被压缩成一直向左的小列。
将类名称设置为“col-xs-30”可以解决该问题。但我没有看到调整任何分页样式的选项。
我发现有一种方法可以完全自定义呈现分页元素。这是我唯一的选择吗?复制原件并仅更改列大小?
javascript ×2
autocomplete ×1
browser ×1
connect ×1
express ×1
html ×1
jestjs ×1
node.js ×1
reactjs ×1
reactjs-flux ×1
unit-testing ×1