2014-09-29 71 views
2

我的nodeJS应用程序非常简单,但我很难将我的JavaScript文件链接到它。通常情况下,您只需将脚本放在标题中。这显然不适用于Node,所以试图通过sendFile和其他一些方法来链接它,但没有一个能够工作。如何使用express和nodeJS将javascript文件链接到html页面

我的JavaScript很简单:

var express = require('express'); 
var app = express(); 


app.get('/',function(req, res) { 
    res.sendFile(__dirname + '/index.html'); 
    res.send() 
}); 
app.listen(8888) 

我的HTML也很简单:

<html> 
<head> 
    <title>Charter</title> 
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
    <script src="http://code.highcharts.com/highcharts.js"></script> 
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> 
</head> 
<body> 
    <div id="container" style="width:100%; height:400px;"></div> 
    <button id="button" class="autocompare" onclick="plotNewChart()">Add series</button> 
    <script type="text/javascript"> 
     $(function() { $('#container').highcharts({ chart: { events: { addSeries: function() { var label = this.renderer.label('A series was added, about to redraw chart', 100, 120).attr({ fill: Highcharts.getOptions().colors[0], padding: 10, r: 5, zIndex: 8 }) .css({ color: '#FFFFFF' }) .add(); setTimeout(function() { label.fadeOut(); }, 1000); } } }, xAxis: { categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'] }, series: [{ data: [29.9, 71.5, 106.4, 129.2, 144.0, 176.0, 135.6, 148.5, 216.4, 194.1, 95.6, 54.4] }] }); }); 
    </script> 
</body> 
</html> 

我想要做的就是链接的另一个文件,myJS.js。我不知道如何做到这一点,没有典型的`

+0

你链接的JavaScript是服务器端。把它放在项目根目录下的.js文件中,并用''node filename.js'''启动它' – 2014-09-29 20:50:16

+0

有没有办法让javascript客户端? – maudulus 2014-09-29 20:52:13

+0

我不确定快递是否有能力,甚至有可能运行客户端。但那是我自己的经验。 – 2014-09-29 20:56:29

回答

6

你需要设置你的快递服务器来提供静态文件。目前,它似乎只服务于'/'路线。

在设置路由之前,添加下面的行。然后,您可以从“公共”文件夹提供相对于您的脚本的静态资产。

app.use(express.static(path.join(__dirname, 'public'))); 

所以,如果你把你的myJS.jspublic/js/myJS.js之后就可以引用它像这样

<script src="/js/myJS.js"></script> 

更多信息的文档:http://expressjs.com/api.html#express.static

+0

我链接创建了一个新的快速应用程序,遵循我在下面的链接和您的指示阅读。然而,我想我必须使用'app.engine('html',require('ejs')。renderFile);'以便不必在“jade”中编写html。此外,出于某种原因,即使css在我创建快速应用程序(不添加我的静态html)时创建了快捷应用程序,javascript也不会链接。你知道为什么吗? http://stackoverflow.com/questions/11710995/how-to-include-css-and-js-files-in-node-js-project – maudulus 2014-09-30 17:06:02

+0

哦,我看到 - layout.jade页面已自动链接到CSS,所以我可以通过那里链接我的js。仍然不能用静态获得它,但是:| – maudulus 2014-09-30 17:28:02

+0

您需要添加:'var path = require('path');否则代码将导致错误。 – 7stud 2014-11-25 09:12:02