【nodejs】nodejs入门核心知识(命令行使用、内置模块、node 模块化开发)

news2024/11/27 2:43:20

💻 nodejs入门核心知识(命令行使用、内置模块、node 模块化开发) 🏠专栏:JavaScript
👀个人主页:繁星学编程🍁
🧑个人简介:一个不断提高自我的平凡人🚀
🔊分享方向:目前主攻前端,其他知识也会阶段性分享🍀
👊格言:☀️没有走不通的路,只有不敢走的人!☀️
👉让我们一起进步,一起成为更好的自己!!!🎁

文章目录

  • 【nodejs】nodejs入门核心知识(命令行使用、内置模块(fs、path、url、http)、node 模块化开发)
    • 一. nodejs下载
    • 二. 认识node
      • 1. 什么是node?
      • 2. 前端JS 和 nodeJS的区别
    • 三. 命令行相关知识
      • 1. 什么是命令行?
      • 2. 怎么打开命令行窗口
      • 3. windows的 powershell 或 cmd 终端中的快捷键
      • 4. 命令行窗口的常用指令
      • 5. 利用node 环境执行一段js代码
    • 四. node 模块化开发
      • (1). CommonJS规范
      • (2). 导出
      • (3). 导入
      • (4). 模块分类
    • 五. nodejs内置模块
      • (一) 内置模块fs
        • (1) 文件读取
        • (2) 写入文件
      • (二) 内置模块path
        • (1) 组装成相对路径
        • (2) 组装成绝对路径
        • (3) 解析路径
      • (三) 内置模块url
      • (四) 内置模块http
        • 1. 创建服务
        • 2. 给当前服务配置一个端口号
        • 3. 整体创建

【nodejs】nodejs入门核心知识(命令行使用、内置模块(fs、path、url、http)、node 模块化开发)

一. nodejs下载

在了解nodejs之前,你需要先下载nodejs

nodejs官网下载

请添加图片描述

安装过程:一般都是默认安装路径,一直点下一步就行

二. 认识node

1. 什么是node?

node是基于 ChromeV8解析引擎的javascript 运行环境

2. 前端JS 和 nodeJS的区别

前端JS

  1. js被html文件引入,放在页面中,在浏览器中执行才会有bom 和 dom

    • bom 是浏览器给的

    • dom 是html给的

  2. 可以非模块化开发,也可以模块化开发

    为什么前端js可以非模块化开发?

    因为多个js文件可以共同使用同一个环境(同一个html文件)

nodeJS

  1. 在电脑操作系统中,直接运行单独的js,没有 bom dom,只剩下ECMA 语法

    由于运行在电脑系统中

    • 可以操作文件夹、文件 (I/O)
    • 可以操作 操作系统
    • 可以操作 数据库
  2. 只能模块化开发

    • nodejs是直接执行js文件,没有全局环境

    • nodejs使用 CommonJS 的模块化语法规范

nodeJS的作用

使用JavaScript的语法进行后端相关代码开发
使用CommonJS模块化开发的规范书写

三. 命令行相关知识

1. 什么是命令行?

命令行一般指命令提示符,是在操作系统中,提示进行命令输入的一种工作提示符;原来称之为“DOS”的操作方式。在不同的操作系统环境下,命令提示符各不相同;在windows环境下,命令行程序为“cmd.exe”,是一个32位的命令行程序。

2. 怎么打开命令行窗口

windows

  • 方法1

    快捷键:win + R ,输入cmd即可打开
    打开的是系统盘用户根目录

  • 方法2

    打开文件夹,在地址栏的位置输入cmd回车
    打开的是当前文件夹目录下的

windows命令行窗口

请添加图片描述

mac

  • 方法1

    直接打开终端
    打开的是系统根目录

  • 方法2

    直接文件夹拖拽到终端图标
    打开的就是当前文件夹目录下的

:由于小编的电脑的windows的所以就无法提供mac终端窗口图了😬

3. windows的 powershell 或 cmd 终端中的快捷键

快捷键功能
tab键能够快速补全路径
esc键能够快速清空当前已输入的命令
↑键可以快速定位到上一次执行的命令
cls可以清空终端

4. 命令行窗口的常用指令

作用window指令mac终端指令
查看当前目录下的内容$ dir$ ls
切换目录$ cd 文件夹名称$ cd 文件夹名称
返回上一级目录$ cd ..$ cd ..
可以清空终端$ cls$ clear

5. 利用node 环境执行一段js代码

方式1

  1. 打开命令行窗口,切换到要执行代码的存放路径
  2. 输入指令 $ node ,即可执行
  3. 退出组合键: ctrl + c

方式2

  1. 把要执行的js代码,书写在.js文件中
  2. 打开命令行,把目录切换到js文件所在的目录
  3. 输入指令 $ node 文件名
    • 直接执行js文件内的所有代码
    • 此刻,cmd窗口就是JavaScript的控制台

eg:

// test.js文件中的代码:
console.log('Hello!!')

请添加图片描述

四. node 模块化开发

模块化语法

(1). CommonJS规范

CommonJS最开始是Mozilla的工程师于2009年开始的一个项目,它的目的是让浏览器之外的JavaScript能够通过模块化的方式来开发和协作,Nodejs实现了这一规范。

规范的约定

  • CommonJS 是最早的规范。
  • CommonJS 的规范中,每个 JavaScript 文件就是一个独立的模块.
  • CommonJS 的规范中提出定义模块、调用模块、配置模块(./)的方式方法。
  • CommonJS 规范的主要适用场景是服务器端(后端)编程,所以采用同步加载模块的策略。

(2). 导出

每个js文件天生自带一个变量叫做 module ,表示当前自己的这个模块的所有信息

node 的每个文件内,天生自带一个变量叫做 exports,存储的是 module.exports 的地址

语法

  • 如果想向默认导出的对象中添加成员

    module.exports.属性 =// 或
    exports.属性 =
  • 想修改这个默认导出的内容

    module.exports =

eg:

// 导出一个数
module.exports.num = 100
// 导出一个字符串
module.exports.str = 'hello world'
// 导出一个数组
module.exports.arr = [100, 200, 300]
// 打印自己书写的模块的所有信息
console.log(module);
// 输出:
/* 
Module {
  id: '.',
  path: 'D:\\study\\nodejs',				   =>  当前这个模块(文件)在电脑上存在的位置
  exports: { num: 100, str: 'hello world', arr: [ 100, 200, 300 ] },	=>	当前的这个模块向外暴露的内容 (导出的内容)
  filename: 'D:\\study\\nodejs\\test.js',		=>	当前这个模块完整的文件名
  loaded: false,							  =>  当前这个模块 是否被加载过
  children: [],								  =>  当前这个模块所有的子模块 (导入过哪些)
  paths: [
    'D:\\study\\nodejs\\node_modules',
    'D:\\study\\node_modules',
    'D:\\node_modules'
  ]
}
*/

(3). 导入

每一个js文件天生自带一个方法叫做 require()
语法:require(‘地址’)
注意:地址书写的时候,后缀如果是.js,可以省略不写
返回值:该文件的module.exports

eg:

const fs = require('fs')

注:导入在下面讲述的nodejs内置模块中有使用,这里就不过多举例了。

(4). 模块分类

  1. 自定义模块

    自己写的js文件

  2. 内置模块

    node自带的模块,直接导入

  3. 第三方模块

    从网上下载的别人写好的模块

五. nodejs内置模块

(一) 内置模块fs

专门用来操作文件的读取和写入

要在js代码中,使用fs模块来进行文件的读取与写入前,需要使用如下的方式先导入它:

const fs = require('fs')

(1) 文件读取

语法格式:

fs.readFile(path[, options], callback)

参数解读:

  • path:文件路径
  • options:配置选项,若是字符串则指定编码格式
    • encoding:编码格式(默认:buffer,选填:utf-8)
    • flag:打开方式
  • callback:回调函数
    • err:错误信息
    • data:读取的数据,如果未指定编码格式则返回一个 Buffer
  1. 异步读取文件

    语法:fs.readFile(文件名, 格式, 回调函数)

    • 文件名(必填):要读取的文件名
    • 格式(选填):(默认:buffer,选填:utf-8)
    • 回调函数(必填):读取之后做的事情
    // 要读取的index.txt中的内容:
    /* 
      读取文件 哈哈哈哈
      121212
      pink
    */
    
    // 首先导入fs模块
    const fs = require('fs')
    
    // 使用utf-8格式的异步读取
    console.log(1);
    fs.readFile('./index.txt', 'utf-8', function (err, data) {
        if (err) {
            console.log(err)
        }
        console.log('读取文件', data)
    });
    console.log(2);
    // 输出:
    /* 
      1
      2
      读取文件 哈哈哈哈
      121212
      pink
    */
    
  2. 同步读取文件

    语法:fs.readFileSync(文件名, 格式)

    const fs = require('fs')
    console.log(1)
    const res = fs.readFileSync('./index.txt', 'utf-8')
    console.log(res)
    console.log(2)
    // 输出:
    /* 
      1
      读取文件 哈哈哈哈
      121212
      pink
      2
    */
    

(2) 写入文件

语法格式:

fs.writeFile(file, data[, options], callback)

参数解读:

  • file:文件路径
  • data:写入内容
  • options:配置选项,包含 encoding, mode, flag;若是字符串则指定编码格式
  • callback:回调函数
  1. 异步写入文件

    语法:fs.writeFile(文件名, 内容, 回调函数)

    参数详解

    • 文件名 (必填) 把内容写在哪个文件中

      => 有这个文件存在,在这个文件中写

      => 如果没有这个文件,自动创建一个文件写入

    • 内容 (必填) 要写的内容

      => 覆盖式书写

    • 回调函数 (必填) 写入完成后做的事情

    const fs = require('fs')
    console.log(1)
    fs.writeFile('./index.txt', '写入文件成功啦', function (){
        console.log('异步写入成功')
    })
    console.log(2)
    // 终端输出:
    /*
    	1
    	2
    	异步写入成功
    */
    // index.txt中文字:写入文件成功啦
    // 注:如果写入的文件中存在内容,则新写入内容直接覆盖原内容
    
  2. 同步写入

    语法:fs.writeFileSync(文件名, 内容)

    const fs = require('fs')
    console.log(1)
    const res = fs.writeFileSync('./index.txt', '写入文件成功啦')
    console.log('同步写入成功')
    console.log(2)
    // 终端输出:
    /*
    	1
    	同步写入成功
    	2
    */
    // index.txt中文字:写入文件成功啦
    // 注:如果写入的文件中存在内容,则新写入内容直接覆盖原内容
    

(二) 内置模块path

path 模块是 Node.js 官方提供的、用来处理路径的模块。它提供了一系列的方法和属性,用来满足用户对路径的处理需求。

要在js代码中,使用path模块来处理路径,需要使用如下的方式先导入它:

const path = require("path")

(1) 组装成相对路径

语法:path.join(路径1, 路径2, 路径3…)

返回值:组装好的相对路径

eg:

const path = require('path')
const p1 = path.join('a', 'b', 'c', 'c/d', 'e.html')
console.log(p1) // a\b\c\c\d\e.html

(2) 组装成绝对路径

首先什么是绝对路径? ===> 当前路径从根目录开始

// 事例1:以盘符开头的路径:  C:/user/pr...
// 事例2:有些以/开头的路径: /a/b/c.html

语法:path.resolve(路径1, 路径2, 路径3)

  • 如果第一个参数就是根目录,那么不会组装当前的绝对路径
  • 如果第一个参数不是根目录,那么会把当前的绝对路径拼接上

返回值:组装好的绝对路径

const p2 = path.resolve('c:', 'a', 'b', 'c.html')
console.log('返回值:', p2) // 返回值: c:\a\b\c.html

(3) 解析路径

语法:path.parse(路径地址)

返回值:该路径地址的所有信息

const res = path.parse('D:study//nodejs//nodejs内置模块内置模块fs//1.html')
console.log(res)
/* 
 {
    root: 'D:',     => 根目录
    dir: 'D:study//nodejs//nodejs内置模块内置模块fs/',    => 信息目录
    base: '1.html', => 当前完整文件名
    ext: '.html',   => 文件名后缀
    name: '1'       => 该文件的文件名
  }
*/

(三) 内置模块url

node自带的模块,用来操作url地址

要在js代码中,使用url模块来处理网页的url地址,需要使用如下的方式先导入它:

const url = require("url");

解析地址

语法:url.parse(地址, 是否深度解析)

  • 地址(必填):要解析的内容
  • 深度解析(选填)
    • false (默认):表示不把query转成对象
    • true:表示把query转成对象

返回值:解析好的内容

const res = url.parse(
    "http://www.zs.com:8080/a/b/c/index.html?username=tom&age=19",
    true
);

console.log(res);
/*
Url {
  protocol: 'http:',     =>	传输协议
  slashes: true,		
  auth: null,
  host: 'www.xiaohua.com:8080',  => 域名+端口
  port: '8080',		=> 端口
  hostname: 'www.xiaohua.com',	 => 域名
  hash: null,		=>	哈希	
  search: '?username=tom&age=19', 	=> 查询字符串
  query: [Object: null prototype] { username: 'tom', age: '19' }, 	=>	携带数据
  pathname: '/a/b/c/inde.html',		=> 路径名称
  path: '/a/b/c/inde.html?username=tom&age=19',		=> 路径+携带数据
  href: 'http://www.xiaohua.com:8080/a/b/c/inde.html?username=tom&age=19'	=>	完整的地址
}
*/

(四) 内置模块http

开启一个http服务

要在js代码中,使用http模块来开启一个http服务,需要使用如下的方式先导入它:

const http = require("http");

1. 创建服务

语法:http.createServer(函数)

函数每当前端有一个请求来到当前的服务器,就会触发一次这个函数

返回值:一个服务

const server = http.createServer(function(req,res){
    console.log('创建成功')
})
// req(request)表示本次请求的所有信息(请求报文中的内容)
// req.url:本次请求的地址
// req.method:本次请求的方式
// res(response)表示本次响应的相关信息,只要添加到res内,就会由服务器自动组装响应内容

2. 给当前服务配置一个端口号

语法:服务.listener(端口号, 回调函数)

server.listen(8089, () => {
    console.log('启动服务成功')
})

3. 整体创建

在创建一个服务器时需要1和2同时使用

res.end(字符串)

作用:返回给前端信息

const http = require('http')
const server = http.createServer(function (req, res) {
    // 每当有人从前端(浏览器)访问我这个服务器地址,就会触发下面这个函数
    res.end('hello')
    console.log('创建成功')
    console.log(req);
})
// 给当前服务配置一个端口号
server.listen(8089, () => {
    console.log('启动服务成功')
})

结束语

希望对您有一点点帮助,如有错误欢迎小伙伴指正。
👍点赞:您的赞赏是我前进的动力!
⭐收藏:您的支持我是创作的源泉!
✍评论:您的建议是我改进的良药!
一起加油!!!💪💪💪

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/336136.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

(1分钟突击面试) 高斯牛顿、LM、Dogleg后端优化算法

高斯牛顿法 LM法 DogLeg方法编辑切换为居中添加图片注释,不超过 140 字(可选)知识点:高斯牛顿是线搜索方法 LM方法是信赖域方法。编辑切换为居中添加图片注释,不超过 140 字(可选)这个就是JTJ是…

React设计原理—1框架原理

阅读前须知 本文是笔者学习卡颂的《React设计原理》的读书笔记,对书中有价值内容以Q&A方式进行呈现,同时结合了自己的理解🤔阅读时推荐先看问题,想想自己的答案,再和答案比对一下本文属于前端框架科普,…

68. Python的相对路径

68. Python的相对路径 文章目录68. Python的相对路径1. 知识回顾2. 什么是相对路径3. 相对路径的语法4. 查看相对路径的方法5. 写出所有txt文件的相对路径5.1 同目录5.2 上级目录6. 用相对路径读取txt文件6.1 读取旅游.txt6.2 读取旅游经费.txt6.3 读取笔记.txt和new.txt6.4 读…

微服务调用组件Feign

目录 JAVA 项目中如何实现接口调用? Httpclient Okhttp HttpURLConnection RestTemplate WebClient 什么是Feign 优势 Spring Cloud Alibaba快速整合OpenFeign 引入依赖 编写调用接口FeignClient注解 调用端在启动类上添加EnableFeignClients注解 发起调…

【送书活动】学Vue核心技术和uni-app跨平台实战项目就来看看这本书

本节目录1、书籍介绍2、推荐理由2.1 有充足的配套资源图书页内展示。2.2 PPT示例代码讲解演示2.3 内容由浅入深,渐进式学习3、参与方式1、书籍介绍 本书共分为14个章节,包括Vue.js核心基础、Vue.js高级进阶、Axios发送HTTP请求,Vuex状态管理…

牛客 面试必刷TOP101 题解(3、二叉树)

23 二叉树的前序遍历 /*** struct TreeNode {* int val;* struct TreeNode *left;* struct TreeNode *right;* TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}* };*/ #include <vector> class Solution { public:vector<int> ans;void show(TreeNode…

腾讯架构师极力推荐:Java多线程与Socket实战微服务框架

在这个技术不断更新的年代&#xff0c;跟不上时代变化的速度就会被刷掉&#xff0c;特别是咱们程序员这一群体&#xff0c;技术不断更新的同时也要同时进步&#xff0c;不然长江后浪推前浪&#xff0c;前浪… 一个程序员从一个什么都不懂的小白在学到有一定的Java基础的时候肯…

WebDAV之葫芦儿·派盘+可达漫画

可达漫画 支持WebDAV方式连接葫芦儿派盘。 这是一款专为阅读你的漫画收藏而设计的阅读器。 热爱漫画的你肯定收藏了不少各种类型的漫画,它们可能有各种各样的格式,zip,rar,cbz,cbr,epub, mobi 或 pdf,也可能只是单纯的文件夹。 可达漫画支持「流式阅读」

数据推荐 | 手势识别训练数据集

多样化&#xff0c;有按键、语音等&#xff0c;也由于整个疫情的大环境下&#xff0c;一种更方便更卫生更符合人们的非接触式交互方式—手势识别正大步发展&#xff0c;极富图像化和具备行动性的手势操作将会与人们的生活息息相关。 手势识别应用场景广泛&#xff0c;常见应用…

【微电网】并网微电网运行经济性研究(Python代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

面试官问我:说说你对JMM内存模型的理解?为什么需要JMM?

点个关注&#xff0c;必回关 随着CPU和内存的发展速度差异的问题&#xff0c;导致CPU的速度远快于内存&#xff0c;所以现在的CPU加入了高速 缓存&#xff0c;高速缓存一般可以分为L1、L2、L3三级缓存。基于上面的例子我们知道了这导致了缓存一致 性的问题&#xff0c;所以加入…

字符串常量池

1.创建对象的思考下面两种创建字符串的方式一样吗&#xff1f;public static void main(String[] args) {//两者一样吗String s1 "hello";String s2 "hello";String s3 new String("hello");String s4 new String("hello");System…

11 Advanced CNN

文章目录GoogLeNetInception Module1x1 Conv计算效果代码实现总结ResNet (残差网络)问题引入梯度消失与传统神经网络的比较代码实现课程来源&#xff1a; 链接对于前篇中所提到问题&#xff0c;设计出的是一种类似于LeNet5的线性结构&#xff0c;而对于大多数问题&#xff0c;简…

postgresql 数据库小版本更新

postgresql 数据库小版本更新 记录一次pg小版本更新 文章目录postgresql 数据库小版本更新前言一.下载最新的pg版本 pg11&#xff08;11.18&#xff09;二 pg11.5 升级 pg11.18过程1. 查看当前数据库版本&#xff1a;2. 关闭pg11.5数据库3. 安装pg11.184.修改 配置文件5. 重新…

【yolov5】yolov5训练自己的数据集全流程----包含本人设计的快速数据处理脚本

关于yolo应用时能用到的脚本集合&#xff0c;推荐收藏&#xff1a; https://chenlinwei.blog.csdn.net/article/details/127299428 1. 工程化快速yolo训练流程指定版&#xff08;无讲解&#xff09; 1.1 抽样数据集xml转txt输出量化分析 python make_dataset.pymake_dataset…

Little Fighter:旺角——NFT 系列来袭!

《小朋友齐打交 2 (LF2) 》是一款流行的格斗游戏&#xff0c;由 Marti Wong 和 Starsky Wong 于 1999 年创作。这是一款非常容易上瘾的游戏&#xff0c;具有多种游戏模式、横向卷轴格斗系统以及 24 个具有复杂动作和连击的不同角色。这款游戏在世界范围内非常受欢迎&#xff0c…

Debain安装命令

目录 一、安装sudo命令 二、安装jdk8 三、更换软件源 四、Debian 安装 yum 五、安装zip、unzip、curl、lrzsz、NUMA 六、安装Maven 五、问题 一、安装sudo命令 1&#xff09;执行sudo命令&#xff0c;提示 -bash: sudo: command not found的解决方法 apt-get install s…

图像分割方法与问题思考

前言图像分割就是预测图像中每一个像素所属的类别或者物体。图像分割有两个子问题&#xff0c;一个是只预测类别层面的分割&#xff0c;对每个像素标出一个位置。第二个是区分不同物体的个体。应用场景&#xff0c;比如自动驾驶&#xff0c;3D 地图重建&#xff0c;美化图片&am…

Docker-compose 容器集群的快速编排

目录 一、Docker-compose 简介 二、compose 部署 2.1、Docker Compose 环境安装 三、YAML 文件格式及编写注意事项 四、Docker Compose配置常用字段 五、Docker compose 常用命令 六、案例&#xff1a;编写Docker Compose搭建lnmp论坛 6.1、配置nginx 6.2、配置mysql …

Linux查看JVM FULL GC频率

查看系统的full gc频率&#xff0c;可以使用jstack命令一、采用top命令定位进程登录服务器&#xff0c;执行top命令&#xff0c;查看CPU占用情况&#xff0c;找到进程的pid二、使用jstack命令统计垃圾回收jstat -gc pid 5000即会每5秒一次显示进程号为pid的java进程的GC情况以上…