小编Gre*_*ell的帖子

使用(函数(窗口,文档,未定义){...})(窗口,文档)赋予什么优势?

我想使用这种模式是新的热点,但我不明白它的优点是什么,我不理解范围的含义.

模式:

(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)

javascript

59
推荐指数
2
解决办法
4万
查看次数

如何写入Node.js Connect/Express记录器?

我有一个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没有被重定向,并且似乎没有创建我可以写入的"记录器"对象.

那么我唯一的选择是传递对文件流的引用并写入该文件流?

connect node.js express

5
推荐指数
1
解决办法
3459
查看次数

在使用Jest进行测试时,是否有更快的方法来重置模拟?

我正在写一些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 …

javascript unit-testing reactjs reactjs-flux jestjs

4
推荐指数
1
解决办法
4596
查看次数

为什么浏览器不为此文本字段提供建议?

我有一个登录表单的基本文本输入,我希望浏览器记住用户输入的电子邮件地址,但它不起作用.我认为我不需要添加一个完整的自动完成系统来实现这一点,因为它是浏览器应该做的事情.我在访问过的网站上看不出有什么特别之处.

如果我搜索此问题,所有答案都是关于禁用自动完成功能.

这是我的登录表单:

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

html browser autocomplete

3
推荐指数
1
解决办法
447
查看次数

有没有办法改变react-bootstrap-table的分页样式?

React-bootstrap-table 中分页行的默认样式使用引导网格列大小调整类名称(例如“col-xs-6”)。我们使用与默认大小不同的网格(60 而不是 12),因此分页元素最终会被压缩成一直向左的小列。

将类名称设置为“col-xs-30”可以解决该问题。但我没有看到调整任何分页样式的选项。

我发现有一种方法可以完全自定义呈现分页元素。这是我唯一的选择吗?复制原件并仅更改列大小?

react-bootstrap-table

3
推荐指数
1
解决办法
9623
查看次数