我有一个 jquery,jqxwidget的html页面 dashboard.html,我想用nodejs 发布到web上 但是js的效果显示不出来,正常用apache是可以显示出来的,我应该从哪块入手
var http = require("http");
var fs = require('fs');
exports.start = function(){
http.createServer(function(request, response) {
fs.readFile('./dashboard.html', 'utf-8',function (err, data) {//读取内容
if (err) throw err;
response.writeHead(200, {"Content-Type": "text/html"});//注意这里
response.write(data);
response.end();
});
}).listen(8888);
console.log("server start...");
<body class='default'>
<div id='chartContainer' style="width: 750px; height: 400px;">
</div>
<table style="width: 680px">
<tr>
<td style="padding-left: 50px;">
<p style="font-family: Verdana; font-size: 12px;">Select the series type:
</p>
<div id='dropDownSeries'>
</div>
</td>
有人吗? 不太理解 我的html引用了一些js,但是只能显示出 字符串,js的style都没有 <td style=“padding-left: 50px;”> <p style=“font-family: Verdana; font-size: 12px;”>Select the series type: </p> <div id=‘dropDownSeries’> </div>
<script src="./index.js"></script> <script type=“text/javascript” src="…/scripts/jquery-1.11.1.min.js"></script> <script type=“text/javascript” src="…/jqwidgets/jqxcore.js"></script> <script type=“text/javascript” src="…/jqwidgets/jqxdata.js"></script> <script type=“text/javascript” src="…/jqwidgets/jqxdraw.js"></script>
哪里有Jquery + nodejs的范例
是吗? 我刚开始看nodejs,是不是css要response一下, JS还需要添加什么类似引入的操作吗 现在css,js的效果出不来,正常 windows下打开html是正常的
<!DOCTYPE html> <html lang=“en”> <head> <title id=‘Description’>jqxChart Live Updates</title> <link rel=“stylesheet” href="…/jqwidgets/styles/jqx.base.css" type=“text/css” /> <script src="./index.js"></script> <script type=“text/javascript” src="…/scripts/jquery-1.11.1.min.js"></script> <script type=“text/javascript” src="…/jqwidgets/jqxcore.js"></script> <script type=“text/javascript” src="…/jqwidgets/jqxdata.js"></script> <script type=“text/javascript” src="…/jqwidgets/jqxdraw.js"></script> <script type=“text/javascript” src="…/jqwidgets/jqxchart.core.js"></script> <script type=“text/javascript” src="…/jqwidgets/jqxslider.js"></script> <script type=“text/javascript” src="…/jqwidgets/jqxbuttons.js"></script> <script type=“text/javascript” src="…/jqwidgets/jqxlistbox.js"></script> <script type=“text/javascript” src="…/jqwidgets/jqxscrollbar.js"></script> <script type=“text/javascript” src="…/jqwidgets/jqxdropdownlist.js"></script> <script type=“text/javascript” src="…/scripts/demos.js"></script> <script type=“text/javascript”>
楼主。。你这样肯定是不行的。。。。你的css js 包括图片什么的都是访问不到的。。因为你只返回了一个html。
你打开network会发现,所有请求js css 什么的都是404找不到文件。。。
var file = url.parse( req.url ).pathname;
fs.readFile( 'public'+file, function( err, data ){
if (err) return;
res.end(data);
} );
加一段这个就行了。。。。这样能保证请求html这样的静态文件也能成功返回。。。public是一个存css js什么的文件夹
这个和nodejs 没关系 他只负责把html 输出给浏览器 应该是你的html有问题
css js 等静态资源文件一般是放在一个公共目录下,用 nodejs 或 apache 对公共目录支持一下。
感谢大神,我加完了, ‘public’+file, 我log 打出来的的确是 js 文件和css文件,为啥还是空白,需要分类判断后缀之类的么
var http = require(“http”); var fs = require(‘fs’); var url=require(‘url’); console.log(‘begin’);
exports.start = function(){ http.createServer(function(request, response) { var file = url.parse( request.url ).pathname;
var str = ‘/home/eqsvimp/nodejs/Jquery’+file;
console.log(str);
fs.readFile( str, function( err, data ){
if (err) return;
response.end(data);
} );
fs.readFile(’./dashboard.html’, ‘utf-8’,function (err, data) {//读取内容 if (err) throw err; response.writeHead(200, {“Content-Type”: “text/html”});//注意这里 response.write(data); response.end(); });
}).listen(8888); console.log(“server start…”); }
这是url parse 出来的file list
/home/eqsvimp/nodejs/Jquery/ /home/eqsvimp/nodejs/Jquery/jqwidgets/styles/jqx.base.css /home/eqsvimp/nodejs/Jquery/index.js /home/eqsvimp/nodejs/Jquery/scripts/jquery-1.11.1.min.js /home/eqsvimp/nodejs/Jquery/jqwidgets/jqxcore.js /home/eqsvimp/nodejs/Jquery/jqwidgets/jqxdata.js /home/eqsvimp/nodejs/Jquery/jqwidgets/jqxchart.core.js /home/eqsvimp/nodejs/Jquery/jqwidgets/jqxdraw.js /home/eqsvimp/nodejs/Jquery/jqwidgets/jqxslider.js /home/eqsvimp/nodejs/Jquery/jqwidgets/jqxbuttons.js /home/eqsvimp/nodejs/Jquery/jqwidgets/jqxlistbox.js /home/eqsvimp/nodejs/Jquery/jqwidgets/jqxdropdownlist.js /home/eqsvimp/nodejs/Jquery/jqwidgets/jqxscrollbar.js /home/eqsvimp/nodejs/Jquery/scripts/demos.js
@ensalty 一篇空白,只剩字体
@ensalty 确保file list里面的路径单独提出来能够访问,放在浏览器地址栏试试!最好单独定义路由规则,类似上面的public/
@DevinXian 能给我举个例子吗 ,怎么叫单独访问,linux 里面路径都可以打开,权限都设置可访问,
response.writeHead(200, {“Content-Type”: “text/html”});//注意这里
这里需要改吗, js的 对应javascript css对应text/css的?
我就卡在这上面了,以前没弄过前台,如果能把原有项目的jQuery 的html 直接放到nodejs的服务器上,之后就方便了
这是dashboard.html
<!DOCTYPE html>
<html lang=“en”>
<head>
<title id=‘Description’>jqxChart Live Updates</title>
<link rel=“stylesheet” href="…/jqwidgets/styles/jqx.base.css" type=“text/css” />
<script src="./index.js"></script>
<script type=“text/javascript” src="…/scripts/jquery-1.11.1.min.js"></script>
<script type=“text/javascript” src="…/jqwidgets/jqxcore.js"></script>
<script type=“text/javascript” src="…/jqwidgets/jqxdata.js"></script>
<script type=“text/javascript” src="…/jqwidgets/jqxdraw.js"></script>
<script type=“text/javascript” src="…/jqwidgets/jqxchart.core.js"></script>
<script type=“text/javascript” src="…/jqwidgets/jqxslider.js"></script>
<script type=“text/javascript” src="…/jqwidgets/jqxbuttons.js"></script>
<script type=“text/javascript” src="…/jqwidgets/jqxlistbox.js"></script>
<script type=“text/javascript” src="…/jqwidgets/jqxscrollbar.js"></script>
<script type=“text/javascript” src="…/jqwidgets/jqxdropdownlist.js"></script>
<script type=“text/javascript” src="…/scripts/demos.js"></script>
<script type=“text/javascript”>
$(document).ready(function () {
var data = [];
var max = 800;
var timestamp = new Date();
//alert(timestamp);
for (var i = 0; i < 60; i++) {
timestamp.setMilliseconds(0);
timestamp.setSeconds(timestamp.getSeconds() - 1);
data.push({ timestamp: new Date(timestamp.valueOf()), value: Math.max(100, (Math.random() * 1000) % max) });
//alert(timestamp.valueOf());
}
data = data.reverse();
// prepare jqxChart settings
var settings = {
title: "Live updates demo",
description: "Data changes every second",
enableAnimations: false,
animationDuration: 1000,
enableAxisTextAnimation: true,
showLegend: true,
padding: { left: 5, top: 5, right: 5, bottom: 5 },
titlePadding: { left: 0, top: 0, right: 0, bottom: 10 },
source: data,
xAxis:
{
dataField: 'timestamp',
type: 'date',
baseUnit: 'second',
unitInterval: 10,
formatFunction: function (value) {
return $.jqx.dataFormat.formatdate(value, "hh:mm:ss", 'en-us');
},
gridLines: { step: 2 },
valuesOnTicks: true,
labels: { angle: -45, offset: { x: -17, y: 0} }
},
colorScheme: 'scheme03',
seriesGroups:
[
{
type: 'line',
columnsGapPercent: 50,
alignEndPointsWithIntervals: true,
valueAxis:
{
minValue: 0,
maxValue: 1000,
title: { text: 'Index Value' }
},
series: [
{ dataField: 'value', displayText: 'value', opacity: 1, lineWidth: 2, symbolType: 'circle', fillColorSymbolSelected: 'white', symbolSize: 4 }
]
}
]
};
// create the chart
$('#chartContainer').jqxChart(settings);
// get the chart's instance
var chart = $('#chartContainer').jqxChart('getInstance');
// color scheme drop down
var colorsSchemesList = ["scheme01", "scheme02", "scheme03", "scheme04", "scheme05", "scheme06", "scheme07", "scheme08"];
$("#dropDownColors").jqxDropDownList({ source: colorsSchemesList, selectedIndex: 2, width: '200', height: '25', dropDownHeight: 100 });
$('#dropDownColors').on('change', function (event) {
var value = event.args.item.value;
chart.colorScheme = value;
chart.update();
});
// series type drop down
var seriesList = ["line", "area", "stepline", "steparea", "splinearea", "spline", "column", "scatter", "stackedcolumn", "stackedsplinearea", "stackedspline"];
$("#dropDownSeries").jqxDropDownList({ source: seriesList, selectedIndex: 0, width: '200', height: '25', dropDownHeight: 100 });
$('#dropDownSeries').on('select', function (event) {
var args = event.args;
if (args) {
var value = args.item.value;
var group = chart.seriesGroups[0];
chart.seriesGroups[0].type = value;
chart.update();
}
});
//custom
var seriesList = ["qhr", "hour", "day"];
$("#unit").jqxDropDownList({ source: seriesList, selectedIndex: 0, width: '200', height: '25', dropDownHeight: 100 });
$('#unit').on('select', function (event) {
var args = event.args;
if (args) {
var value = args.item.value;
if(value == "qhr") {chart.xAxis.unitInterval = 15; alert(chart.xAxis.unitInterval);}
if(value == "hour") {chart.xAxis.unitInterval = 60; alert(chart.xAxis.unitInterval);}
if(value == "day") {chart.xAxis.unitInterval = 1440;alert(chart.xAxis.unitInterval);}
chart.update();
}
});
// auto update timer
var ttimer = setInterval(function () {
var max = 800;
if (data.length >= 60)
data.splice(0, 1);
var timestamp = new Date();
timestamp.setSeconds(timestamp.getSeconds());
timestamp.setMilliseconds(0);
data.push({ timestamp: timestamp, value: Math.max(100, (Math.random() * 1000) % max) });
$('#chartContainer').jqxChart('update');
}, 1000);
});
</script>
</head> <body class=‘default’> <div id=‘chartContainer’ style=“width: 750px; height: 400px;”> </div> <table style=“width: 680px”> <tr> <td style=“padding-left: 50px;”> <p style=“font-family: Verdana; font-size: 12px;”>Select the series type: </p> <div id=‘dropDownSeries’> </div> </td> <td> <p style=“font-family: Verdana; font-size: 12px;”>Select color scheme: </p> <div id=‘dropDownColors’> </div> </td>
<td>
<p style="font-family: Verdana; font-size: 12px;">Select unit scheme:
</p>
<div id='unit'>
</div>
</td>
</tr>
</table>
</body> </html>
@ensalty 比如html中有<script src=“这里是路径”></script>,把这个路径放到浏览器地址栏,看能否返回就完了。楼上有人说了,浏览器按F12,看network那一栏有没有404