万字肝完nodejs入门教程,详解入口,建议收藏(更新中)

nodejs入门教程

1.前言

首先说明,本篇文章是对nodejs官网入门教程的一份总结。同学们学习时强烈建议先前往nodejs官网入门教程学习,那里几乎有你们需要的一切。本篇文章只对相对重要的知识点进行记录和编码测试,便于未来对nodejs项目进行系统性的学习。

2.入门教程

2.1 命令行运行node.js脚本

如果主Node.js应用程序文件是 app.js,则可以通过键入以下命令调用它:

node app.js

在这里插入图片描述

2.2 退出node.js程序

1、命令行使用ctrl+c可以停止node.js程序
2、非正常退出(不推荐):process 核心模块提供了process.exit()方法,以编程的方式强制停止程序。这意味着任何待处理的回调、仍在发送中的任何网络请求、任何文件系统访问、或正在写入 stdout 或 stderr 的进程,所有这些都会被立即非正常地终止。可以传入一个整数,向操作系统发送退出码:

process.exitCode = 1

也可以设置 process.exitCode 属性:

process.exitCode = 1

当程序结束时,Node.js 会返回该退出码。当进程完成所有处理后,程序会正常地退出。
3、使用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('进程已终止')
  })
})


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

2.3 如何使用 Node.js REPL

注意:REPL 也被称为运行评估打印循环,是一种编程语言环境(主要是控制台窗口),它使用单个表达式作为用户输入,并在执行后将结果返回到控制台。

2.3.1 使用方式

简单点说,就是你可以简单地把控制台当成

在这里插入图片描述
REPL是交互式的,这意味着,你可以使用tab键自动补全预定义的变量。

尝试输入 JavaScript 类或者全局对象的名称,例如 Number,添加一个点号并按下 tab。REPL 会打印可以在该类上访问的所有属性和方法:
在这里插入图片描述

2.3.2 点命令

.help

.help :显示点命令的帮助文档
在这里插入图片描述

.editor

.editor:启用编辑器模式,可以轻松地编写多行 JavaScript 代码。当处于此模式时,按下 Ctrl+D 可以运行编写的代码。
在这里插入图片描述
并且通过实验,我们可以得知,REPL对之前声明的变量是有记忆的,并且不允许重复声明。
在这里插入图片描述
如果需要一个全新的环境,可以使用Ctrl+D退出REPL后再node重新进入:
在这里插入图片描述

.break

.break:当输入多行的表达式时,输入 .break 命令可以中止进一步的输入。相当于按下 Ctrl+C。
当输入函数,比如:

[1, 2, 3].forEach(num => {

或者

function test(){

REPL会了解当前函数未完成,自动进入多行编辑模式,…表示仍在编辑中,也可以当成tab缩进。

在这里插入图片描述

.save

.save:将在 REPL 会话中输入的所有内容保存到文件(需指定文件名)。

在这里插入图片描述

.load

.load: 加载 JavaScript 文件(需要指定文件名)。
在这里插入图片描述

.exit

.exit:退出 REPL(相当于按下两次 ctrl-C)。
在这里插入图片描述

.clear

.clear:将 REPL 上下文重置为空对象,并清除当前正在输入的任何多行的表达式。
在Node.js的模块文件中,start方法返回被开启的REPL运行环境,可以为REPL运行环境指定一个上下文对象(context),可以将该上下文对象保存的变量作为REPL运行环境中的全局变量来进行使用。可以看到,使用.clear命令后,上下文对象保存的变量都变成了not defined(未声明)。
在这里插入图片描述
不过,值得注意的是,当未指定特定的js文件repl作为上下文,而是直接使用命令node进入REPL的话,.clear命令并不会生效
在这里插入图片描述

2.4 从命令行接收参数(参数可以是独立的,也可以具有键和值。)

获取参数值的方法是使用 Node.js 中内置的 process 对象,它公开了 argv 属性,该属性是一个包含所有命令行调用参数的数组。
第一个参数是 node 命令的完整路径。
第二个参数是正被执行的文件的完整路径。
所有其他的参数从第三个位置开始。
在这里插入图片描述
demo04.js测试代码:

process.argv.forEach((val, index) => {
    console.log(`${index}: ${val}`)
})

1、当不携带参数时:

node demo04.js

在这里插入图片描述

只返回node 命令的完整路径和正被执行的文件的完整路径。
2、当携带独立参数时:

node demo04.js joe

在这里插入图片描述
在这里插入图片描述
3、当携带具有键和值的参数时:

node demo04.js name=joe

在这里插入图片描述
此时需要对参数进行解析,最好的方法是使用 minimist 库,该库有助于处理参数,但是需要在每个参数名称之前使用双破折号:

console.log(process.argv.slice(2))
const args = require('minimist')(process.argv.slice(2))
console.log(args)
console.log('name:'+args['name'],'  sex:'+args['sex'])

在这里插入图片描述
话说,为什么要在在命令行接收参数呢?我的猜测是,可能程序运行的时候可以根据参数进行以何种模式运行,当然不带参数就是默认模式。

2.5 使用node.js输出到命令行

2.5.1 基础输出

Node.js 提供了 console 模块,该模块提供了大量非常有用的与命令行交互的方法。
它基本上与浏览器中的 console 对象相同。

%s 会格式化变量为字符串
%d 会格式化变量为数字
%i 会格式化变量为其整数部分
%o 会格式化变量为对象

const x = 10;
const y = 20;
console.log(x+y)

const cat = {
    species:'猫',
    name:'Tom',
    age: 3.1,
    time:0.05
}
console.log('我的%s名字叫%s,已经%i岁了,反应时间是%d秒',cat.species,cat.name,cat.age,cat.time)

console.log(Number)
console.log('%o', Number)

在这里插入图片描述

2.5.2 清空控制台

console.clear() 会清除控制台(其行为可能取决于所使用的控制台)。
在这里插入图片描述
可以看到console.clear()之前的输出语句的结果都被清空了。

2.5.3 元素计数

console.count() 是一个便利的方法。
在这里插入图片描述
可以看到,console.count()是针对整个输出语句进行计数的,只要有变化就是另一个语句。

2.5.4 打印堆栈踪迹

在某些情况下,打印函数的调用堆栈踪迹很有用,可以回答以下问题:如何到达代码的那一部分?

可以使用 console.trace() 实现:

const function2 = () => console.trace()
const function1 = () => function2()
function1()

这会打印堆栈踪迹。 如果在 Node.js REPL 中尝试此操作,则会打印以下内容:
在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值