PropTypes和Flow涵盖类似的东西,但使用不同的方法.PropTypes可以在运行时为您提供警告,这有助于快速查找来自服务器等的错误响应.但是,Flow似乎是未来,并且像泛型这样的概念是一个非常灵活的解决方案.此外,Nuclide提供的自动完成功能对Flow来说是一个很大的优势.
我现在的问题是,在开始一个新项目时,哪种方式最好.或者它是一个很好的解决方案同时使用Flow和PropTypes?使用两者的问题是你写了很多重复的代码.这是我写的音乐播放器应用程序的示例:
export const PlaylistPropType = PropTypes.shape({
next: ItemPropTypes,
current: ItemPropTypes,
history: PropTypes.arrayOf(ItemPropTypes).isRequired
});
export type Playlist = {
next: Item,
current: Item,
history: Array<Item>
};
Run Code Online (Sandbox Code Playgroud)
这两个定义基本上都包含相同的信息,当数据类型发生变化时,两个定义都需要更新.
我发现这个babel插件将类型声明转换为PropTypes,这可能是一个解决方案.
使用普通grep命令有一个--exclude选项(这里详细介绍:使用grep --exclude/ - include语法来不通过某些文件),可以让你在grepping时忽略特定的文件.
Ack的--type选项可以处理95%你想要排除文件的情况,但它没有(据我所知)处理排除特定文件的情况.我有一个已编译的JS文件,其中包含其他每个JS文件的内容(在一行上),所以每当我grep 任何东西时,我都会找回那个巨大的编译文件的全部内容.
我不想放弃ack并回过头来讨论这个问题,但这真的很烦人.请有人告诉我,有一种方法可以从ack搜索中排除特定文件.
我正在寻找redux todomvc代码.什么是static在关键字static propTypes?谢谢
UPDATE
不知道为什么会投票?这篇文章太简单了吗?欢迎评论.谢谢.我希望我能删除这篇文章.
Ruby在Selenium之上有一个很棒的抽象层,称为Capybara,您可以使用它进行功能/接受/集成测试.它还有另一个名为Cucumber的库,它更进了一步,让你真正用英语编写测试.
这两个库都是在Selenium之上构建的,可以用来测试任何主要的浏览器,但由于它们的抽象层,使用它们编写测试非常容易(好吧,就像功能测试一样简单).
我的问题是:Python有类似的东西吗?我发现Pythonistas使用各种工具进行功能测试但是......
A)Splinter:不使用Selenium(并且没有IE驱动程序)
-EDIT- 看来Spliter现在确实使用了Selenium(见下面的答案).
B)Alfajor:一年多来没有更新; 看起来死了
C)Selenium(原始):很多人似乎直接使用Selenium,但它似乎是一个抽象层可以使它更容易使用
那么,对于Python来说,有没有人知道类似Capybara的东西,或者更好的类似Cucumber的东西(它不必实际使用Selenium,但它需要支持所有主流浏览器)?
*编辑*
对于那些不熟悉Capybara的人来说,它基本上只是添加了一个API,因此您可以执行以下操作来代替正常的Selenium API:
When /I sign in/ do
within("#session") do
fill_in 'Login', :with => 'user@example.com'
fill_in 'Password', :with => 'password'
end
click_link 'Sign in'
end
Run Code Online (Sandbox Code Playgroud)
它被Cucumber使用,让你进一步抽象(几乎到英文):
Scenario Outline: Add two numbers
Given I have entered <input_1> into the calculator
And I have entered <input_2> into the calculator
When I press <button>
Then the result should be <output> on the screen
Examples:
| input_1 | input_2 | button | output | …Run Code Online (Sandbox Code Playgroud) 我正在一个商店网站上工作,每个用户都将是匿名的(好吧,至少需要付费),我正在尝试使用Django REST Framework来提供产品API,但它一直在抱怨:
"detail": "Authentication credentials were not provided."
Run Code Online (Sandbox Code Playgroud)
我发现了一些与身份验证相关的设置,但我找不到类似的东西ENABLE_AUTHENTICATION = True.如何简单地禁用身份验证,并让站点的任何访问者访问API?
我一直在尝试使用JSDoc3来生成文件的文档,但是我遇到了一些困难.该文件(Require.js模块)基本上如下所示:
define([], function() {
/*
* @exports mystuff/foo
*/
var foo = {
/**
* @member
*/
bar: {
/**
* @method
*/
baz: function() { /*...*/ }
}
};
return foo;
}
Run Code Online (Sandbox Code Playgroud)
问题是,我无法baz在生成的文档中显示出来.相反,我只获得一个foo/foo模块的文档文件,该文件列出了一个bar成员,但bar没有baz(只是一个foo源代码的链接).
我已经尝试改变bar指令了@property,我已经尝试将baz指令更改为@member或@property,但这些都没有帮助.无论我做什么,巴兹似乎都不想表现出来.
有谁知道我可以用什么指令结构让baz出现在生成的文档中?
PS我试过在JSDoc网站http://usejsdoc.org/howto-commonjs-modules.html上阅读这样的页面,但它只描述了案例foo.bar,而不是foo.bar.baz.
我正在制作一个甘特项目管理系统,我正在尝试将UI的DOM元素连接在一起,就像在这个jsPlumb演示中一样:

但是,我不太喜欢jsPlumb.我搜索了替代品,但找不到任何替代品.
您建议使用任何jsPlumb替代品吗?
所有官方JSDoc示例都有简单的文档字符串,如下所示:
/**
* @param {string} author - The author of the book.
*/
Run Code Online (Sandbox Code Playgroud)
问题是,在现实文档中,您通常需要更长的文档字符串:
/**
* @param {string} author - The author of the book, presumably some person who writes well
*/
Run Code Online (Sandbox Code Playgroud)
但由于大多数公司(出于合法的可读性原因)都有线路长度限制,因此上述情况往往是不可接受的.然而,我无法弄清楚的是分解这些线的"正确"方式应该是什么.
我可以:
/**
* @param {string} author - The author of the book, presumably some
* person who writes well
*/
Run Code Online (Sandbox Code Playgroud)
但这很难理解.我可以这样做:
/**
* @param {string} author - The author of the book, presumably some
* person who writes well
*/
Run Code Online (Sandbox Code Playgroud)
这看起来更好,但它可能导致大量的行,特别是如果参数具有长名称:
/**
* @param {string} personWhoIsTheAuthorOfTheBook - …Run Code Online (Sandbox Code Playgroud) 我正在为我的React代码编写Jest测试,并希望使用/测试PropType检查.我对Javascript世界很陌生.我正在使用npm进行安装react-0.11.2并有一个简单的:
var React = require('react/addons');
Run Code Online (Sandbox Code Playgroud)
在我的测试中.我的测试看起来非常类似于jest/react教程示例,其代码如下:
var eventCell = TestUtils.renderIntoDocument(
<EventCell
slot={slot}
weekId={weekId}
day={day}
eventTypes={eventTypes}
/>
);
var time = TestUtils.findRenderedDOMComponentWithClass(eventCell, 'time');
expect(time.getDOMNode().textContent).toEqual('19:00 ');
Run Code Online (Sandbox Code Playgroud)
但是,似乎EventCell没有触发组件中的PropType检查.我知道检查只在开发模式下运行,但后来我也认为react通过npm给你开发版本.当我使用watchify构建组件时,检查会在浏览器中触发.
我错过了什么?
当我git rebase -i在与同事共享的分支上执行操作时,我经常想要自己修改自己的提交.但是,因为交互式rebase工具不会将作者信息添加到rebasing文件(所有t给出的是提交哈希和描述),所以我最终必须检查另一个选项卡中的提交以查看它们是否是我的.
有没有办法给git rebase -i一个--format旗帜(或类似的东西),让它包括作者?