首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Node.js组成及Events模块

1 Node.js的模块和包 1.1模块 Node.js本身提供许多模块,每个模块实现一种功能,如文件操作模块fs,构建HTTP服务的http模块等,每个模块都是一个javascript文件,可以自己编写模块...每一个Node.js都是一个Node.js模块,包括JavaScript文件(.js)、JSON文本文件(.json)和二进制模块文件(.node) 1.1.1 模块的使用 模块内使用module.exports...和exports对外提供接口,便于在其他模块中引入要使用的模块,新建模块module.js,并对外提供接口。...Node.js采用CommonJS规范,一个javascript文件就是一个模块,包是一个文件夹,包内必须包含一个名为package.json的JSON文件。...2.6 自定义事件 使用emitter.emit(event, [arg1], [arg2], [...]),可以触发自定义事件。

82430
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    ES6--变量的声明及解构赋值

    $ npm install --global babel $ babel-node $ babel-node es6.js ​ ES6扩充了块级作用域,对字符串、数值、数组、对象、函数等都做了不同程度的扩展...ECMAScript在对变量的引用进行读取时,会从该变量对应的内存地址所指向的内存空间中读取内容,而当用户改变变量的值时,引擎会重新从内存中分配一个新的内存空间以存储新的值,并将新的内容地址与变量进行绑定...二、变量的解构赋值 ​ ES6允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构(Destructuring)。只要某种数据结构具有Iterator接口,都可以进行解构。...数组的解构赋值 Syntax: [arg1, arg2] = [value1, value2] Syntax: [arg1, , arg3] = [value1, value2, value3]...ES6中可以通过模式匹配进行获取。

    92631

    Electron启程

    你可以把它看作一个 Node. js 的变体,它专注于桌面应用而不是 Web 服务器端。 这不意味着 Electron 是某个图形用户界面(GUI)库的 JavaScript 版本。...主进程和渲染进程 Electron 运行 package.json 的 main.js 脚本的进程被称为主进程。 在主进程中运行的脚本通过创建web页面来展示用户界面。...Electron同时在主进程和渲染进程中对Node.js 暴露了所有的接口。 主进程和渲染进程模块 两种进程都可用的模块 clipboard 在系统剪贴板上执行复制和粘贴操作。...BrowserWindow 创建和控制浏览器窗口,相当于Android中的Activity。 contentTracing 从Chromium的内容模块收集跟踪数据,以查找性能瓶颈和缓慢的操作。...inAppPurchase Mac App Store中的应用内购买。 ipcMain 从主进程到渲染进程的异步通信。 Menu 创建原生应用菜单和上下文菜单。

    5.7K30

    Node.js快速入门

    arg1 参数 arg2 参数 7.2 EventEmitter的属性和方法 1)方法:addListener(event, listener) 为指定事件添加一个监听器到监听器数组的尾部。...Buffer 库为 Node.js 带来了一种存储原始数据的方法,可以让 Node.js 处理二进制数据,每当需要在 Node.js 中处理I/O操作中移动的数据时,就有可能使用 Buffer 库。...通常我们用于从一个流中获取数据并将数据传递到另外一个流中。 以下实例我们通过读取一个文件内容并将内容写入到另外一个文件中。...stdin:标准输入流。 argv:argv 属性返回一个数组,由命令行执行脚本时的各个参数组成。它的第一个成员总是node,第二个成员是脚本文件名,其余成员是脚本文件的参数。...大多数 web 服务器都支持服务端的脚本语言(php、python、ruby)等,并通过脚本语言从数据库获取数据,将结果返回给客户端浏览器。

    11.4K10

    十分钟教你理解TypeScript中的泛型

    你可以在你的集成开发环境中跟着实践。 准备工作 要从本文中跟着学习的话,你需要在电脑上准备以下东西: 安装Node.js:你可以运行命令行检查Node是否安装好了。...有方法向该集合里添加东西,也有方法通过索引获取集合里的东西。...(3); 因为TypeScript无法推断出arg参数是什么类型,不能证明所有类型都具有length属性,因此不能假设它是一个字符串(具有length属性)。...比如 function test(input: T[]): T { //… } 允许你确保输入和输出使用相同的类型,尽管输入是用的数组。 可使用编译时更强大的类型检查。...在上诉示例中,编译器让你知道数组方法可用于输入,任何其他方法则不行。 你可以去掉不需要的强制类型转换。

    2.2K10

    如何在Node.js中编写和运行您的第一个程序

    程序时,它都会产生相同的输出。 为了使程序更具动态性,让我们从用户那里获得输入并将其显示在屏幕上。 命令行工具通常接受修改其行为的各种参数。...例如,使用--version参数运行node打印已安装的版本,而不是运行解释器。 在此步骤中,您将通过命令行参数使代码接受用户输入。...第二个参数始终是正在运行的文件的位置。 其余参数是用户输入的内容,在本例中为: hello和world 。 我们最感兴趣的是用户输入的参数,而不是Node.js提供的默认参数。...,让我们从程序的环境中收集输入。...现在您可以检索用户要求的变量,但我们仍然需要处理用户输入错误数据的情况。

    8.8K30

    TypeScript基础知识

    ,会生成js文件01_index.js tsc .\01_index.ts 3.执行如下命令,查看输出内容: node .\01_index.js ts-node ts-node工具可以让我们直接运行...为前缀,它将成为一个由剩余参数组成的数组,索引值从0(包括)到 nums.length(不包括)。...泛型 泛型是可以保证类型安全的前提下,让函数等与多种类型一起工作,从而实现复用,常用于:函数、接口、类中。 例:创建一个函数,传入什么数据返回数据本身,也就是参数和返回值类型相同。...function id(arg: [T, U]): [T, U] { return arg; } console.log(id(['甜甜', 18])); typescript会自动给我们推断出输入...使用泛型接口时,需要显式指定具体的类型,上述代码的KeyValue 实际上,JS中的数组在TS中就是一个泛型接口,当我们在使用数组时,TS会根据数组的不同类型,来自动将类型变量设置为响应的类型

    2.2K20

    脚本任务执行器 —— npm-run-all 源码解析

    因为用户可能这么使用: $ run-p a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 你永远想象不到用户会怎么使用你的工具!...package.json 中匹配任务 // 中 patterns 是 ['lint', 'tests'],所以 lint 和 test 这两个任务一定要从 package.json...matchTasks 通过读取 package.json 下 scripts 中的命令,然后判断任务组 patterns 中的任务是否都存在于 taskList 中。...此时会从任务队列中取出 lint 任务,调用 runTask 去执行该任务(图2所示)。(runTask 的细节放到下一小节分析。)...、输出流,添加一些任务名称头部信息之类的; 获取任务的执行器,获取 npm-cli、node 等路径信息,然后拼接整个任务的执行命令; 调用封装后的 spawn 执行命令,并监听 error 和 close

    1.9K30

    基于 python 、js 的一个网页模块开发流程总结

    1、功能模块背景和需求 在视频点播业务中,视频的资源分布在全国各地的cdn机房中,机房的磁盘有SSD和SATA两种类型,我们需要尽量将用户请求的视频资源保存在SSD磁盘。...{"room":"东莞电信大朗OC3-30G-V"}} ]}] 一开始没考虑太多,想到的是利用jquery的Ajax直接请求数据接口,获取数据展示出来,处理代码全部用js完成。...解决办法: 不使用ajax直接跨域请求数据接口,改用python请求数据接口获取数据,处理后返回数据到JS页面中。Python中获取数据接口的数据很简单,直接用requests包就可以了。...联动刷新的三个选择框如下: Js中普通的省市区三级联动代码网上很多,因为省市区是固定顺序刷新的,选择省->刷新市->选择市->刷新区,并且数据固定也不是很多,对应关系可以保存在数组里,比较简单一点。...自己编写的代码处理流程是: 1、先获取数据,项目中是从数据库查询的数据,这里做demo测试时,直接构造的数据。

    4.2K00

    Electron实践笔记

    针对其结构化数据的特点可以用 GUI 的方式去编辑,我们基于 Electron[1] 参考 Github Desktop 客户端[2] 的架构编写了一个 JSON 编辑器(参见下图),通过填写表单的方式生成...Electron 通过将 Chromium 和 Node.js 合并到同一个运行时环境中,并将其打包为 Mac,Windows 和 Linux 系统下的应用来实现这一目的。...main 用于创建应用,创建浏览器窗口,它就是一个彻底的 Node 进程,获取不到 DOM, BOM 这些接口。...在 main 创建的浏览器窗口中运行的就是 renderer 进程,它既可以获取 DOM, BOM 这些接口,也可以使用 Node 的 API。...四、数据持久化及状态管理 1. 复杂数据持久化 数据持久化可选的方案有很多,比如 electron-store[6]等基于 JSON 文件实现的存储方案。

    1.2K30

    Electron实践笔记

    针对其结构化数据的特点可以用 GUI 的方式去编辑,我们基于 Electron[1] 参考 Github Desktop 客户端[2] 的架构编写了一个 JSON 编辑器(参见下图),通过填写表单的方式生成...Electron 通过将 Chromium 和 Node.js 合并到同一个运行时环境中,并将其打包为 Mac,Windows 和 Linux 系统下的应用来实现这一目的。...main 用于创建应用,创建浏览器窗口,它就是一个彻底的 Node 进程,获取不到 DOM, BOM 这些接口。...在 main 创建的浏览器窗口中运行的就是 renderer 进程,它既可以获取 DOM, BOM 这些接口,也可以使用 Node 的 API。...四、数据持久化及状态管理 1. 复杂数据持久化 数据持久化可选的方案有很多,比如 electron-store[6]等基于 JSON 文件实现的存储方案。

    1K10

    JavaScript

    中 ·HTML的body代码块底部(强烈推荐) 由于html代码是从上到下执行,如果Head中的js代码耗时严重,就会导致用户长时间无法看到页面,如果放置在body代码块底部,那么及时js代码耗时严重,...也不会影响用户看到页面的效果,只是js实现特效慢而已。...中的数据类型分为原始类型和对象类型: ·原始类型   ·数字   ·字符串   ·布尔值 ·对象类型   ·数组   ·"字典"   ·......函数内的特殊值arguments中封装了所有的实际参数· 2·作用域 javascript中每个函数都有自己的的作用域,当出现函数嵌套时,就出现了作用域链,当内层函数使用变量时,会根据作用域链从内到外一层层的循环...),因而这些变量也是该表达式的一部分· 闭包是个函数,而他[记住了周围发生了什么]·表现为由[一个函数]体中定义了[另一个函数],由于作用域链只能从内向外找,默认外部无法获取函数内部变量.闭包、在外部获取函数内部的变量

    1.1K20

    重温前端-js篇

    数据交互方面:json与javascript的交互更加方便,更容易解析处理,更好的进行数据交互 数据描述方面:json对数据的描述性比xml较差 xml和json都用在项目交互下,xml多用于做配置文件...call 和 apply 传递的参数不一样,call 传递参数arg1,arg2…形式 apply 必须数组形式[arg] bind 不会调用函数,可以改变函数内部this指向。...常见应用场景 函数防抖的应用场景: 连续的事件,只需触发一次回调的场景有: 搜索框搜索输入。只需用户最后一次输入完,再发送请求 手机号、邮箱验证输入检测 窗口大小Resize。...这个实现方法通常可以满足简单的需求,然而同时也存在着很大的缺陷:在网络情况不稳定的情况下,服务器从接收请求、发送请求到客户端接收请求的总时间有可能超过10秒,而请求是以10秒间隔发送的,这样会导致接收的数据到达先后顺序与发送顺序不一致...0到arr.length,内循环表示从i+1到arr.length 将没重复的右边值放入新数组。

    5.4K10

    爆肝整理高频js手写题请查收

    深克隆(deepclone)简单版:const newObj = JSON.parse(JSON.stringify(oldObj));局限性:他无法实现对函数 、RegExp等特殊对象的克隆会抛弃对象的...*/reduceRight() 该方法用法与reduce()其实是相同的,只是遍历的顺序相反,它是从数组的最后一项开始,向前遍历到第一项1....数组去重实现的基本原理如下:① 初始化一个空数组② 将需要去重处理的数组中的第1项在初始化数组中查找,如果找不到(空数组中肯定找不到),就将该项添加到初始化数组中③ 将需要去重处理的数组中的第2项在初始化数组中查找...,如果找不到,就将该项继续添加到初始化数组中④ ……⑤ 将需要去重处理的数组中的第n项在初始化数组中查找,如果找不到,就将该项继续添加到初始化数组中⑥ 将这个初始化数组返回var newArr = arr.reduce...四种数据结构各自有着自己特别的内部实现,但我们仍期待以同样的一套规则去遍历它们,所以ES6在推出新数据结构的同时也推出了一套 统一的接口机制 ——迭代器(Iterator)。

    1.2K40

    nodejs的基础概念

    1.node 安装与相关配置。 2.Node.jsREPL(交互式解释器) 类似于控制台,可以输入命令,并接受系统的响应。...REPL 的功能:   1.读取:读取用户输入,解析输入的 js 数据结构,并存储在内存中。   2.执行:执行输入的数据结构。   3.打印:输出结果。   ...Node.js基本上所有的事件机制都是用设计模式中的观察者模式实现的。 Node.js单线程类似进入一个while(true)的事件循环,直到没有事件,观察者退出,每个异步事件都生成一个事件观察者。...6.Node.js Buffer(缓冲区) js只有字符串数据类型,没有二进制数据类型。...但是在处理流时,必须使用二进制数据,因此在Node.js中定义了Buffer类,该类用来创建一个专门存放二进制数据的缓存区。

    90020

    2023前端二面经典手写面试题_2023-02-27

    随机选取一个数组中的值作为基准值,从左至右取值与基准值对比大小。比基准值小的放数组左边,大的放右边,对比完成后将基准值和第一个比基准值大的值交换位置。...script标签 设置script标签的src属性,以问号传递参数,设置好回调函数callback名称 插入到html文本中 调用回调函数,res参数就是获取的数据 function jsonp({url...*/ reduceRight() 该方法用法与reduce()其实是相同的,只是遍历的顺序相反,它是从数组的最后一项开始,向前遍历到第一项 1....数组去重 实现的基本原理如下: ① 初始化一个空数组 ② 将需要去重处理的数组中的第1项在初始化数组中查找,如果找不到(空数组中肯定找不到),就将该项添加到初始化数组中 ③ 将需要去重处理的数组中的第...如果你用eval()运行的字符串代码被恶意方(不怀好意的人)操控修改,您最终可能会在您的网页/扩展程序的权限下,在用户计算机上运行恶意代码。它会执行JS代码,有XSS漏洞。

    53120

    前端高频手写题自测,你能做出几道

    实现字符串的repeat方法输入字符串s,以及其重复的次数,输出重复的结果,例如输入abc,2,输出abcabc。...JS 解析 XML,并更新局部页面不过随着历史进程的推进,XML 已经被淘汰,取而代之的是 JSON。...JS原生的集合类型数据结构,只有Array(数组)和Object(对象);而ES6中,又新增了Map和Set。...四种数据结构各自有着自己特别的内部实现,但我们仍期待以同样的一套规则去遍历它们,所以ES6在推出新数据结构的同时也推出了一套 统一的接口机制 ——迭代器(Iterator)。...paramsObj[param] = true; } }) return paramsObj;}event模块实现node中回调函数的机制,node中回调函数其实是内部使用了观察者模式

    45930

    TS扫盲大法-基础篇

    ,并且能在node和浏览器中运行。...(`我买了 ${books['js']}`); } if ('node' in books) { console.log(`这是一本 ${books['node']}书籍`); }...} printShop({ js: 'js设计模式', node: 'nodejs入门到放弃' }); 将一个的enums值的value做为另一个对象的key,将一个枚举值的key作为一个对象的value...= keyof typeof SERVER // type serverType = "TEST" | "PRD" | "DEV" 访问索引类型 有时我们需要访问具体接口的某个字段的类型或者数组中的类型...2、基础使用泛型,可以在接口,函数,type使用泛型,泛型可以理解js中的形参,更加抽象和组织代码 3、extends约束泛型,并且可以在ts中做条件判断 4、使用keyof获取对象属性key值,如果需要获取一个对象定义的

    1.1K10

    前端常见20道高频面试题深入解析

    深拷贝实现 1.深拷贝最简单的实现是: JSON.parse(JSON.stringify(obj)) JSON.parse(JSON.stringify(obj)) 是最简单的实现方式,但是有一些缺陷...func.call(thisArg,arg1,arg2,...):第一个参数是 this 指向的对象,其它参数依次传入。...如何让 (a == 1 && a == 2 && a == 3) 的值为true? 利用隐式类型转换 == 操作符在左右数据类型不一致时,会先进行隐式转换。...这里有一个非常重要的点即是:在JS中,复杂数据类型,存储在栈中的是堆内存的地址,存在栈中的这个地址是不变的,但是存在堆中的值是可以变得。...防抖的应用场景 搜索框输入查询,如果用户一直在输入中,没有必要不停地调用去请求服务端接口,等用户停止输入的时候,再调用,设置一个合适的时间间隔,有效减轻服务端压力。 表单验证 按钮提交事件。

    1.2K30
    领券