使用require-Node js在客户端访问express中的函数



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

test.js,它有--

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

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

clientScript.js

var aws = require('../scripts/test.js').connect();
function getValue() {
    aws.describe({},function(){...})
}

如何访问此aws变量?

希望我不会偏离目标太远。我的理解(在这一点和您之前的问题之间拼凑起来)是,您希望浏览器中的某些内容在点击后将从外部API检索一些状态信息,然后将显示在客户端中

我建议(基于上述假设)将您所需的功能定义为通过向Express服务器发送HTTP请求来触发的功能,Express服务器可以执行您的功能,并将您想要的任何内容从其流程发送回客户端。

在您的服务器中定义(假设您的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之类的语句可能存在这种担忧,但它们不是必需的,可能会使代码更加混乱)。

您不能在客户端使用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;

相关内容

  • 没有找到相关文章

最新更新