Node.js的学习1

发布于:2024-09-18 ⋅ 阅读:(124) ⋅ 点赞:(0)

什么是Node.js

官方定义:Node.js是一个基于Chrome V8引擎JavaScript运行时环境。它是一个能让JavaScript脱离浏览器运行在服务器端的开发平台。
运行环境
在这里插入图片描述

:在浏览器中运行时可以使用JavaScript包含的ECMAScript、DOM、BOM三部分API.但由于Node.js脱离了浏览器,因此DOM和BOM在Node.js环境中无法使用。

Node.js能做什么

由于Node.js是一个开放源代码的JavaScript运行时环境,采用事件驱动、异步I/O的模式,所以非常适合轻量级、快速的实时应用(如协作工具、聊天工具、社交媒体等)以及高并发的网络应用。
Node.js特性:

  • 跨平台
    基于Node.js开发的应用,可以运行在Windows、Linux、macOS平台上,实现一次编写、处处运行。
  • 异步I/O
    I/O表示输入/输出.软件运用的性能瓶颈一般都在I/O上,无论网络I/O还是读取文件I/O都可能会耗费大量时间。为解决耗费时间问题引申两个概念:同步、异步。
    同步:任务一件一件的依次执行,上一个任务执行完成后才能进入下一个任务。
    异步:任务一件一件依次执行,但不用等到任务执行完成便可以进入下一个任务。(用空间换时间)
  • 单线程
    只用一个主线程来接收请求,接收到请求后将其放入事件队列,继续接收下一次请求。当没有请求或主线程空闲时就会通过事件循环来处理这些事件,从而实现异步效果,满足高并发场景。
  • 事件驱动
    传统的高并发场景中通常是采用多线程模型,为每个任务分配一个线程,通过系统线程切换来弥补同步I/O调用时间,这是典型的时间换空间。
    Node.js是但线程模型,避免了频繁的线程间切换。它维护一个事件队列,程序在执行时进入事件循环等待事件的到来;而每个异步I/O请求完成后会被推送到事件队列,等待主线程对其进行处理。这种基于事件的处理模式,才使得Node.js中执行任务的单线程变得高效。
  • 支持微服务
    微服务是一种软件设计风格,其把复杂业务进行拆分,根据特定功能完成单一服务划分,这些服务可以单独部署并能最小化的集中管理。

Node.js安装

官网下载地址:
https://nodejs.org/zh-cn/download/package-manager
一路Next即可。

运行Node.js代码最好安装Visual Studio Code.

let hello = 'hello world'
console.log(hello)

运行js代码文件

方法1:在【run】->【start Debugging】->【Node.js】
在这里插入图片描述
方法2:
在【Terminal】->【new Terminal】
cd [文件所在目录]
node xxx.js

Node.js模块化管理

模块化:把一些通用的功能封装为模块以便复用。
在Node.js中,通过NPM包管理器对模块进行管理。
模块化规范:

规范名称 说明
CommonJS(同步模块规范) 主要用于服务器端,典型实现Node.js
AMD(异步模块规范) 主要用于浏览器端,典型实现RequireJS
CMD(普通模块规范) 主要用于浏览器端,典型实现SeaJS
UMD(通用模块规范) 通用模块系统,兼容CommonJS\AMD\CMD规范
ES 6模块规范 JavaScript官方标准

CommonJS规范特点:

  • 每个文件都是一个Module实例。
  • 所有文件加载都是同步完成的。
  • 每个模块加载一次之后就会被缓存,以后再加载时直接读取缓存结果,要想让模块再次运行,必须清除缓存。
  • 模块通过关键字module对外暴露内容。
  • 文件内通过require对象引入指定的模块。
  • 模块按照其在代码中出现的顺序加载。

CommonJS的基本语法:
导出模块:

module.exports.xxx = value  

引入模块:

require(xxx)

[例子]
student.js

let name = 'lala'
let object1 = 88
let object2 = 95
let allScore = function (object3) {
  return object1 + object2 + object3   // 总成绩=3科成绩总和
}
module.exports.name = name
module.exports.allScore = allScore

getscore.js(获取学生成绩模块的内容)

let score_module = require('./helloworld.js')
console.log(score_module.name + '总成绩:' + score_module.allScore(100))

ES 6模块化规范

基本语法:
导出模块:export 变量\函数\类声明
引入模块:import {标识符} from 模块名
【例子】
student.js

export let name = 'lala'
export let object1 = 88
export let object2 = 99
export function allScore(object3) {
  return object1 + object2 + object3
}
let age = 15
export { age }

getscore.js

import { name, allScore, age } from './student.js'

console.log(name + '总成绩:' + allScore)
console.log(name + '年龄是:' + age)

Node.js模块分类

Node.js模块分为:核心模块、自定义模块、第三方模块。
1.核心模块

变量或模块 功能说明
console 控制台模块
global 全局命名空间对象
process 进程对象
timer模块 定时器
fs文件系统模块 用于与文件系统交互
path路径模块 用于处理文件和目录的路径
net网络模块 提供异步网络API
HTTP模块 用于创建HTTP服务器和客户端
events事件触发器模块 用于事件处理
TLS安全传输层模块 提供基于OpenSSL构建的安全传输层协议和安全套接字层协议实现

更多核心模块,可阅读官方文档。

2.自定义模块
项目中根据业务功能将文件拆分,这些被拆分的文件就是用户自定义模块。

3.第三方模块
NPM仓库中有非常多优秀的模块,可通过npm install 命令安装到项目中
这些模块使用很简单,只需要按照对应的文档即可轻易调用对应的功能。

NPM包管理工具

NPM(Node Package Manager)是随同Node.js一起安装的包管理工具,也是Node.js官方推出的默认的包管理工具,用于管理模块的安装、卸载和依赖性。
NPM的官网地址:https://www.npmjs.com,开发者可以在其官网上下载和上传模块。
NPM实际由三部分组成,即网站、注册表、命令行工具。通过官网可以对包进行查询和管理;注册表记录保存了所有包的信息;命令行工具通过命令下载安装包。

命令 说明
npm help(npm -h) 查看NPM帮助信息
npm version(npm -v) 查看NPM版本信息
npm init 引导创建package.json文件
npm install(npm -i) 安装模块
npm ls 查看已安装模块
npm config 管理NPM配置文件
npm cache 管理模块缓存
npm adduser 添加用户
npm publish 发布模块
npm start 启动模块
npm test 测试模块
npm update 更新模块
npm root 线上NPM根模块
npm access 设置模块访问级别

NPM的使用

npm init   // 初始化目录(可以一直按enter,也可以选填)

在这里插入图片描述
初始化完成后,可以看到目录下新增了一个package.json文件。

npm install moment   // 安装第三方库

在这里插入图片描述
安装完成后,项目目录下新加了一个package-lock.json文件及node_modules目录。


网站公告

今日签到

点亮在社区的每一天
去签到