官网地址javascript
中文网地址html
#node最简单的web服务java
建立 server.jsnode
引入 原生 apilinux
var http = require('htttp');
复制代码
http.createServer(function (request,response) {
//定义HTTP头
response.writeHead(200, {'Content-Type':'text/plan'});
//发送相应的数据
response.end('Hello world!\n');
}).listen(8000);
//服务运行以后输出一行信息
console.log('server is running...');
复制代码
node server.js
复制代码
全称交互式解释器 敲 node 命令进入 能够在环境以后 直接进行代码 的编写 运算 优势相似 浏览器的 console控制台 通常来讲咱们能够在此环境下 进行一些 简单的 代码运算 验证web
//阻塞时代码
var fs = require('fs');
var data = fs.readFileSync('data.txt'); // 阻塞时用 同步读取 readFileSync 非阻塞时用 readFile
console,log(data.toString());
复制代码
//非阻塞代码
var fs = require('fs');
fs.readFile('filename.txt',function(err,data){
// todo something
if(err){
return console.error(err)
}
console.log(data.toString());
})
cosnole.log("程序执行完毕")
复制代码
事件处理代码数据库
//1. 引入 events对象,建立 eventEmitter对象
var events = require('events');
var eventEmitter = new events.EventEmmitter();
//2. 绑定事件处理程序
var connctHandler = function connected(){
console.log('connected被调用了');
};
eventEmitter.on('connection', connctHandler()); //完成事件绑定
//3.触发事件
eventEmitter.emit('connection');
console.log("程序执行完毕");
复制代码
文件的缓存区 有文件模块缓存区 和 原生模块缓存区express
//main.js 主要调用模块的文件
var Hello = require('./hello');
hello = new Hello();
hello.setName('Richard');
hello.sayHello();
//hello.js 模块文件
function Hello(){
var name ;
this.setName = function(argName){
name = argName
}
this.sayHello = function(){
console.log('hellko' + name);
}
}
module.exports = Hello;
复制代码
代码示例:npm
function say(word){
console.log(word);
}
function execute(someFunction,value){
someFunction(value);
}
execute(say,'hello')
复制代码
匿名函数设计模式
function execute(someFunction,value){
someFunction(value)
}
execute(function(word){
console.log(word)
},'hello');
复制代码
示例Ⅱ 一样的功能,不一样的实现方式
//匿名函数
var http = require('http');
http.createServer(function(request,response){
response.writeHead(200,{"Content-Type":'text/plain'});
response.write("Hello world");
response.end();
}).listen(8000)
//先定义后传递
var http = require("http");
function onResquest(request,reponse){
response.writeHead(200,{"Content-Type":'text/plain'});
response.write("Hello World");
response.end();
}
http.createServer(onResquest).listen(8888);
复制代码
咱们所须要的全部数据都会包含在request对象中,该对象做为onRequest()回调函数的第一个参数传递。可是为了解析这些数据,咱们须要额外的Node.JS模块,他们分别是url 和querystring模块
例如咱们 访问 http://localhost:8888/start?foo=bar&hello=world
url.parse(string).query
|
url.parse(string).pathname |
| |
| |
------ -------------------
http://localhost:8888/start?foo=bar&hello=world
--- -----
| |
| |
querystring.parse(queryString)["foo"] |
|
querystring.parse(queryString)["hello"]
复制代码
//server.js
var http = require("http");
var url = require("url");
function start(route) {
function onRequest(request, response) {
var pathname = url.parse(request.url).pathname;
//console.log("Request for " + pathname + " received.");
route(pathname,response);
}
http.createServer(onRequest).listen(8888);
console.log("Server has started.");
}
exports.start = start;
//router.js
function route(pathname,response) {
if(pathname == '/'){
response.writeHead(200, {"Content-Type": "text/plain"});
response.write("Hello World");
response.end();
}else if(pathname == "/index/home"){
response.end('index');
}else{
response.end('index');
}
}
exports.route = route;
//app.js
var server = require("./server");
var router = require("./router");
server.start(router.route);
复制代码
var http = require('http');
var url = require('url');
var util = require('util'); //帮助类
http.createServer(function(req, res){
res.writeHead(200, {'Content-Type': 'text/plain; charset=utf-8'});
res.end(util.inspect(url.parse(req.url, true)));
}).listen(3000);
复制代码
var http = require('http');
var querystring = require('querystring');
var util = require('util');
http.createServer(function(req, res){
// 定义了一个post变量,用于暂存请求体的信息
var post = '';
// 经过req的data事件监听函数,每当接受到请求体的数据,就累加到post变量中
req.on('data', function(chunk){
post += chunk;
});
// 在end事件触发后,经过querystring.parse将post解析为真正的POST请求格式,而后向客户端返回。
req.on('end', function(){
post = querystring.parse(post);
res.end(util.inspect(post));
});
}).listen(3000);
复制代码
global 就是nodejs的全局对象 类比javascript的window
__filename __filename 表示当前正在执行的脚本的文件名。它将输出文件所在位置的绝对路径,且和命令行参数所指定的文件名不必定相同。 若是在模块中,返回的值是模块文件的路径。
__dirname __dirname 表示当前执行脚本所在的目录。
setTimeout(cb, ms) setTimeout(cb, ms) 全局函数在指定的毫秒(ms)数后执行指定函数(cb)。:setTimeout() 只执行一次指定函数。返回一个表明定时器的句柄值。
clearTimeout(t) clearTimeout( t ) 全局函数用于中止一个以前经过 setTimeout() 建立的定时器。 参数 t 是经过 setTimeout() 函数建立的定时器。
setInterval(cb, ms) setInterval(cb, ms) 全局函数在指定的毫秒(ms)数后执行指定函数(cb)。返回一个表明定时器的句柄值。可使用 clearInterval(t) 函数来清除定时器。setInterval() 方法会不停地调用函数,直到 clearInterval() 被调用或窗口被关闭。
process process 是一个全局变量,即 global 对象的属性。它用于描述当前Node.js 进程状态的对象,提供了一个与操做系统的简单接口。一般在你写本地命令行程序的时候,少不了要 和它打交道。下面将会介绍 process 对象的一些最经常使用的成员方法。
工具util
underscore.js
var fs = require("fs");
// 异步读取
fs.readFile('input.txt', function (err, data) {
if (err) {
return console.error(err);
}
console.log("异步读取: " + data.toString());
});
// 同步读取
var data = fs.readFileSync('input.txt');
console.log("同步读取: " + data.toString());
console.log("程序执行完毕。");
复制代码
fs.open(path, flags[, mode], callback) 参数说明:
fs.stat(path, callback) 参数说明
fs.writeFile(file, data[, options], callback)
var fs = require("fs");
console.log("准备写入文件");
fs.writeFile('input.txt', '我是通 过fs.writeFile 写入文件的内容', function(err) {
if (err) {
return console.error(err);
}
console.log("数据写入成功!");
console.log("--------我是分割线-------------")
console.log("读取写入的数据!");
fs.readFile('input.txt', function (err, data) {
if (err) {
return console.error(err);
}
console.log("异步读取文件数据: " + data.toString());
});
});
复制代码
等等 方法 参考 菜鸟教程