<JS从入门到放弃>Nodejs笔记

参考资料:http://nodejs.cn/learn/how-to-exit-from-a-nodejs-program

一.Node.js简介

Node.js 是一个开源与跨平台的 JavaScript 运行时环境。 它是一个可用于几乎任何项目的流行工具!

Node.js 在浏览器外运行 V8 JavaScript 引擎(Google Chrome 的内核)。 这使 Node.js 表现得非常出色。Node.js 中的库通常是使用非阻塞的范式编写的

当 Node.js 执行 I/O 操作时(例如从网络读取、访问数据库或文件系统),Node.js 会在响应返回时恢复操作,而不是阻塞线程并浪费 CPU 循环等待。除了客户端代码之外还可以编写服务器端代码,而无需学习完全不同的语言。可以通过更改 Node.js 版本来决定要使用的 ECMAScript 版本

npm 的简单结构有助于 Node.js 生态系统的激增,现在 npm 仓库托管了超过 1,000,000 个可以自由使用的开源库包。

二.历史

2009-2020

三.需要了解的JS知识

  • 词汇结构
  • 表达式
  • 数据类型
  • 变量
  • 函数
  • this
  • 箭头函数
  • 循环
  • 作用域
  • 数组
  • 模板字面量
  • 分号
  • 严格模式
  • ECMAScript 6、2016、2017
  • 以下概念也是理解异步编程的关键,异步编程是 Node.js 的基本组成部分:

  • 异步编程与回调
  • 定时器
  • Promise
  • Async 与 Await
  • 闭包
  • 事件循环

四.V8 JavaScript 引擎

(1)V8 是为 Google Chrome 提供支持的 JavaScript 引擎的名称。 当使用 Chrome 进行浏览时,它负责处理并执行 JavaScript。

(2)V8 提供了执行 JavaScript 的运行时环境。 DOM 和其他 Web 平台 API 则由浏览器提供。

(3)JavaScript 引擎独立于托管它的浏览器

(4)V8 使用 C++ 编写,并且不断地被改进。 它是可移植的,且可运行于 Mac、Windows、Linux 和其他一些系统。

五.编译

(1)JavaScript 通常被认为是一门解释型的语言,但是现代的 JavaScript 引擎不再只是解释 JavaScript,也会对其进行编译。

(2)JavaScript 是由 V8 在其内部编译的,使用了即时(JIT)编译以加快执行速度。

(3)编译 JavaScript 非常有意义,因为尽管可能需要多花费一点时间来为 JavaScript 做准备,但是一旦完成,则它会比纯解释型的代码具有更高的性能。

六.nodejs命令行运行和退出

(1)运行

运行 Node.js 程序的常规方法是,运行全局可用的 node 命令(已安装 Node.js)并传入要执行的文件的名称。

node test.js

(2)退出

[1]ctrl-C

[2]process 核心模块提供了一种便利的方法,可以以编程的方式退出 Node.js 程序:process.exit()。可以传入一个整数,向操作系统发送退出码:

process.exit(1)

也可以设置 process.exitCode 属性:

process.exitCode = 1

[3]nodejs启动HTTP服务器

const express = require('express')
const app = express()

app.get('/', (req, res) => {
  res.send('你好')
})

app.listen(3000, () => console.log('服务器已就绪'))

这个程序永远不会结束。 如果调用 process.exit(),则任何当前等待中或运行中的请求都会被中止。 这不太友好。在这种情况下,需要向该命令发送 SIGTERM 信号,并使用进程的信号处理程序进行处理:

const express = require('express')

const app = express()

app.get('/', (req, res) => {
  res.send('你好')
})

const server = app.listen(3000, () => console.log('服务器已就绪'))

process.on('SIGTERM', () => {
  server.close(() => {
    console.log('进程已终止')
  })
})

信号是一个 POSIX 内部通信系统:发送通知给进程,以告知其发生的事件。

SIGKILL 是告诉进程要立即终止的信号,理想情况下,其行为类似于 process.exit()

SIGTERM 是告诉进程要正常终止的信号。它是从进程管理者(如 upstartsupervisord)等发出的信号。

可以从程序内部另一个函数中发送此信号:

process.kill(process.pid, 'SIGTERM')

七.nodejs读取环境变量

process.env.NODE_ENV // "development"

 八.nodejs输出信息到控制台

const x = 'x'
const y = 'y'
console.log(x, y)

输出打印消息.

console.clear() 会清除控制台(其行为可能取决于所使用的控制台)。

console.count() 是一个便利的方法。

console.trace()打印函数的调用堆栈踪迹很有用

console.error 会打印到 stderr 流。

可以使用 console.time()console.timeEnd() 轻松地计算函数运行所需的时间

九.nodejs导入模块

Node.js 具有内置的模块系统。

Node.js 文件可以导入其他 Node.js 文件公开的功能。

const library = require('./library')

可以导入存在于当前文件夹中的 library.js 文件中公开的功能。

在此文件中,必须先公开功能,然后其他文件才能将其导入。

默认情况下,文件中定义的任何其他对象或变量都是私有的,不会公开给外界。

这就是 module 系统提供的 module.exports API 可以做的事。

当将对象或函数赋值为新的 exports 属性时,这就是要被公开的内容,因此,可以将其导入应用程序的其他部分或其他应用程序中。

(1)将对象赋值给 module.exports(这是模块系统提供的对象),这会使文件只导出该对象:

const car = {
  brand: 'Ford',
  model: 'Fiesta'
}

module.exports = car

//在另一个文件中

const car = require('./car')

(2)将要导出的对象添加为 exports 的属性。这种方式可以导出多个对象、函数或数据:

const car = {
  brand: 'Ford',
  model: 'Fiesta'
}

exports.car = car

 (3)直接导出

exports.car = {
  brand: 'Ford',
  model: 'Fiesta'
}

十. 导入使用

const items = require('./items')
items.car
const car = require('./items').car
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值