运行环境

2009 年,Node 创建的目的是为了在没有浏览器的情况下执行 JavaScript 代码,从而使程序员能够仅使用 JavaScript 语言创建全栈(前端和后端)应用程序。
Node 是一个与浏览器完全不同的运行时环境,这意味着不能使用浏览器环境数据值和函数,例如window.alert()。相反,Node 运行时环境使后端应用程序能够访问浏览器中无法提供的各种功能,例如访问服务器的文件系统、数据库和网络。

概括

一个运行环境是你的程序将被执行。JavaScript 代码可以在两种运行时环境之一中执行:
浏览器的运行时环境
Node 运行时环境
在这些环境中的每一个中,都可以使用不同的数据值和函数,这些差异有助于区分前端应用程序和后端应用程序。
前端 JavaScript 应用程序在浏览器的运行时环境中执行,并且可以访问window对象。
后端 JavaScript 应用程序在 Node 运行时环境中执行,可以访问连接到服务器的文件系统、数据库和网络。

第三方包 nodemon

用户输入输出

process.stdout.write(“”);

  1. btw,console.log()就是用process.stdout.write()包装的

process.stdin.on(‘data’, playGame); //第一个是入参 第二个是函数

文件系统

读取

  1. const fs = require('fs');
  2. let readDataCallback = (err, data) => {
  3. if (err) {
  4. console.log(`Something went wrong: ${err}`);
  5. } else {
  6. console.log(`Provided file contained: ${data}`);
  7. }
  8. };
  9. fs.readFile('inout.js', 'utf-8', readDataCallback)

逐行读取

.on()方法将侦听器回调函数分配给命名事件。
.on()方法的参数是事件的名称和侦听器回调函数。

  1. const readline = require('readline');
  2. const fs = require('fs');
  3. let settings = {
  4. input: fs.createReadStream('xxx.txt')
  5. };
  6. const myInterface = readline.createInterface(settings);
  7. const printData = (data) => {
  8. console.log(`Item: ${data}`);
  9. };
  10. myInterface.on('line', printData);

写入

  1. const readline = require('readline');
  2. const fs = require('fs');
  3. const myInterface = readline.createInterface({
  4. input: fs.createReadStream('shoppingList.txt')
  5. });
  6. const fileStream = fs.createWriteStream('shoppingResults.txt');
  7. let transformData = (line) => {
  8. fileStream.write(`They were out of: ${line}\n`);
  9. };
  10. myInterface.on('line', transformData);

创建HTTP服务器

image.png

http.js

  1. const http = require('http');
  2. let { requestListener } = require('./callbackFile.js');
  3. const PORT = process.env.PORT || 4001;
  4. const server = http.createServer(requestListener);
  5. server.listen(PORT);

callbackFile.js

  1. const fs = require('fs');
  2. module.exports = {
  3. requestListener: (req, res) => {
  4. fs.readFile('./myWebsite.html', 'utf-8', (err, data) => {
  5. if (err) {
  6. res.writeHead(200, { 'Content-Type': 'text/html' });
  7. res.write(`${err}`);
  8. res.end();
  9. } else {
  10. res.writeHead(200, { 'Content-Type': 'text/html' });
  11. res.write(data);
  12. res.end();
  13. }
  14. })
  15. }
  16. }