十分钟带你入门Node.js 开发

在这里插入图片描述

概览

Node.js是一个免费、开源、跨平台的Javascript运行环境,它可以让我们创建Web服务器、web应用、命令行工具以及脚本开发等。Node.js的出现极大地推动了Javascript的发展,使它不仅仅是一种只能局限于浏览器中运行的Web脚本语言。作为当前大前端时代中的web开发人员,我们由必要去学习一下Node.js,本文也从零开始讲解Node.js的安装以及常见用法,目的是引导初学者特别是零基础的读者更快地上手Node.js开发。

安装Node.js

  1. Windows用户
winget install Schniz.fnm

fnm use --install-if-missing 20
  1. Linux或MacOS用户,使用nvm(Node Version Manager)安装
jagitch@c8021a3112cf:~$ curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash

=> Downloading nvm as script to '/home/jagitch/.nvm'

=> Appending nvm source string to /home/jagitch/.profile
=> bash_completion source string already in /home/jagitch/.profile
=> Close and reopen your terminal to start using nvm or run the following to use it now:

export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"  # This loads nvm

jagitch@c8021a3112cf:~$ source /home/jagitch/.profile

jagitch@c8021a3112cf:~$ nvm install 20
Downloading and installing node v20.14.0...
Downloading https://nodejs.org/dist/v20.14.0/node-v20.14.0-linux-x64.tar.gz...
######################################################################### 100.0%
Computing checksum with sha256sum
Checksums matched!
Now using node v20.14.0 (npm v10.7.0)
Creating default alias: default -> 20 (-> v20.14.0)

jagitch@c8021a3112cf:~$ node -v
v20.14.0

jagitch@c8021a3112cf:~$ npm -v
10.7.0
  1. jagitch@c8021a3112cf:~$后面才是命令, 其他行都是命令的输出
  1. 第二条命令是source /home/jagitch/.profile,作用是令nvm可以使用,否则是找不到nvm命令的,除非重新打开一个终端,source命令后面的路径是=> Appending nvm source string to /home/jagitch/.profile这行安装日志标明的。
  1. 如果上述方式因为网络问题安装不了,可以去Node.js官网下载二进制安装包进行安装https://nodejs.org/en/download/prebuilt-installer

NodeJS第一个程序Hello World

使用REPL运行Javascript

Javascript和Python一样,都是一门解释型的语言,因此Node.js给Javascript提供了一个REPL运行环境,我们可以直接使用node命令进入REPL,然后就可以运行Javascript语句了。

jagitch@c8021a3112cf:~$ node
Welcome to Node.js v20.14.0.
Type ".help" for more information.
> console.log("Hello World")
Hello World
undefined
> a = 1 + 2
3
> .exit
jagitch@c8021a3112cf:~$ 
使用文件运行Javascript
jagitch@c8021a3112cf:~$ cat > main.js <<'EOF'
console.log("Hello World")
EOF
jagitch@c8021a3112cf:~$ cat main.js
console.log("Hello World")
jagitch@c8021a3112cf:~$ node main.js
Hello World
jagitch@c8021a3112cf:~$ 

注意,cat这条命令是一条多行命令,到EOF为止,作用是向main.js输入console.log("Hello World")。我们可以使用node后接js文件去运行Javasript的源代码文件。

Node.js的包管理工具npm

现在的Node.js社区异常的火爆,npmjs这个web平台集结了众多开源贡献者开发的很多使用的Javascript包,我们可以直接使用npm来安装这些包,就可以快速在自己的项目中使用它,极大地提高了我们的开发效率。 我们可以去npm的官网https://www.npmjs.com查找符合我们条件的包,例如我们需要进行日期格式化,如果自己写一个相关的函数,既费时也增加了一定的后期维护工作,这时我们就可以使用npm去找合适的开源包直接使用即可,避免非业务相关的基础模块重复造轮子。下面是具体步骤

  1. 打开npm官网,搜索date

在这里插入图片描述

  1. 可以看到,我们搜索到了很多与日相关的Javascript开源包,我们一般找排名考前的,然后评估它是否满足我们的需求,可以进去看他们的下载数量判断流行程度,使用人数越多,就更稳定,因为经过了更多人的使用测试反馈,使用人数越多的包的作者的创作力度也更大;接着判断它最近的更新日期,如果很久不更新的可能会导致它的功能过时;接着我们要看它的官网文档,是否能满足我们的需求,这是最重要的一点。

在这里插入图片描述

  1. 结合上面介绍的技巧,最终我选择了搜索排名第二的 date-fns包,它的周下载量达到了惊人的1884 5853次,千万次的周下载量足以为它的作者竖起一个大大的👍。它的文档也满足我们的要求,如
import { compareAsc, format } from "date-fns";

format(new Date(2014, 1, 11), "yyyy-MM-dd");
//=> '2014-02-11'

const dates = [
  new Date(1995, 6, 2),
  new Date(1987, 1, 11),
  new Date(1989, 6, 10),
];
dates.sort(compareAsc);
//=> [
//   Wed Feb 11 1987 00:00:00,
//   Mon Jul 10 1989 00:00:00,
//   Sun Jul 02 1995 00:00:00
// ]
  1. 确定好包后,使用npm安装date-fns
npm install date-fns
  1. 好了,Node.js的包管理工具npm就介绍到这里了,如还有问题的,欢迎评论区留言。

一个完整的例子

接下来,我将使用date-fns来开发一个程序来演示Node.js项目搭建于开发,该程序计算女朋友的生日还有多少天

  1. 创建一个目录作为项目目录,管理项目所有文件(源代码文件、文档等)
jagitch@c8021a3112cf:~$ mkdir birthday && cd birthday
  1. 使用npm安装date-fns
jagitch@c8021a3112cf:birthday$ npm install date-fns

jagitch@c8021a3112cf:birthday$ ls
node_modules  package-lock.json  package.json

执行npm install date-fns命令后,会在当前目录创建package.json和package-lock.json文件以及node_modules文件夹,我们安装的包都写入了配置文件package.json中,date-fns包安装在node_modules文件夹中。

  1. 创建main.js,输入以下代码
const { differenceInCalendarDays: diffDays, parse } = require("date-fns");
const readline = require("readline")

const rl = readline.createInterface({
    input: process.stdin,
    output: process.stdout
})

function calBirthday() {
    rl.question("请输入你女朋友的生日:", (birthday) => {
        year = new Date().getFullYear()
        var answer = ""
        const days = diffDays(
            parse(year + "-" + birthday, "yyyy-M-d", new Date()),
            new Date()
        )

        if (days > 0) {
            answer = `你女朋友的生日还有${days}天,千万要记住哦!`
        } else if (days == 0) {
            answer = `今天就是你女朋友的生日,赶紧去买束花吧!`
        } else if (days < 0) {
            const days2 = diffDays(
                parse((year + 1) + "-" + birthday, "yyyy-M-d", new Date()),
                new Date()
            )
            answer = `糟糕,今年你错过了你女朋友的生日,已经错过${(-days)}天了,下一个生日还有${days2}`
        } else {
            answer = "请输入正确的生日(如05-20)"
            console.log(answer)
            calBirthday()
            return
        }
        console.log(answer)
        rl.close()
    });
}
calBirthday()
  1. 运行程序
jagitch@c8021a3112cf:birthday$ node main.js
请输入你女朋友的生日:5-32
请输入正确的生日(如05-20)
请输入你女朋友的生日:15-23
请输入正确的生日(如05-20)
请输入你女朋友的生日:hello
请输入正确的生日(如05-20)
请输入你女朋友的生日:5-28
糟糕,今年你错过了你女朋友的生日,已经错过5天了,下一个生日还有360天

jagitch@c8021a3112cf:birthday$ node main.js
请输入你女朋友的生日:6-2
今天就是你女朋友的生日,赶紧去买束花吧!

jagitch@c8021a3112cf:birthday$ node main.js
请输入你女朋友的生日:10-20
你女朋友的生日还有140天,千万要记住哦!
  1. 从运行结果可以看出,date-fns包帮我们实现了日期正确性验证,例如5月32日它会识别出来,并返回一个非数值类型的值,如果这些功能让我们自己去实现的话代码量就不只有这么多了,要浪费很多精力去造轮子,而且还不一定能造得这么好。

总结

本文详细的介绍了Node.js的安装与使用以及如何使用Node.js的包管理工具,最后使用一个计算生日还有多久的js实用程序结束本文。有很多初学者分不清Node.js和js的区别,其实只要记住一句话就可以了,js是一种编程语言,Node.js是js的运行环境就足够了,题外话,还有一个EMCAScript,它是Javascript语言的一个语言规范。

推荐阅读

1. 十分钟带你入门mariadb数据库开发

2. 十分钟带你入门PostgreSQL数据库开发

3. 十分钟带你入门API接口调试神器Postman

4. 使用树梅派搭建Golang、Python、NodeJs的开发服务器

  • 13
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

gopyer

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值