Node.js笔记分享

Node.js

一、初识Node.js

与浏览器为Js提供前端运行环境相对应,Node.js是基于V8引擎的Js运行环境,为Js做后端开发提供了可能。

Node.js的作用

基于Express框架(http://www.expressjs.com.cn/),可以快速构建Web 应用

基于Electron框架(https://electronjs.org/),可以构建跨平台的桌面应用

基于restify框架(http://restify.com/) ,可以快速构建API接口项目

读写和操作数据库、创建实用的命令行工具辅助前端开发、etc…

Node.js的学习路线

JavaScript 基础语法 + Node.js 内置 API 模块(fs、path、http等)+ 第三方 API 模块(express、mysql 等)

终端命令

node -v # 查看版本号
node a.js # 执行js文件
# 使用nodemon执行,可监听项目文件变动,方便开发
nodemon a.js 

二、Node.js 内置 API 模块

fs文件系统模块

fs.readFile() 方法,用来读取指定文件中的内容

fs.writeFile() 方法,用来向指定的文件中写入内容

path 路径模块

path.join() 方法,用来将多个路径片段拼接成一个完整的路径字符串

path.basename() 方法,用来从路径字符串中,将文件名解析出来

path.extname() 方法,可以获取路径中的扩展名部分

http 模块

服务器和普通电脑的区别在于,服务器上安装了 web 服务器软件,例如:IIS、Apache 等。

在Node.js中,我们可以借助内置的http模块,简单几行代码,就能手写一个服务器软件。

const http = require('http')
const server = http.createServer() // 创建web服务器实例
server.on('request', (req, res) => {}) // 监听网络请求
server.listen(80, () => {})// 绑定80端口启动服务器实例

三、模块化

把复杂问题自顶向下划分成若干模块的过程,对系统来说,模块是可组合、分解、更换的单元。

编程中的模块化

编程领域中的模块化,就是遵守固定的规则,把一个大文件拆成独立并互相依赖的多个小模块。

好处:提高复用性,可维护性,实现按需加载。

Node.js中的模块的分类

内置模块,自定义模块,第三方模块(包)

模块的暴露与引用

模块的作用域为当前模块,如需被外界引用,则需先暴露相应的成员。

// 暴露
module.exports  // 或 exports
// 引用
require()

注:默认module.exports和exports两个引用指向同一对象,但可分别修改,最终以前者为准。

Node.js 中的模块化规范

Node.js 遵循了 CommonJS 模块化规范。

四、npm与包

查询地址: https://www.npmjs.com/

下载地址:registry.npmjs.org

终端命令

npm -v
npm install 包名  # npm i 包名
npm install 包名@2.22.2 # 指定版本号下载
npm install 
npm uninstall
npm i 包名 -d # 记录到devDependencies节点
npm i 包名 -g # 全局安装指定包
npm uninstall 包名 -g # 全局卸载

包会下载到node_modules 文件夹,并记录在package-lock.json 配置文件。

切换镜像源

# npm命令切换
npm config get registry
npm config set registry=[url] 
# 使用nrm工具切换
npm i nrm -g
nrm ls
nrm use taobao

包管理配置文件

// 作用:在执行命令所在的目录中,快速生成package.json文件
npm init -y

开发和发布包

npm login
npm publish # 上传,包名根目录下运行
npm unpublish 包名 --force # 删除

模块的加载机制

内置模块:优先级最高,主要体现在与其他模块同名的情况。

自定义模块:确切文件名>补全.js>补全.json>补全.node。

第三方模块:从js同目录下开始依次向上一级目录查找node_modules。

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

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

相关文章

【并发编程篇】线程安全问题_—_ConcurrentHashMap

文章目录 🍔情景引入🌹报错了,解决方案 🍔情景引入 我们运行下面的代码 package org.example.unsafe;import java.util.HashMap; import java.util.Map; import java.util.UUID;public class MapTest {public static void main(…

Kerberos安装教程与命令详解(超详细)

文章目录 前言一、安装准备1. 搭建集群2. 软件包介绍 二、使用shell脚本一键安装1. 复制脚本2. 增加执行权限3. 执行脚本 三、kdb5_util命令1. 简介2. 可用选项和命令的解释3. 常见命令及其说明4. 示例用法 四、kadmin命令1. 简介2. 可用选项和命令的解释3. 常见命令及其说明4.…

SQL最消耗性能查询错误用法示例

查询性能的消耗主要取决于查询的复杂度、表的大小以及使用的索引等因素。以下是一些查询中常见的错误用法示例,它们可能导致性能问题: 全表扫描: 错误用法示例: SELECT * FROM your_table;这种查询会检索表中的所有行,…

芋道视频199 - 工作流 - 关系图 - ruoyi-vue-pro

一 新建表单 数据库:bpm_form。实体类:BpmFormDO.java: 二 流程模型、流程部署、流程定义 1 第1步:创建流程模型 页面操作:实体类:Model.java。数据库:ACT_RE_MODEL 流程模板信息表&#xf…

Python基础进阶:9个易错知识点

你好,我是kelly。 kelly根据自己平时工作,总结9个易错知识点,希望对大家有用。 知识点1:is 和 is比较是两个变量地址是否相同,比较是两个变量的值(内容)是否相同。 示例: In [92…

2分钟明白什么是SCADA?

SCADA——数据采集和监控系统的英文缩写,国内流行的叫法是,监控组态软件,是生产控制的核心,是位于控制设备之上,侧重于管理的纯软件,在ERP/MES/PCS架构中起承上启下的作用。SCADA负责控制或监控整个工厂&am…

HACCP认证需要什么条件

HACCP(危害分析与关键控制点)认证是食品安全管理体系的一种,它旨在通过预防措施来保障食品的安全。企业若要获得HACCP认证,通常需要满足以下条件: 1. 合规性要求:企业需要提供营业执照、组织机构代码证、QS…

uniapp路由

1、路由登记 uni-app页面路由为框架统一管理,开发者需要在pages.json里配置每个路由页面的路径及页面样式。 类似小程序在 app.json 中配置页面路由一样。 所以 uni-app 的路由用法与 Vue Router 不同,如仍希望采用 Vue Router 方式管理路由,…

C++虚函数和纯函数

一、虚函数和纯函数定义 在C++中,虚函数和纯虚函数是面向对象编程中的重要概念。它们用于实现多态性,即在运行时选择调用哪个函数。 1. 虚函数(Virtual Function): 虚函数是在基类中使用 virtual 关键字声明的函数,它允许在派生类中进行重写。当通过基类指针或引用调用…

九州金榜|教育孩子小技巧--给孩子讲故事

百年大计,教育为本。对于孩童来讲,故事无疑是最好的教育方法,通过一个个引人入胜的小故事将其中蕴含的道理、经验、哲理、观念传递给孩子。 可以这么说,故事对于儿童获取词汇储备、洞察能力、处事方法、情商和智力的提升都有着极为…

Unicode字符以及UTF-8

前提基础知识 计算机内部,所有信息最终都是一个二进制值。每一个二进制位(bit)有0和1两种状态,因此八个二进制位就可以组合出256种状态,这被称为一个字节(byte)。也就是说,一个字节一…

Go 语言如何读取 excel 测试数据,简单易学

📢专注于分享软件测试干货内容,欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!📢交流讨论:欢迎加入我们一起学习!📢资源分享:耗时200小时精选的「软件测试」资…

算法基础day2

前缀和 #include <iostream> using namespace std; const int N100010; int n,m; int a[N],s[N]; int main() {scanf("%d%d",&n,&m);for(int i1;i<n;i) scanf("%d",&a[i]);for(int i1;i<n;i) s[i]s[i-1]a[i];while(m--){int l,r;s…

Gooxi亮相2023中国数据与存储峰会展示最新存储解决方案

今日&#xff0c;以“数智创新&#xff0c;AI未来”为主题的2023 中国数据与存储峰会在北京顺利举行&#xff0c;Gooxi受邀参与并展示了最新存储服务器产品&#xff0c;搭配最新处理器平台&#xff0c;能够广泛应用在人工智能、数据分析、云端计算、数据存储和高性能计算等领域…

兔子目标检测数据集VOC格式3900张

兔子是一类可爱的哺乳动物&#xff0c;拥有圆润的脸庞和长长的耳朵&#xff0c;身体轻盈柔软。它们通常是以温和和友善的形象出现在人们的视野中&#xff0c;因此常常成为童话故事和卡通形象中的角色。 兔子是草食性动物&#xff0c;主要以各种草本植物为食&#xff0c;包括草…

python查找mongo中符合条件的json记录

一、需求&#xff1a; 之前有次需要临时查找mongo中存储的json串&#xff0c;符合特定条件的记录&#xff1b; 举个例子&#xff0c;mongo中记录如下图&#xff1a; 其中每条存储的数据大概为&#xff1a; [{"createUser": "Zxtech","paramName&qu…

NFC与ZigBee技术在智慧农业物联网监测系统中的应用

近年来&#xff0c;我国农业物联网技术飞速发展&#xff0c;基于物联网技术的智能农业监测系统有望得到较大规模的推广应用。但传统的物联网农业监测系统其网络结构层次单一&#xff0c;多采用基于有线或无线结构的节点-上位机数据采集模式&#xff0c;节点数据访问模式缺乏灵活…

融资融券业务

基本业务名词 标的证券&#xff1a;允许融资买入的证券、融券卖出的证券。业务系统中分别设立融资标的证券池和融券标的证券池。标的证券在交易所定期公布的范围内由券商进一步选择。 担保证券&#xff1a;监管部门&#xff08;交易所等&#xff09;公布的有资格作为融资融券…

【Leetcode 39】组合总和 —— 回溯法

39. 组合总和 给你一个无重复元素的整数数组candidates和一个目标整数target &#xff0c;找出candidates中可以使数字和为目标数target的 所有不同组合&#xff0c;并以列表形式返回。你可以按**任意顺序 **返回这些组合。 candidates中的同一个数字可以 无限制重复被选取 。…

『CV学习笔记』NVIDIA GPU监控工具nvidia-smi/gpustat/nvtop/nvitop

NVIDIA GPU监控工具nvidia-smi/gpustat/nvtop/nvitop 文章目录 一. nvidia-smi(最有名,没有之一🤚🤚)二. gpustat(彩色并简约的显示🤚🤚🤚🤚)三. nvtop(完整的信息,需root权限apt安装,不是非常方便🤚🤚🤚)1. 交互式设置窗口2. 保存首选项3. 特定发行版的安…