我来自PHP背景,我是Node JS开发的新手。我决定尝试一个基本的Meteor JS + Iron Router + React项目。以下行为让我措手不及:
我在http://192.168.0.110:3000/dashboard/john
这样的网页上,它有<a href="/dashboard/john/111222">
之类的链接。首次加载页面时,客户端javascript变量myvariable
的值为undefined
,但我在页面加载时将其设置为myvariable="hello world"
。
当我点击<a href="/dashboard/john/111222">
链接时,页面会加载,但令我惊讶的是,myvariable
已经有hello world
而不是undefined
所以即使我去了一个全新的网址,我希望整页刷新,myvariable
保持了上一页的价值。由于我的PHP背景,我期待值undefined
。
这对我来说是一个全新的行为,因为如果这是一个PHP项目,我将不得不明确地编写代码以给出客户端javascript变量在不同页面URL中保持不变的错觉(或者我使用ajax重绘屏幕)。但是对于我的NodeJS项目,我没有必要做任何事情,客户端变量保持了它的价值。
所以我的问题是,这个行为叫什么? Node JS,Meteor,Iron Router或React是否对此行为负责?一旦我知道了这种行为的名称,那么我就可以谷歌并阅读详细信息。
这是我项目的代码:
myproject.jsx
var myvariable;
var configAppRoute = {action:applicationController};
Router.route('/dashboard/:username',configAppRoute);
Router.route('/dashboard/:username/:appid',configAppRoute);
function applicationController()
{
console.log(myvariable);
myvariable='hello world';
console.log(myvariable);
Meteor.startup(function () {
ReactDOM.render(<App />, document.getElementById("render-target"));
});
}
App.jsx
App = React.createClass({
render() {
return (
<div>
<a href={'/dashboard/john/111222'}>click me</a>
</div>
);
}
});
myproject.html
<head>
<title>My Project</title>
</head>
<body>
<div id="render-target"></div>
</body>
答案 0 :(得分:3)
我从未使用过Iron Router,但我仍然可以自信地告诉你,这就是行为的来源。
铁路由器包括客户端路由器。这意味着您的应用实际上是一个单页应用,其行为类似于多页应用。
由于您正在编写单页应用程序,因此变量永远不会“重置”,因为您的上下文在整个用户交互期间仍然存在 - 新的“页面”将写入文档对象的SAME实例。因此,除非用户离开应用程序,否则您将保留上下文。