客户端 javascript 变量持续存在的 Node JS 项目?
Node JS project where client side javascript variables persist?
我有 PHP 背景,是 Node JS 开发的新手。我决定尝试一个基本的 Meteor JS + Iron Router + React 项目。以下行为让我措手不及:
我在像 http://192.168.0.110:3000/dashboard/john
这样的页面上,它有一个像 <a href="/dashboard/john/111222">
这样的 link。当页面首次加载时,客户端 javascript 变量 myvariable
的值为 undefined
但我在页面加载时将其设置为 myvariable="hello world"
。
当我点击 <a href="/dashboard/john/111222">
link 时,页面加载了,但令我惊讶的是,myvariable
已经有了值 hello world
而不是 undefined
.
因此,即使我转到了一个全新的 url,我希望在其中刷新整页,myvariable
仍保持前一页的值。由于我的 PHP 背景,我期望值 undefined
。
这对我来说是一个全新的行为,因为如果这是一个 PHP 项目,我将不得不显式编写代码以产生客户端 javascript 变量在不同页面上持续存在的错觉urls(或者我使用 ajax 重绘屏幕)。但是对于我的 NodeJS 项目,我不需要做任何这些,客户端变量保持它的值。
所以我的问题是,这种行为叫什么?是 Node JS、Meteor、Iron Router 还是 React 造成了这种行为?一旦我知道了这种行为的名称,我就可以 google 并阅读详细信息。
这是我的项目的代码:
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>
我从未使用过 Iron Router,但我仍然可以自信地告诉您,这就是行为的来源。
Iron Router 包括一个客户端路由器。这意味着您的应用实际上是一个单页应用,其行为类似于多页应用。
由于您正在编写单页应用程序,变量永远不会 "reset,",因为您的上下文在用户交互的整个过程中持续存在——新的 "pages" 被写入文档对象。因此,除非用户离开应用程序,否则您将保留上下文。
我有 PHP 背景,是 Node JS 开发的新手。我决定尝试一个基本的 Meteor JS + Iron Router + React 项目。以下行为让我措手不及:
我在像
http://192.168.0.110:3000/dashboard/john
这样的页面上,它有一个像<a href="/dashboard/john/111222">
这样的 link。当页面首次加载时,客户端 javascript 变量myvariable
的值为undefined
但我在页面加载时将其设置为myvariable="hello world"
。当我点击
<a href="/dashboard/john/111222">
link 时,页面加载了,但令我惊讶的是,myvariable
已经有了值hello world
而不是undefined
.
因此,即使我转到了一个全新的 url,我希望在其中刷新整页,myvariable
仍保持前一页的值。由于我的 PHP 背景,我期望值 undefined
。
这对我来说是一个全新的行为,因为如果这是一个 PHP 项目,我将不得不显式编写代码以产生客户端 javascript 变量在不同页面上持续存在的错觉urls(或者我使用 ajax 重绘屏幕)。但是对于我的 NodeJS 项目,我不需要做任何这些,客户端变量保持它的值。
所以我的问题是,这种行为叫什么?是 Node JS、Meteor、Iron Router 还是 React 造成了这种行为?一旦我知道了这种行为的名称,我就可以 google 并阅读详细信息。
这是我的项目的代码:
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>
我从未使用过 Iron Router,但我仍然可以自信地告诉您,这就是行为的来源。
Iron Router 包括一个客户端路由器。这意味着您的应用实际上是一个单页应用,其行为类似于多页应用。
由于您正在编写单页应用程序,变量永远不会 "reset,",因为您的上下文在用户交互的整个过程中持续存在——新的 "pages" 被写入文档对象。因此,除非用户离开应用程序,否则您将保留上下文。