前言
一、Node JS到底是什么
1、Node JS是什么
- Node.js不是一种独立的编程语言
 - Node.js不是JavaScript框架
 - Node.js是一个JavaScript运行环境
 
2、Node.js 与JavaScript是什么关系?
- Node.js与JavaScript的关系
 
- 层面: Node.js使用的编程语言是JavaScript。这意味着在Node.js中编写的代码语法与浏览器中的JavaScript代码语法基本相同。
 - 运行环境: 浏览器中的JavaScript运行在浏览器提供的环境中,而Node.js中的JavaScript运行在Node.js提供的运行时环境中。浏览器和Node.js都基于V8引擎,但Node.js提供了额外的API,使其更适合服务器端开发。
 
- Node.js扩展了JavaScript的能力
 
- 非阻塞I/O: Node.js采用事件驱动和非阻塞I/O模型,适合处理高并发请求。
 - 模块系统: Node.js使用CommonJS模块系统,允许开发者将代码分割成独立的模块。
 - 内置API: Node.js提供了一系列内置API,用于文件系统操作、网络通信、流处理、子进程管理等。
 
二、Node JS本地环境搭建
1、安装Node.js
Node JS官网
node -v
npm -v
 
三、文件操作与模块化的概念
1、文件操作
- 文件读取
 
var fs = require("fs");
fs.readFile("./text.txt", "utf8", function (err, data) {
  console.log(err);
  console.log(data);
});
 
 
hello world
 
 
node read.js
 

- 文件写入
 
var fs = require("fs");
fs.writeFile("./text.txt", "world hello", function (err) {
  console.log(err);
});
 
 
node write.js
 

hello world-> world hello
- 文件追加
 
var fs = require("fs");
fs.readFile("./text.txt", "utf8", function (err, data) {
  if (!err) {
    var newData = data + "welcome";
    fs.writeFile("./text.txt", newData, function (err) {
      if (!err) {
        console.log("追加内容成功");
      }
    });
  }
});
 
 
node file.js
 

hello world-> hello worldwelcome
2、模块化编程
- 模块的定义
 
- 接口:模块向外界提供的功能(方法、属性等),即模块的公开API。
 - 实现:模块内部实现细节,对外界不可见,只能通过接口访问。
 
- 模块化编程的优点
 
- 高内聚低耦合:模块内的代码高内聚,而模块之间的耦合度低,提高了代码的可维护性。
 - 可重用性:模块可以在不同的项目中重复使用,提高开发效率。
 - 易于调试和测试:独立的模块可以单独调试和测试,简化了开发过程。
 - 团队协作:不同的开发人员可以并行开发不同的模块,提升团队协作效率。
 
- JavaScript中的模块化
 
- CommonJS模块系统(Node.js)
 
// math.js
exports.add = function(a, b) {
  return a + b;
};
// app.js
const math = require('./math');
console.log(math.add(2, 3));  // 5
 
- ES6模块系统(浏览器和Node.js)
 
// im.mjs
import { val } from "./ex.mjs";
console.log(val);
 
// ex.mjs
var val = "ex data";
export { val };
 
node im.mjs
 
 
"type":"module"
 
- AMD
 
// 定义一个名为'math'的模块
define('math', [], function() {
  return {
    add: function(a, b) {
      return a + b;
    },
    subtract: function(a, b) {
      return a - b;
    }
  };
});
 
 
require(['math'], function(math) {
  console.log(math.add(1, 2));  // 3
});
 
- UMD
 
(function (root, factory) {
  if (typeof define === 'function' && define.amd) {
    // AMD. Register as an anonymous module.
    define([], factory);
  } else if (typeof module === 'object' && module.exports) {
    // Node. Does not work with strict CommonJS, but
    // only CommonJS-like environments that support module.exports,
    // like Node.
    module.exports = factory();
  } else {
    // Browser globals (root is window)
    root.myModule = factory();
  }
}(typeof self !== 'undefined' ? self : this, function () {
  // 模块代码
  return {
    add: function(a, b) {
      return a + b;
    },
    subtract: function(a, b) {
      return a - b;
    }
  };
}));










