运行环境
2009 年,Node 创建的目的是为了在没有浏览器的情况下执行 JavaScript 代码,从而使程序员能够仅使用 JavaScript 语言创建全栈(前端和后端)应用程序。
Node 是一个与浏览器完全不同的运行时环境,这意味着不能使用浏览器环境数据值和函数,例如window.alert()。相反,Node 运行时环境使后端应用程序能够访问浏览器中无法提供的各种功能,例如访问服务器的文件系统、数据库和网络。
概括
一个运行环境是你的程序将被执行。JavaScript 代码可以在两种运行时环境之一中执行:
浏览器的运行时环境
Node 运行时环境
在这些环境中的每一个中,都可以使用不同的数据值和函数,这些差异有助于区分前端应用程序和后端应用程序。
前端 JavaScript 应用程序在浏览器的运行时环境中执行,并且可以访问window对象。
后端 JavaScript 应用程序在 Node 运行时环境中执行,可以访问连接到服务器的文件系统、数据库和网络。
第三方包 nodemon
用户输入输出
process.stdout.write(“”);
- btw,console.log()就是用process.stdout.write()包装的
process.stdin.on(‘data’, playGame); //第一个是入参 第二个是函数
文件系统
读取
const fs = require('fs');
let readDataCallback = (err, data) => {
if (err) {
console.log(`Something went wrong: ${err}`);
} else {
console.log(`Provided file contained: ${data}`);
}
};
fs.readFile('inout.js', 'utf-8', readDataCallback)
逐行读取
.on()方法将侦听器回调函数分配给命名事件。
.on()方法的参数是事件的名称和侦听器回调函数。
const readline = require('readline');
const fs = require('fs');
let settings = {
input: fs.createReadStream('xxx.txt')
};
const myInterface = readline.createInterface(settings);
const printData = (data) => {
console.log(`Item: ${data}`);
};
myInterface.on('line', printData);
写入
const readline = require('readline');
const fs = require('fs');
const myInterface = readline.createInterface({
input: fs.createReadStream('shoppingList.txt')
});
const fileStream = fs.createWriteStream('shoppingResults.txt');
let transformData = (line) => {
fileStream.write(`They were out of: ${line}\n`);
};
myInterface.on('line', transformData);
创建HTTP服务器
http.js
const http = require('http');
let { requestListener } = require('./callbackFile.js');
const PORT = process.env.PORT || 4001;
const server = http.createServer(requestListener);
server.listen(PORT);
callbackFile.js
const fs = require('fs');
module.exports = {
requestListener: (req, res) => {
fs.readFile('./myWebsite.html', 'utf-8', (err, data) => {
if (err) {
res.writeHead(200, { 'Content-Type': 'text/html' });
res.write(`${err}`);
res.end();
} else {
res.writeHead(200, { 'Content-Type': 'text/html' });
res.write(data);
res.end();
}
})
}
}