对于文件处理的四个操作 增删改查 简称 curd(create-update-read-del) 需要使用到的模块叫File System 简称fs 是nodejs 自带的一个库 const fs=require...('fs'); 1、使用 fs.mkdir 创建目录css image.png 2、fs.readdir 读取当前目录下的文件node02 同步读取 异步读取 同步读取时候 用try...catch 处理报错 异步 直接用回调函数中的参数处理。...image.png 3、fs.rename 重命名html 下的index为base image.png 4、 fs.unlink 删除文件t.txt image.png
一个网址url分段解析如图 image.png 主要是对nodejs中的url模块 在拿到url的时候 对url的一种解析操作 例如 const url = require('url'); let
首先需要引入fs模块 const fs = require('fs'); 1.fs.stat 检测是文件还是目录 fs.stat('.
Nodejs的OS模块 Node.js os 模块提供了一些基本的系统操作函数。...我们可以通过以下方式引入该模块: var os = require("os") 序号 方法 描述 1 os.tmpdir() 返回操作系统的默认临时文件夹。...2 os.endianness() 返回 CPU 的字节序,可能的是 “BE” 或 “LE”。 3 os.hostname() 返回操作系统的主机名。...代码示例 // 读取系统的cpu的信息 const os = require('os') // os.cpus() // 返回一个对象数组,包含所安装的每个 CPU/内核的信息:型号、速度(单位 MHz...// 在 POSIX 上是 \n // 在Windows上是 \r\n console.log('操作系统行末标志:' + os.EOL); 我在自己的Windows10系统下VSCode中的运行结果如下图所示
TypeScript中定义类 TypeScript中定义类使用class关键字,关键字后紧跟类名。类描述了构建对象共同的属性和方法。...并在字符串中使用${}进行属性的使用。 类中的属性和方法也可以使用public和private等修饰符进行对属性和方法的访问控制。...TypeScript中类的继承 继承是指子类继承父类的特征和行为(属性和方法),使得子类具有父类相同的特征和行为。TypeScript中使用extends关键字完成对类的继承。...中的模块 项目中可以将代码拆分为多个文件,多个文件可以互相加载,并通过export和import关键字完成模块功能的交换(从一个模块调用另外一个模块的函数)。.../Mail'; //使用代码文件1中的属性。 let mail = new Mail('邮箱标题','邮箱内容'); mail.content;
nodejs中,模块的概念很重要。所有功能都是基于模块划分的。每个模块都是JavaScript脚本,核心模块中主要是由js写成,部分是由C/C++编写,内建模块多是由C/C++编写。...这些模块的调用遵循CommonJS规范。 使用require()加载模块文件,参数值是字符串,如非nodejs自有模块,需要指定模块文件的完整路径及文件名。可以使用相对路径./或绝对路径/。...通常在模块内部定义的本地就是、函数或对象只能在该模块内部访问,但当需要从模块外部引用这些变量、函数或对象时,需要用到代表当前模块文件的module对象的exports属性,这个module.exports...换句话说,加载某个模块,其实就是加载该模块的module.exports属性。弄明白这个,就可以将需要被在模块外引用的变量、函数和对象放在module.exports属性的值中。...,引用时需要指定文件路径,如果不想指定文件路径,而直接引用文件名,如nodejs核心模块引用那样require( "http" ),则需要将模块文件放到node_modules目录下。
一、模块 TypeScript 与 ECMAScript 2015 一样,任何包含顶级 import 或者 export 的文件都被当成一个模块 相反地,如果一个文件不带有顶级的import或者export...提示重复声明a变量,但是所处的空间是全局的 如果需要解决这个问题,则通过import或者export引入模块系统即可,如下: const a = 10; export default a 在typescript...,它们不会与任何已有的标识符发生冲突,因为已有的定义都处于其他名字空间中 TypeScript 中命名空间使用 namespace 来定义,语法格式如下: namespace SomeNameSpaceName...但就像其它的全局命名空间污染一样,它很难去识别组件之间的依赖关系,尤其是在大型的应用中 像命名空间一样,模块可以包含代码和声明。...不同的是模块可以声明它的依赖 在正常的TS项目开发过程中并不建议用命名空间,但通常在通过 d.ts 文件标记 js 库类型的时候使用命名空间,主要作用是给编译器编写代码的时候参考使用 参考文献
前言path 模块是 nodejs 中用于处理文件/目录路径的一个内置模块,可以看作是一个工具箱,提供诸多方法供我们使用,当然都是和路径处理有关的。...同时在前端开发中 path 模块出现的频率也是比较高的,比如配置 webpack 的时候等。本文是对该模块中一些常用的方法进行介绍,走,一起学习下吧。...需要注意下,nodejs 中所有的模块(内置,自定义)都需要使用 requier 进行导入,一般导入位置在文件顶部。...dirname,filename__dirname:可以看作是 nodejs 中的全局变量,它始终表示当前执行文件所在目录的完整目录名(绝对路径)__filename:可以看作是 nodejs 中的全局变量...结语关于nodejs path 模块,我们今天就说到这里了,虽然 api 不是很多,但是 path 模块在前端的使用频率还是非常高的,所以觉得很值得学习了解一下的。
基础 何为心跳 顾名思义, 所谓 心跳, 即在 TCP 长连接中, 客户端和服务器之间定期发送的一种特殊的数据包, 通知对方自己还在线, 以确保 TCP 连接的有效性....为什么需要心跳 因为网络的不可靠性, 有可能在 TCP 保持长连接的过程中, 由于某些突发情况, 例如网线被拔出, 突然掉电等, 会造成服务器和客户端的连接中断....虽然使用 TCP 层面的 keepalive 机制比自定义的应用层心跳机制节省流量, 但是基于上面的几点缺点, 一般的实践中, 人们大多数都是选择在应用层上实现自定义的心跳....既然如此, 那么我们就来大致看看在在 Netty 中是怎么实现心跳的吧....使用 Netty 实现心跳 上面我们提到了, 在 Netty 中, 实现心跳机制的关键是 IdleStateHandler, 那么这个 Handler 如何使用呢?
张培跃 ID:laozhangsishu 不止于前端 关注 因为在node当中的大部分功能模块都依赖了events,所以events模块是Nodejs当中非常重要的模块之一。...//引入events模块 const EventEmitter = require("events"); //myEmitter继承EventEmitter类 class myEmitter extends...//引入events模块 const EventEmitter = require("events"); //myEmitter继承EventEmitter类 class myEmitter extends...//引入events模块 const EventEmitter = require("events"); //myEmitter继承EventEmitter类 class myEmitter extends...没错它的作用就是当你多次触发emit时,只会执行一次。也就是当你执行一次事件后将会从对应关系中移除掉。
可以从官方网站(https://nodejs.org/ ↗)下载并安装最新版本的 Node.js。...可以在一个文件中编写多个 TypeScript 文件吗? 在 TypeScript 中,一个文件通常对应一个模块。 每个模块可以包含一个或多个相关的 TypeScript 类、函数、接口等定义。...每个模块应该有自己的文件,并且文件名应与模块名相匹配(使用相同的基础名称,但使用不同的扩展名)。...在一个文件中编写多个独立的 TypeScript 文件是不被推荐的做法,也不符合通常的模块化设计原则。 例如,假设有两个 TypeScript 文件:file1.ts 和 file2.ts。...应该将它们分别保存在两个独立的文件中。过在其他文件中使用 import 或 export 关键字来实现文件之间的模块化引用和导出~~~
在 TS 中这两种模块化方案的混用,往往会出现一些意想不到的问题。...究其原因,React 是以 commonJS 的规范导出的,而 import React from "react" 这种写法会去找 React 模块中的 exports.default,而 React...而 import * as React 的写法会取 module.exports 中的值,这样使用起来就不会有任何问题。...而 esModuleInterop 会真正的在编译的过程中生成兼容代码,使模块能正确的导入。... 是如何导入不同模块标准打包的代码的。
长连接说简单一点就是不会断的连接 ? ,可以使用心跳包进行维持 心跳是什么?...顾名思义就是心脏的跳动,可以用来判断一个事物的生和死,Swoole 中的心跳是指用来判断一个连接是正常还是断开的 fd 是什么?...fd 学名是文件描述符(file descriptor),Swoole Server 中$fd 是 TCP 客户端连接的标识符,在 Server 实例中是唯一的,在多个进程内不会重复 fd 是一个自增数字...第一种方案,对服务器和网络的压力更小,而且更具有灵活性,但需要客户端配合定时发送心跳包 第二种方案,对服务器和网络压力更大,不建议使用 在 Swoole 中如何实现?...任何个人或团体,未经允许禁止转载本文:《Swoole中的长连接和心跳包》,谢谢合作!
(1)如果X是内部模块(比如require('http')) a.返回该模块 b.不再继续执行 (2)如果X以'./'或者'/'或者'...../'开头 a.根据X所在的父模块,确定X的绝对路径 b.将X当做文件,依次查找下面文件,只要其中有一个存在,就返回该文件,不在继续执行。...根据 X 所在的父模块,确定 X 可能的安装目录 b....依次在每个目录中,将X当做文件名或者目录名加载 (4)抛出"not found" 举个例子: 脚本文件/home/ry/projects/foo.js执行了require('bar'),这属于上面的第三种情况...bar/package.json(main字段) bar/index.js bar/index.json bar/index.node 如果所有目录中,都无法找到bar对应的文件或者目录,就抛出一个错误
基本类型布尔类型 (boolean)布尔类型表示一个值为真或假的逻辑值。let isDone: boolean = false;数字类型 (number)数字类型表示整数或浮点数。...let message: string = "Hello, TypeScript!";数组类型 (array)数组类型表示一个元素的集合。...let person: [string, number] = ["John", 25];枚举类型 (enum)枚举类型表示一组具名的常量值。...let value: any = "Hello";value = 10;value = true;空类型 (void)空类型表示没有任何返回值的函数。...function showMessage(): void { console.log("Hello");}高级类型联合类型 (union)联合类型表示一个值可以是多个类型中的一个。
在TypeScript中,类是一种用于创建对象的蓝图,它定义了对象的属性和方法。类可以看作是对象的模板,通过实例化类可以创建具体的对象。定义类要定义一个类,可以使用 class 关键字后跟类的名称。...,它们是类中的函数。...const person = new Person("John", 25);类的继承TypeScript支持类的继承,可以通过继承一个基类来创建派生类。....`); }}派生类可以继承基类的属性和方法,并可以添加自己的属性和方法。访问修饰符TypeScript提供了访问修饰符来控制类的属性和方法的访问权限。...public:默认的访问修饰符,公开访问,可以在类的内部和外部访问。private:私有访问,只能在类的内部访问。protected:受保护的访问,只能在类的内部和派生类中访问。
Nodejs 作为后端编程语言,它提供了很多 Javascript 没有的能力,集成在它的核心模块里面。 Nodejs 的 Stream 模块就是 Nodejs 语言对于流的实现。...二、Nodejs 核心模块 Stream 在生产环境中的运用 平时使用 Nodejs 做一些小工具开发或者使用 Koa/express 开发后端应用的时候,很少甚至可以说没有直接用到 Stream 模块...我们很难在某个 Nodejs 应用中找到直接使用 stream 模块的代码,比如 const stream = require('stream') 但是我们一定很熟悉这样的代码。...四、Stream 模块在 Nodejs 中的位置 Stream 模块本身主要用于开发者创建新类型的流实例,对于以消费流对象为主的开发者,极少需要直接使用 Stream 模块。...nodejs 的基础能力,与其它模块以及互相之间依赖关系其只会更复杂。
在 PM2 的配置文件中可以设置 exec_model:'cluster' 和 instances 两个属性来设置开启多个进程,PM2 其实主要也是利用 Nodejs Cluster 这个模块来实现了,...还有 Egg.js 中的 egg-cluster 模块在启动 Worker 进程时也是使用的 Nodejs Cluster 模块。...Nodejs 的 Cluster 模块采用了哪种集群模式?...在 Nodejs 中自带的 Cluster 模块正是采用的第二种方案。 多个进程为什么可以监听同一个端口?...在 Nodejs 中我们是在同一台机器上开启的多进程模式,其实也不存在服务器的配置存在较大的差异,RR 这种已经可以满足我们的需求了,在除了 windows 系统以外的所有系统中 RR 是默认的轮询策略
今天要重新回顾一下commonJS规范及nodejs的模块儿机制,这篇讲不完的话, 下篇会接着聊这个话题。 规范和模块机制产生的背景 Javascript在很长一段时间内被认为是一种网页脚本。...在这种变迁的过程中,js不断的被抽象、聚合。...在实际工作中,Javascript的工作场景基本仅限于宿主浏览器中API支持程度,虽然web2.0以后,HTML5崭露头角后,浏览器中出现了很多新的,强大的API, 但是相对于其他语言,JavaScript...在模块中存在一个module对象,代表模块儿本身,同时上下文环境提供了一个exports对象用于导出当前模块的方法或变量,并且是唯一导出的出口。同时,exports是module的属性。...这样一来,每个模块具有独立的空间且互不干扰,整个业务逻辑也显得清晰。 Node模块儿 在Node中,模块儿可以分为两大类,一类是Node提供的模块成为核心模块;另一类是用户编写的模块,成为文件模块。
领取专属 10元无门槛券
手把手带您无忧上云