0

我有一个访问在名为的文件中定义的配置变量

test.js 有——

 var aws = require('aws-sdk');
 exports.connect = function(){
    return aws;
 }

现在我需要在浏览器上发生 OnClick 事件时访问它。我有这个脚本,但 require 模块不起作用。

客户端脚本.js

var aws = require('../scripts/test.js').connect();

function getValue() {
    aws.describe({},function(){...})
}

如何访问此 aws 变量?

4

2 回答 2

1

希望我与您在这里尝试做的事情相差无几。我的理解(在此问题和您之前的问题之间拼凑起来的是,您希望浏览器中的某些内容在单击时会从外部 API 检索一些状态信息,然后将其显示在客户端中。

我建议做的(基于上述假设)将您想要的功能定义为由对 Express 服务器的 HTTP 请求触发的东西,它可以执行您的功能并将您想要的任何内容从其进程发送回客户端.

在您的服务器定义中(假设您的 Express 变量是app

app.get('/request', someFunction);

someFunction定义您想要做什么,它与请求和响应的关系,以及发送回客户端的内容。Express 将期望该函数将请求和响应作为参数,但您不一定需要使用它们:

someFunction(req,res) {
  //do whatever I'd like with aws or anything else
  res.send(foo); //where foo is whatever JSON or text or anything else I'd like the client to have to manipulate
}

在客户端上,您将有一个绑定到 onclick 的函数,该函数将向该/request端点发出请求。这个函数可以使用 AJAX 或者完全渲染另一个页面。

这种组织也将显示和行为留给客户端,而服务器则处理检索和操作数据。这种布局还解决了客户端上对 require() 语句的任何担忧(虽然可以使用Browserify 之类的东西,但不是必需的,并且可能会使代码更加混乱)。

于 2013-07-24T22:46:04.407 回答
0

您不能在客户端使用 require() ,它只是 node.js 提供的服务器端功能,它在服务器上运行。如果您需要在服务器和客户端之间共享的配置选项,那么您需要对您的 test.js 文件进行一些更改,以便它可以在两者中工作。我敢肯定有很多方法可以做到这一点,但我更喜欢的方式是:

将 test.js 中的所有配置变量放入一个对象中,例如:

this.ConfigOptions = {option1:value1, option2:value2};

客户端将包含这样的文件:

<script src="test.js" type="text/javascript"></script>

并且可以通过 ConfigOptions 对象访问配置选项

而服务器将使用 require() 来包含文件并访问配置选项,如下所示:

var ConfigOptions = require('test.js').ConfigOptions;
于 2013-07-24T21:51:15.513 回答