NodeJS入门学习笔记

这篇具有很好参考价值的文章主要介绍了NodeJS入门学习笔记。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

REST API概念

REST 通过HTTP协议实现前后端数据交换的API

REST是一种软件架构模式,这种方法定义了开发软件的方式

  • 资源

    实体(文本、图片、歌曲、服务等等)URL

  • 表现层

    客户端和服务端之间传递资源的表现形式(text, HTML, XML, JSON等)

  • 状态转化

    客户端通过四种动作(GET, PUT, POST, DELETE)对服务资源操作,实现表现层状态转化

REST架构

每一个URL代表一种资源

客户端和服务端之间,传递这种资源的某种表现层

客户端通过四个HTTP动词,对服务端资源进行操作,实现“表现层状态转化”

eg.https://jsonplaceholder.typicode.com/posts/

优点:

  • API复用率高
  • 总是可用,只要有网络,可以发起HTTP请求,数据交流就不会间断

NodeJS入门学习笔记,# 语言学习记录,学习,笔记,node.js,express

NodeJS搭建服务器

Node其实是JS的服务器的运行环境,NodeJS让JS可以作为后端语言

提供了

  • JS虚拟机
  • 工具库

使得JS可以和操作系统互动(比如读写文件、新建子进程)

实现

Google V8 引擎 语言解释器 + libuv库进行系统资源调度

NPM

Node默认的包管理器,帮助下载别人写好的轮子

常见npm命令

  • npm -v

  • npm install moduleName

  • npm install moduleName -g 可以直接在命令行使用

  • npm list -g查看所有全局安装的模块

  • npm list vue 查看某个模块的版本号

  • npm -g install npm@版本号 更新npm版本

  • npm install -save moduleName 安装 写入dependencies 运行时的依赖

  • npm install -save-dev moduleName安装 写入devDependencies 开发时的依赖

    简写

    1. i = install
    2. -S = --save
    3. -D = --save-dev
    4. -g = --global

镜像设置与查看

搭建环境时npm设置成淘宝镜像

  • npm config set registry https://registry.npm.taobao.org --global
  • npm config set disturl https://npm.taobao.org/dist --global

设置当前地址(设置为默认地址)

  • npm config set registry https://registry.npmjs.org/

查看镜像的配置结果

  • npm config get registry
  • npm config get disturl

使用nrm工具切换淘宝源

  • npx nrm use taobao

切换回官方源

  • npx nrm use npm

可以使用淘宝定制的cnpm(gzip压缩支持)命令行工具代替默认的npm

npm install -g cnpm --registry=https://registry.npm.taobao.org

例如:cnpm i xxxx -S

全局对象和全局变量

Node提供了以下几个全局对象,是所有模块都可以调用的

  • global:表示Node所在的全局对象,类似浏览器的Window对象。注意,在模块文件中声明的全局变量不是全局对象的属性,因为这是该模块私有的
  • process:该对象表示Node所处的当前进程,允许开发者与该进程互动
  • console:指向Node内置的console模块,提供命令行环境中的标准输入、标准输出功能
  • _dirname:当前模块的目录路径
  • _filename:当前模块的文件名

全局函数

  • setTimeout():用于在指定毫秒之后,运行回调函数,该方法返回一个整数,代表这个新建定时器的编号
  • clearTimeout():用于终止一个setTimeout方法新建的定时器
  • setInterval():用于每隔一定毫秒调用回调函数,该方法返回一个整数,代表这个新建定时器的编号
  • clearInterval():终止一个用setInterval方法新建的定时器
  • require():用于加载模块
  • Buffer():用于操作二进制数据

模块

指别人写好的库

实例:

//hello.js
var http = require('http');

//create a server object
http.createServer(function (req, res) {
  res.write('hello world!');//write a response to the client
  res.end();//end the response
}).listen(8080);//the server object listens on port 8080

console.log('The server is running...')
  1. 首先通过require('http')引入NodeJS内置的http模块,以便使用它提供的函数和对象
  2. 使用 http.createServer()函数创建一个服务器对象,这个函数接受一个回调函数作为参数,用于处理客户端请求并生成响应
  3. 在回调函数中,使用res.write()方法向客户端发送响应内容(字符串’hello world!')
  4. 调用 res.end()方法结束响应,表示已经完成对客户端的响应(必须)
  5. .listen(8080)服务器开始监听指定端口,也就是会在8080端口接收来自客户端的请求

node hello.js 启动该脚本,服务器将会在本地8080端口上运行,每当客户端发送请求时,都会像客户端发送’hello world!'作为响应

模块化结构

  • 支持ES6模块化,但大部分包用的CommonJS规范

  • 模块和文件一一对应,加载一个模块就是加载对应的一个模块文件

  • require命令用于指定加载模块,加载时可以省略脚本文件的后缀名(只限于Node,浏览器不能解析该代码)

    //自定义模块
    //导出file.js
    //commonJS规范
    module.export{
        
    }
    //es6模块化方法
    export{
    
    }
    
    //导入
    let something = require('./file.js')
    
    //es6方法
    import {……} from "./file.js"
    
  • 模块一旦被加载以后,就会被系统缓存,如果第二次还加载该模块,则会返回缓存中的版本,模块实际只执行一次。如果希望模块执行多次,可以让模块返回一个函数,然后多次调用该函数

核心模块

  • http:提供HTTP服务器功能
  • url:解析URL
  • fs:与文件系统交互
  • querystring:解析URL的查询字符串
  • child_process:新建子进程
  • util:提供一系列实用小工具
  • path:处理文件路径
  • crypto:提供加密和解密功能,基本是对OpenSSL的包装

异步操作

Node采用V8引擎处理JS脚本,最大特点单线程,一次只能运行一个任务,导致Node大量采用异步操作,任务不是马上执行,而是插在任务队列的尾部,等到前面的任务运行完后再执行。由于这种特性,往往采用回调函数(call back)的形式进行定义,回调函数作为异步操作的第二个参数

Express Library

使用现成的包实现REST API

npm install express

设计一个API,前端可以获取后端的JSON文件文章来源地址https://www.toymoban.com/news/detail-806071.html

var express = require('express');
var app = express();

app.get('/json_data', function (req, res) {
  const data = require('./data.json');
  res.json(data);
})

const port = 8080;
app.listen(port, () => {
  console.log(`Example app listening at http://localhost:${port}`)
})

到了这里,关于NodeJS入门学习笔记的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • C语言学习记录——找数组中的鞍点

    目录 C语言中 鞍点的定义  代码的实现 思路分析图解  指一个矩阵中,即该位置上的元素在该行上最大,在该列上最小。 一个二维数组可能没有鞍点。 例如:1,2,3            4,5,6            7,8,9 该矩阵中,鞍点为3所在的位置。 即数组坐标[ 0 ] [ 2 ],在第一行第三

    2024年02月04日
    浏览(40)
  • MySQL学习记录:第四章 TCL语言

    /* TCL语言 :transaction control language 事务控制语言 事务 : 一个或一组语句组成的一个执行单元,该执行单元要么全执行,要么全不执行 事务由单独单元的一个或多个SQL语句组成,在这个单元中,每个MySQL语句是相互依赖的。而整个单独单元作为一个不可分割的整体,如果单元

    2024年02月14日
    浏览(45)
  • 第六十一天学习记录:C语言进阶:C语言预处理1

    在ANSI C的任何一种实现中,存在两个不同的环境。 第一种是翻译环境,在这个环境中源代码被转换为可执行的机器指令。第2种是执行环境,它用于实际执行代码。 翻译环境 ![在这里插入图片描述](https://img-blog.csdnimg.cn/04bd03e2cb554aa298fb6a8349722f89.png 上图截取自比特科技免费课程

    2024年02月07日
    浏览(48)
  • 第四十九天学习记录:C语言进阶:结构体

    结构体的声明 结构是一些值的集合,这些值称为成员变量。结构的每个成员可以是不同类型的变量 问:C++的new和C语言的结构体有什么异同? ChatAI答: C++中的 new 是一个运算符,用于在堆上分配动态内存,并返回指向该内存的地址。它会自动调用要分配的对象的构造函数,以

    2024年02月06日
    浏览(38)
  • C语言学习笔记——C语言结构

    C语言是一种面向过程的结构化的语言,同时具有高级语言和汇编语言的优点 所有的C语言程序经过编译和连接之后才能被计算机执行 头文件是一种特殊的文件,记录了很多可以直接引用头文件然后使用的函数,也可通过#define声明函数、变量、宏等的定义 头文件通常包含在源

    2024年02月11日
    浏览(46)
  • 第五十八天学习记录:C语言进阶:文件操作1

    在程序设计中,一般有两种文件:程序文件、数据文件 程序文件 包括源程序文件(后缀为.c),目标文件(windows环境后缀为.obj),可执行程序(windows环境后缀为.exe)。 数据文件 文件的内容不一定是程序,而是程序运行时读写的数据,比如程序运行需要从中读取数据的文件

    2024年02月07日
    浏览(42)
  • 【go语言学习笔记】05 Go 语言实战

    在做项目开发的时候,要善于借助已经有的轮子,让自己的开发更有效率,也更容易实现。 1. RESTful API 定义 RESTful API 是一套规范,它可以规范如何对服务器上的资源进行操作。和 RESTful API 和密不可分的是 HTTP Method。 1.1 HTTP Method HTTP Method最常见的就是POST和GET,其实最早在

    2024年02月13日
    浏览(46)
  • Go语言学习笔记

    注:安装教程 注:上一篇笔记 注:下一篇笔记 2.6、流程控制 2.6.1、条件语句 2.6.2、选择语句 2.6.3、循环语句 2.6.4、跳转语句 goto语句跳转到本函数内的某个标签 2.7、函数 2.7.1、函数定义 函数构成代码执行的逻辑结构。函数的基本组成为:func、函数名、参数列表、返回值

    2024年02月06日
    浏览(48)
  • 6.Go语言学习笔记-结合chatGPT辅助学习Go语言底层原理

    1、Go版本 2、汇编基础 推荐阅读:GO汇编语言简介 推荐阅读:A Quick Guide to Go\\\'s Assembler - The Go Programming Language 精简指令集 数据传输: MOV/LEA 跳转指令: CMP/TEST/JMP/JCC 栈指令: PUSH/POP 函数调用指令: CALL/RET 算术指令: ADD/SUB/MUL/DIV 逻辑指令: AND/OR/XOR/NOT 移位指令: SHL/SHR JCC有条件跳转: JE

    2024年02月04日
    浏览(41)
  • 第五十三天学习记录:C语言进阶:动态内存管理Ⅰ

    问: 栈区堆区静态区的大小是固定的吗?如果栈区满了,会向后2者借位置吗? ChatAI答: 栈区、堆区和静态区的大小通常是由操作系统或编译器预定义的,不是固定的。这些区域的大小通常受到多种因素的影响,如系统物理内存大小、进程虚拟地址空间的大小、编译器和操作

    2024年02月06日
    浏览(66)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包