Basic
Содержание
- Hello world
- Create server
- Подключение одного файла к другому
- Вызов событий (event Emitter)
- Запись и чтения из файла(txt)
- Создание и удаление файлов, папок
- Пишущие и читающие потоки и Буферы
- Pipes
- Вывод HTML-страниц
- Вывод JSON-данных
Hello world
Чтобы запустить файл для node, надо перейти в ту директорию где лежит файл app.js и тогда исполнить команду:
node app
# or the same
node app.js
// app.js
console.log('Hello world')
Create server
var http = require('http');
// создать сервер
var server = http.createServer(function(req, res)
{
// пишем Headers для нормальонго отображения текста
res.writeHead(200, {'Content-Type': 'text/plain'})
// вывести какой запрос был
console.log('request was made: ' + req.url);
// отсылаем ответ
res.end('Shit');
});
// запуск сервера
server.listen(3000, '127.0.0.1');
console.log('Server is Launched');
Подключение одного файла к другому (count.js -> app.js)
//-----count.js
counter = function(arr){ return 'There are ' + arr.length; };
function counter1(a,b){ return `There is ${a+b}`; };
var pi = 3.4;
// 1 Case of Exports
module.exports = {
counter: counter,
counter1: counter1,
pi: pi
};
// 2 Case of Exports
module.exports.counter = counter;
module.exports.counter1 = counter1;
module.exports.pi = pi;
//------app.js
stuff = require('./count')
console.log(stuff.counter(['shit', 'crystal']))
console.log(stuff.counter1(1,2))
Вызов событий (event Emitter)
var events = require('events');
var eventEmitter = new events.EventEmitter();
function Hello(){ console.log('Hello m8 and goodbye'); }
eventEmitter.on('Boom', Hello)
eventEmitter.emit('Boom');
Запись и чтения из файла(txt)
var fs = require('fs'); // подключаем библиотеку для чтения и записи файла
//------------------------ ....FileSync - указывает на то что пока не прочитаю файл до конца не пойду дальше - Синхронно
var shitTxt = fs.readFileSync('shit.txt', 'utf8'); // читаем файла
console.log(shitTxt); // выводим
fs.writeFileSync('writeMe.txt', shitTxt); // создает и пишет в него то что есть в файле "shit.html"
//------------------------
//------------------------ ....File - указывает на то что код пойдет выполянться дальше - Асинхрон
fs.readFile('shit.txt', 'utf8', function(err, data)
{
fs.writeFile('writeMe.txt', data);
})
//------------------------
Создание и удаление файлов, папок
var fs = require('fs'); // подключаем библиотеку для чтения и записи файла
// удлалить файл в папке "" и удалить саму папку. Удалить папку если она не пуста не выйдет
fs.unlink('./stuff/writeMe.txt', function()
{
fs.rmdir('stuff');
})
// ------------------------- Sync
// создать директорию
fs.mkdirSync('stuff');
// удалить директорию
fs.rmdirSync('stuff');
// ------------------------- Sync
// ------------------------- ASync
fs.mkdir('stuff', function()
{
fs.readFile('readMe.txt', 'utf8', function(err, data)
{
fs.writeFile('./stuff/writeMe.txt', data);
});
})
// ------------------------- ASync
Пишущие и читающие потоки и Буферы
Разница между этим способом и fs.writeFile & fs.ReadFile
- с потоками вроде как быстрее из-за разбивание на кусочки инфы
Читаем файл через поток (прикол в чем: в том что если файл большой то он передаеться частями)
var fs = require('fs');
var myReadStream = fs.createReadStream(__dirname + '/shit.txt', 'utf8');
myReadStream.on('data', function(chunk)
{
console.log('chunk:');
console.log(chunk);
});
Читаем файл через поток и записываем в другой файл через пишущий поток
var fs = require('fs');
var myReadStream = fs.createReadStream(__dirname + '/shit.txt', 'utf8'); // создание потока который читает
var WStream = fs.createWriteStream(__dirname + '/Wshit.txt'); // создание потока который пишет
myReadStream.on('data', function(chunk)
{
// вывод того что прочитали
console.log('chunk:');
console.log(chunk);
// пишем в наш поток из файла данные
WStream.write(chunk);
});
Pipes
Автоматическое перенаправление читающего потока в пишущий для записи или вывода
var fs = require('fs');
var RStream = fs.createReadStream(__dirname + '/shit.txt', 'utf8'); // создание потока который читает
var WStream = fs.createWriteStream(__dirname + '/Wshit.txt'); // создание потока который пишет
// Направить прочитанную информацию для записи в файл
RStream.pipe(WStream);
/// ** Antoher Example ** \\\
var http = require('http');
var fs = require('fs');
// создать сервер
var server = http.createServer(function(req, res)
{
// пишем Headers для нормальонго отображения текста
res.writeHead(200, {'Content-Type': 'text/plain'})
// вывести какой запрос был
console.log('request was made: ' + req.url);
var RStream = fs.createReadStream(__dirname + '/shit.txt', 'utf8'); // создание потока который читает
// отсылаем ответ
// данные прочитаные с файла отдаем в ответ
RStream.pipe(res);
});
// запуск сервера
server.listen(3000, '127.0.0.1');
console.log('Server is Launched');
Вывод HTML-страниц
var http = require('http'); // http
var fs = require('fs'); // Read and Write Stream
// создать сервер
var server = http.createServer(function(req, res)
{
res.writeHead(200, {'Content-Type': 'text/html'}) // пишем для отображения html
// res.writeHead(200, {'Content-Type': 'text/html'}) // пишем для отображения обычного текста
// вывести какой запрос был
console.log('request was made: ' + req.url);
var RStream = fs.createReadStream(__dirname + '/index.html', 'utf8'); // создание потока который читает
// отсылаем ответ
// html-страница
RStream.pipe(res);
});
// запуск сервера
server.listen(3000, '127.0.0.1');
console.log('Server is Launched');
Вывод JSON-данных
var http = require('http'); // http
// создать сервер
var server = http.createServer(function(req, res)
{
res.writeHead(200, {'Content-Type': 'application/json'}) // пишем для отображения json
var myJson = {
name: "James",
surname: "Hetfield",
age: 50
};
res.end(JSON.stringify(myJson));
});
// запуск сервера
server.listen(port, '127.0.0.1');
console.log('Server is Launched on port ' + port);