新人请教:怎么获得客户端的js、css文件?
发布于 13 年前 作者 mingshuan 10497 次预览 最后一次回复是 8 年前 来自
初学nodejs,希望直接输入localhost:8080就能获得html和客户端的js、css。 服务器端部分代码: function handler (req, res) { res.writeHead(200);
fs.readFile(__dirname + ‘/index.html’, function (err, data) { if (err) { res.writeHead(500); return res.end(‘Error loading index.html’); } res.writeHead(200); res.end(data); }); } index.html部分代码: <script src=“clientjs/Lib.js”></script>
可是输入localhost:8080只能得到index.html,得不到Lib.js,请问大家怎么写才可以从服务器端获取客户端需要的所有文件,谢谢!
24 回复
你可以看看这个:Node入门,对nodejs web开发有了一点概念之后,可以看看expressjs之类的web开发框架。
谢谢你的回复,如果把客户端的js代码直接写入index.html还行,但是要把客户端js和index.html分开就不知道怎么写了,我现在急需一个这样的demo,还希望你能知道一下,多谢!
@mingshuan 你先别急着写,耐心看完这个入门教程先,磨刀不误砍柴工嘛。其中关于“路由”的部分有讲到怎样处理不同的URL请求。 真正做东西肯定要用框架,但是基本原理还是要了解一下的。
@mingshuan 你需要一个简单的 Web 服务器,去 NodeJs 的第三方模块里面找找就行了,你目前需要的是恶补一下基本的互联网知识。
NodeJs 只是一个运行平台,离开了第三方模块,什么用处也没有。
@mingshuan 你写的那个服务端代码实在是简陋得可以,而且完全没有必要。
谢谢大家的回复,那我先学习学习,不会的再请教大家,谢谢!
不是大家不回答你的问题。有疑问还是随时可以问:-)
要想传递不同的资源(html、js、css、image、voice、video等),如果使用原生写法,就要加入不同的content-type,以css(Content-Type:‘text/css’)为例子:
内嵌资源和下载资源也通过这个发生变化。另外发一份ContentType的不完整的列表。需要注意的是,里面会有重复的,原因是他提供了内嵌和下载2中区别,例如’.jpg’:‘image/jpeg’和’.jpg’:‘application/x-jpg’,前者是资源内嵌,后者是资源下载。
@imzshh 呵呵,还是谢谢啊,昨天问题解决了,是因为server写的有问题。 另外还想请教一下,如果我想用第三方模块,怎么查看它的api、使用方法之类的啊?比如我想用nodejs操作mysql,只知道npm install mysql,但不知道对应第三方哪个模块,还请指导一下
谢谢啊,昨晚搞定了,呵呵
@mingshuan 要看这个模块的官方网站,或者就去github上搜索模块名称,好的模块基本都会有比较详细的readme文件。
content type大全啊……
果断收藏上面的content type大全
@imzshh @lenzhang 不好意思,这个不能算完整的,因为我当初在官网下了这个所谓的大全之后,我在使用的时候,发现了2个问题: 1.不全,例如‘.json’就没有,后来还有一些也没有的。 2.无说明,例如’.jpg’就有2种,而官方没有做说明哪一种属于内嵌资源,哪一种属于下载资源。后来我也试了一些,自己去除了一些重复的。
@a272121742 下载的时候如果输出了错误的content type会有什么问题?
@imzshh 这个我没遇到过,因为这个json我指定了默认类型的,我有个方法,通过传入文件完整名称能返回这个文件对应的ct类型,如果没有,会返回默认的类型。另外我例子中没有给出修改文件名的代码,所以默认情况下下载都是直接把文件(默认名,好像是没后缀)下载到电脑上。不知道你说的是具体什么情况。
@a272121742 下载的时候从来没有指定过content-type,所以听你说这个下载content-type的事情,就想会不会有什么问题。。。
好长的 mime, 为什么不直接用现成模块啊? https://github.com/broofa/node-mime/blob/master/types/mime.types
@imzshh 如果不指定content-type,一般默认就是下载,下载的后的文件类型不确定而已
这个比我的还长。。。
我是初学者,教我的大哥要求我先不用框架做个服务器,我想问下,像楼主问的那个问题怎么解决??就是一个网页有用到css、js,但是出来的界面都是没有css与js效果的。麻烦各位大大了
顶,遇到同样问题是懵逼的。 index.html要包含外部css、js <script type=“text/javascript” src="./a.js"></script>的写法不行。。。 不知道咋搞路由
//------------------------------------------------ // 利用nodejs搭建一个简单的Web服务器 //------------------------------------------------
//启动计时器,记录启动服务所花费的时间 console.time(‘start WebServer need time’);
//请求模块 var libHttp = require(‘http’); //HTTP协议模块 var libUrl = require(‘url’); //URL解析模块 var libFs = require(“fs”); //文件系统模块 var libPath = require(“path”); //路径解析模块
//依据路径获取返回内容类型字符串,用于http响应头 var funGetContentType = function (filePath) { var contentType = “”;
}
//Web服务器主函数,解析请求,返回Web内容 var funWebSvr = function (req, res) { //获取请求的url var reqUrl = req.url;
}
//创建一个http服务器 var webSvr = libHttp.createServer(funWebSvr);
//指定服务器错误事件响应 webSvr.on(“error”, function (error) { //在控制台中输出错误信息 console.log(error); });
//开始侦听8124端口 webSvr.listen(8124, function () { //向控制台输出服务启动的信息 console.log(‘WebServer running at http://127.0.0.1:8124/’);
});
5年前的沉帖诈尸啊… 楼上的回答作为一个雏形是可以的,实际使用是有问题的,最需要处理的就是缓存问题;话说web框架都有各种静态server中间件…