2017-04-05 54 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'' –

相關問題