2017-04-05 73 views
2

我有一个名为index.js节点的应用程序,运行快车。前一段时间,我决定合并一个网站模板和我的节点应用程序,一切正常到这里。我能够通过使用以下代码来加载其它路径到节点的应用程序(index.js)。如何从客户端javascript调用节点函数? (HTML)

var express = require('express'); 
var app = express(); 
app.use('/assets', express.static(path.join(__dirname, '/assets'))); 
app.use(express.static(path.join(__dirname, '/'))); 

现在,我能够使用服务快递,这意味着我的应用程序能够访问assets文件夹和文件夹中的内容不同的HTML页面。

现在,assets文件夹包含其他文件夹,称为js,css和... HTML模板正在载入assets中的js文件夹中的所有javascript代码。请注意,JavaScript代码不会写入HTML文件中。下面是一个脚本是如何在我的HTML代码触发一个例子:

<script src="../../assets/js/test.js"></script> 
<script type="text/javascript"> 
     $(document).ready(function(){ 
      test.theFunction(); 
     }); 
    </script> 

下面是在以下目录中的JavaScript代码:

// assets/js/test.js 
test = { 
    theFunction: function() { 
    res.send("finally..."); 
    console.log("sup?"); 
    } 
} 

我试图从test.js调用内部index.js以下功能:

// /index.js 
app.get("/hey", function(req, res) { 
    res.send("wassaaa!!"); 
}); 

到目前为止,我已经试过下面的代码,但它不会调用该函数:

$.get('/hey').success(function(response) { 
    $scope.final = response; 
    console.log(response); 
    }); 

我也试过在index.jsmodule.exports,但是当我需要它test.js我得到一个错误说我不能要求在客户端的东西。

我也看了关于require.js一些例子,但大多例子说明如何加载require.js在HTML文件中,而不是直接在js文件。

概括起来讲,这是我希望发生的事情:HTML文件触发test.js的功能,然后从test.js得到index.js一些数据,并再次将其传递到HTML文件...我试图避免编写的JavaScript代码在HTML文件中。

我也愿意听取建议,如果有人知道如何实现我试图在一个更简单的方式来做到。在此先感谢...

回答

0

您应该在test.js中编写函数并将其导入index.js。例如,返回“wassaaa !!”的函数getResponse()在test.js,并在index.js使用res.send(test.getResponse())

+0

能否请你解释这多一点?我不确定通过将test.js中的函数导入到index.js中是什么意思?我确实提到了module.exports,并且在浏览器(客户端)中加载它时出现错误,因此无法正常工作。你能举个例子吗? – bbkrz

+0

假设你transpile ES6,您可以用'出口默认{}东西'和index.js您可以用'进口{}东西从“test.js'' –