node入門筆記
阿新 • • 發佈:2019-01-04
一、Node簡介
node是一個基於v8引擎的JavaScript執行環境。
二、全域性物件
setTimeout setInterval clearTimeout clearInterval console //當前目錄下的檔案 console.log(__dirname); //當前檔名 console.log(__filename); 三、模組 app.js//模組 var obj = require('./count.js'); console.log(obj.arr); console.log(obj.adder(3,2)); console.log('there is ' + obj.arr.length + ' fruits in the packet');
count.js
var arr = ['apple', 'banana', 'orange']; var adder = function(a,b) { return `this result is ${a+b}`; } /* module.exports.arr = arr; module.exports.adder = adder; */ //等價於,這裡exports出了一個物件 module.exports = { arr: arr, adder: adder }
四、事件
//事件核心庫 var events = require('events'); //新增事件 var myEmitter = new events.EventEmitter(); //給事件繫結函式 myEmitter.on('someEvent', function(message) { console.log(message); }) //觸發事件 myEmitter.emit('someEvent', 'the event was emmited');
//匯入一個工具庫 var util = require('util'); varPerson = function(name) { this.name = name } //繼承所有Person的事件 util.inherits(Person, events.EventEmitter); var xiaoming = new Person('xiaoming'); var lili = new Person('lili'); var lucy = new Person('lucy'); var Person = [xiaoming, lili, lucy]; //繫結事件 Person.forEach(person => { person.on('speak', message => { console.log(person.name + ' said ' + message); }) }); //觸發事件 xiaoming.emit('speak','hi'); lili.emit('speak','hello'); lucy.emit('speak','nihao');
五、讀寫檔案(同步、非同步)
var fs = require('fs'); //同步讀取檔案 var readMe = fs.readFileSync('./test1/readMe.txt','utf8'); //同步寫檔案 fs.writeFileSync('writeMe.txt', readMe); //非同步讀取檔案 fs.readFile('./test1/readMe.txt','utf8', function(err,data){ console.log(data); }); //非同步寫檔案 fs.writeFile('writeMe2.txt', readMe,function(err,data){ console.log('data is copyed'); });
六、建立和刪除檔案
//建立檔案 fs.mkdir('stuff',function(){ fs.readFile('readMe.txt', 'utf8',function(err,data){ fs.writeFile('./stuff/writeMe.txt',data,function(){ console.log('copy successfully'); }) }) }); //刪除檔案 fs.unlink('readMe.txt',function(){ console.log('this file is deleted'); });
七、流和管道
ls => 檢視當前目錄下的檔案
ls | grep xx => 檢視當前目錄下是否含有xx檔案
— 待續 —