1.node簡單介紹
- 基于Chrome V8引擎的JavaScript運(yùn)行環(huán)境
- 使用了一個(gè)事件驅(qū)動(dòng),非阻塞式I/O的模型,使其輕量又高效
- 包管理器npm,是全球最大的開源生態(tài)系統(tǒng)
2.Windows常見命令
- 切換到D盤:D:
- 返回上一層:cd..
- 切換目錄:cd path
- 創(chuàng)建目錄:mkdir 目錄名
- 查看目錄:dir,別名ls(list)
- 清空控制臺(tái):cls,別名clear
- 刪除文件:del,別名rm
3.node基本命令
- 進(jìn)入node環(huán)境:node
- 執(zhí)行腳本文件:node path/index.js
- 查看幫助:node --help
4.全局對象
- global:類似于客戶端JavaScript運(yùn)行環(huán)境中的windows
- process:用于獲取當(dāng)前的node進(jìn)程的信息
- console:提供操作控制臺(tái)的輸入輸出功能
5. module & require
一個(gè)簡單的小例子
//命名為stuff.js
var counter = function (arr) {
return arr.length;
}
var adder=function(a,b){
return a+b;
}
module.exports={
//es6對象簡寫方法
counter,
adder
}
//命名為app.js
var stuff = require('./stuff');
console.log(stuff.counter(['ss','dd','ff']));//輸出:3
console.log(stuff.adder(2,4));//輸出:6
6.事件模塊
一個(gè)簡單的小例子
//引入事件模塊
var events = require('events');
//創(chuàng)建EventEmitter對象
var myEmitter=new events.EventEmitter();
//注冊事件
myEmitter.on('someEvent',function (msg) {
//使之異步輸出
setImmediate(function () {
console.log(msg);
});
});
//觸發(fā)事件
myEmitter.emit('someEvent','實(shí)現(xiàn)事件并傳遞此參數(shù)到注冊事件的回調(diào)函數(shù)中');
console.log(1);//先輸出:1
7.文件系統(tǒng)模塊
讀取和創(chuàng)建文件并寫入
// 引入文件系統(tǒng)模塊
var fs = require('fs');
// 通過對象調(diào)用方法
// var readMe = fs.readFileSync('readMe.txt','utf8');//同步讀取
// console.log(readMe);
// fs.writeFileSync('writeMe.txt',readMe);//創(chuàng)建writeMe.txt文件并同步寫入
// 異步讀取文件
fs.readFile('readMe.txt','utf8',function (err,data) {
if (err) throw err;
console.log(data);
});
console.log(1);//先輸出:1
// 異步寫入文件
fs.readFile('readMe.txt','utf8',function (err,data) {
if (err) throw err;
fs.writeFile('writeMe2.txt',data);
});
console.log(2);
// 命名為readMe.txt,內(nèi)容隨意
當(dāng)你凝視深淵時(shí),
深淵也同樣在凝視著你!
刪除文件以及創(chuàng)建和刪除文件夾
// 引入文件系統(tǒng)模塊
var fs = require('fs');
// 通過對象調(diào)用方法
// fs.unlink('writeMe.txt',function (){
// if(err) throw err;
// console.log('文件刪除成功!')
// });
// 創(chuàng)建文件夾 同步
// fs.mkdirSync('stuff');
// 刪除文件夾 同步
// fs.rmdirSync('stuff');
// 創(chuàng)建文件夾 異步
// fs.mkdir('stuff',function(){
// fs.readFile('readMe.txt','utf8',function(err,data){
// if(err) throw err;
// fs.writeFile('./stuff/writeMe.txt',data);
// });
// });
// 刪除文件夾 異步
// 先刪除文件夾中的內(nèi)容,再刪除外部的文件夾
fs.unlink('./stuff/writeMe.txt',function(){
fs.rmdir('stuff',function(err){
if(err) throw err;
console.log('文件夾刪除成功!');
});
});
// 命名為readMe.txt,內(nèi)容隨意
當(dāng)你凝視深淵時(shí),
深淵也同樣在凝視著你!
// 命名為writeMe.txt,內(nèi)容隨意
當(dāng)你凝視深淵時(shí),
深淵也同樣在凝視著你!
8. HTTP 模塊
搭建一個(gè)本地服務(wù)器
// 通過http模塊,創(chuàng)建本地服務(wù)器
var http=require('http');
// 創(chuàng)建服務(wù)器方法
var server=http.createServer(function (rep,res) {
console.log("客戶端向服務(wù)器發(fā)送請求"+rep.url);
res.writeHead(200,{"Content-type":"text/plain"});
res.end("Server is working!");
});
// 服務(wù)對象監(jiān)聽服務(wù)器地址以及端口號(hào)
server.listen(8888,"127.0.0.1");
console.log("server is running...");
// 瀏覽器訪問127.0.0.1:8888,頁面內(nèi)容為:Server is working!