node是一个JavaScript运行时环境
浏览器中的JavaScript(ECMA标准、DOM、BOM)
node中没有(DOM、BOM),有核心模块
特性:非阻塞IO模型和事件驱动
node 三模块
- 核心模块(由node提供的http、fs、os、path。。。)
- 第三方模块(express框架。。。)
- 用户自定义模块(js文件)
在node中没有全局作用域,只有模块作用域(外部js文件拿不到内部js文件的成员变量,内部js文件也拿不到外部js文件的成员变量)
通过require(" 模块名称 "); 进行加载
通过exports导出模块文件
require()有两个作用
- 加载文件模块并执行里面的代码
- 拿到被加载文件模块导出的接口对象
exports
- 多个接口对象导出:module.exports.属性 = 值
- 单个接口对象导出:module.exports = 值
exports === module.exports , 所以可以省略module
但是最终返回的是module.exports
启动node(在当前文件下执行)
node app.js(也就是文件名)
node.js API地址:http://nodejs.cn/api/
express.js API地址:http://www.expressjs.com.cn/
Content-Type:设置地址http://tool.oschina.net/commons
基本的服务端脚本
/*加载http服务器*/
var http = require('http');
/*加载文件操作*/
var fs = require("fs");
/*创建一个web服务器,用server实例接收*/
var server = http.createServer();
/*监听request请求事件,设置请求处理函数*/
server.on("request",function (request,response) {
var url = request.url;
if(url === "/"){
fs.readFile("./04请求文件.html",function (error,data) {
if(error){
response.setHeader("Content-Type","text/plain;charset=utf-8");
response.end("文件加载失败,请稍后重试。。。");
}else{
response.setHeader("Content-Type","text/html;charset=utf-8");
response.end(data);
}
})
}else if(url ==="/meimei"){
fs.readFile("./meimei.jpg",function (error,data) {
if(error){
response.setHeader("Content-Type","text/plain;charset=utf-8");
response.end("文件加载失败,请稍后重试。。。");
}else{
response.setHeader("Content-Type",'image/jpeg');
response.end(data);
}
})
}
});
/*绑定端口号,启动服务*/
server.listen("3000",function () {
console.log("Server is running");
})