客户端 javascript 变量持续存在的 Node JS 项目?

Node JS project where client side javascript variables persist?

我有 PHP 背景,是 Node JS 开发的新手。我决定尝试一个基本的 Meteor JS + Iron Router + React 项目。以下行为让我措手不及:

  1. 我在像 http://192.168.0.110:3000/dashboard/john 这样的页面上,它有一个像 <a href="/dashboard/john/111222"> 这样的 link。当页面首次加载时,客户端 javascript 变量 myvariable 的值为 undefined 但我在页面加载时将其设置为 myvariable="hello world"

  2. 当我点击 <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" 被写入文档对象。因此,除非用户离开应用程序,否则您将保留上下文。