我正在开发一个Web应用程序,我想知道哪种方法应该适合我的项目.
基本上我想向用户显示的是一些通知,这些通知是从对其他服务器的请求中获取的.我的node.js应用程序获取所有信息,然后传播给用户,将副本保存到我的MongoDB中.
这个想法非常简单但是阅读方法我发现了这两种技术:
Ajax:如果服务器上有新内容,客户端将检查所有时间.这可以通过使用jquery ajax get到我的服务器API(每30/60秒)来完成.
Socket.io:客户端连接一次,然后保持永久TCP连接(更实时).
现在我已经解释了情况,我有以下问题:
我不会对ajax提出太多请求吗?想象我想每分钟检查一次服务器,如果我们将应用程序扩展到100个用户,它将每分钟给我100个查询.拥有套接字在系统资源上会"更便宜"吗?
socket.io会成为移动设备的问题吗?带宽和表现.服务器的响应始终是JSON格式的信息.
我读到now.js可以用于此但似乎不再支持该项目,所以不确定是否使用它将是一个好主意.
两种方法的缓存如何?我正在考虑为每个用户创建一个缓存文件,这将由服务器端的node.js更新.我想这可以用ajax很好用但是socket.io怎么样?
socket.io与许多浏览器完全兼容是不是真的?我的应用程序将更专注于移动设备,我认为这可以让我考虑选择ajax.
有建议吗?
我希望这可以清除我的思想和处于相同情况的其他人:)谢谢
我在项目中使用以下代码,该代码无效:
window.onload=function(){
//code here
};
Run Code Online (Sandbox Code Playgroud)
但如果我在最后添加()它的工作原理:
window.onload=function(){
//code here
}();
Run Code Online (Sandbox Code Playgroud)
我的问题是,有什么区别?()最后是什么?
我认为第一个不起作用,因为其他地方的"onload"已被称为杀死这个.
如果我总是使用第二个选项,它会有相同的行为吗?
我写这个问题是因为我想请你帮忙如何在我的功能组件上使用 redux。我查看了 React 组件的其他示例,但我无法理解如何在功能组件中获取“存储”值。
我的想法是用我的
store.getState()
在我的功能组件中检查状态并与 UI 交互,但我无法实现。
请问有什么帮助吗?
例如,一个功能组件:
import React from 'react';
import withStyles from 'isomorphic-style-loader/lib/withStyles';
import s from './Header.css';
import { Navbar, Nav } from 'react-bootstrap';
import HeaderMenu from '../HeaderMenu';
import cx from 'classnames';
function Header() {
return (
<Navbar fluid fixedTop id="Header" className={s.navContainer}>
<Nav block className={cx(s.HeaderTitle, s.hideOnSmall)}>Project title</Nav>
<HeaderMenu />
</Navbar>
);
}
export default withStyles(s)(Header);
Run Code Online (Sandbox Code Playgroud)
如何在我的 Header 组件中使用“store”对象?它适用于我的 App 组件,只是我不知道如何在我的组件中使用它。
我的问题是:
提前致谢!
编辑 :
我正在使用https://github.com/kriasoft/react-starter-kit 和 redux 分支https://github.com/kriasoft/react-starter-kit/tree/feature/redux
我有下一个问题。我使用 jQueryUI 的滑块,它工作得很好,但我想做的是在移动滑块并释放鼠标时做一些事情。
问题是,如果它有 5 个值,从 0 到 4,如果我从 0 移动到 4,它会加载一个函数 4 次。
$('#sliderTime').slider({
orientation: 'horizontal',
value:1,
min: 0,
max: 5,
step: 1,
animate: true,
slide: function( event, ui ) {
var value = ui.value;
dostuff(value);
}
});
Run Code Online (Sandbox Code Playgroud) 我有一个具有以下功能的类:
public function get(string $uri) : stdClass
{
$this->client = new Client;
$response = $this->client->request(
'GET',
$uri,
$this->headers
);
return json_decode($response->getBody());
}
Run Code Online (Sandbox Code Playgroud)
如何从PHPUnit模拟请求方法?我尝试了不同的方法,但它总是尝试连接到指定的uri.
我尝试过:
$clientMock = $this->getMockBuilder('GuzzleHttp\Client')
->setMethods('request')
->getMock();
$clientMock->expects($this->once())
->method('request')
->willReturn('{}');
Run Code Online (Sandbox Code Playgroud)
但这没效果.我能做什么?我只需要将响应模拟为空.
谢谢
PD:客户端来自(使用GuzzleHttp\Client)