package.json重要说明 package.json是创建任何node.js项目必须要有的一个文件。...因为在package.json文件中,有详细的项目描述, 包括: (1)项目名称:name (2)版本:version (3)依赖文件:dependencies 等等.. 1....创建node.js项目步骤 (1) 创建package.json文件 (2) 运行npm install 创建node_modules这个文件夹 (3) 编写node.js文件,使用相应外部模块 2....使用npm 操作node node app.js 有了package.json以后我们做的就是一个项目 故,使用npm 可以对象项目的操作 在package.json中,script键可以直接项目进行操作...和 dependencies dependencies中依赖的是代码中的包和模块 devDependencies中是依赖项目管理工具的 gulp webpack grunt 等等
VS Code 等优秀的代码编辑器有助于在我们尝试运行 Node.js 之前发现常见的 Node.js 问题: 颜色编码有效和无效的描述 自动补全函数和变量名 突出显示匹配的括号 自动缩进代码块 函数、...众所周知,运行时错误最难以复现,因此良好的日志记录必不可少。 Node.js 调试环境变量 操作系统中设置的环境变量可以控制 Node.js 应用程序的设置。...支持 Node.js 并具有内置的调试客户端。...VS Code 高级调试配置 如果你想在另一台设备、虚拟机上调试代码,或者需要使用其他启动选项(例如 nodemon) 编辑器将启动配置存储在项目隐藏文件夹内的 launch.json 文件中。...- WSL:通过 Windows 上的 WSL 连接 Linux 上运行的应用程序 最后 大家还有什么 Node.js 项目的调试技巧,可以在留言区分享出来~ 本文译自:https://blog.openreplay.com
Node.js简介 Node.js是一个基于Chrome V8引擎的JavaScript运行环境,用来方便快速地搭建易于扩展的网络应用。...Node.js使用了一个事件驱动、非阻塞式I/O的模型,使其轻量又高效,非常适合运行在分布式设备的数据密集型的实时应用。Node.js的包管理器npm,是全球最大的开源库生态系统。...Node.js的典型应用场景包括: 实时应用:如在线聊天,实时通知推送等等(例如socket.io)。 分布式应用:通过高效的并行I/O使用已有的数据。...的版本管理软件,使您可以轻松在Node.js各个版本间进行切换。...运行项目 node ~/example.js & # 一般会将写好的nodejs项目进行如下编译 cd admin-web npm install --registry=https://registry.npm.taobao.org
Express.js 是用于开发 Node.js REST API 的优秀框架,但是它并没有为您提供有关如何组织 Node.js 项目的任何线索。 虽然听起来很傻,但这确实是个问题。...正确的组织 Node.js 项目结构将避免重复代码、提高服务的稳定性和扩展性。...这篇文章是基于我多年来在处理一些糟糕的 Node.js 项目结构、不好的设计模式以及无数个小时的代码重构经验的探索研究。...这是我要谈论的 Node.js 项目结构。 我在构建的每个 Node.js REST API 服务中都使用了下面这个结构,让我们了解下每个组件的功能。...结论 我们深入研究了经过生产测试的 Node.js 项目结构,以下是一些总结的技巧: 使用 3 层架构。 不要将您的业务逻辑放入 Express.js 控制器中。
Node.js 的出现使得前端工程师可以跨端工作在服务器上,当然,一个新的运行环境的诞生亦会带来新的模块、功能、抑或是思想上的革新,本文将带领读者领略 Node.js (以下简称 Node) 的模块设计思想以及剖析部分核心源码实现...CommonJS 规范是为了解决 JavaScript 的作用域问题而定义的模块形式,它可以使每个模块在它自身的命名空间中执行。...其中 Module 的类方法 _load 实现了 Node 加载模块的主要逻辑,下面我们来解析 Module._load 函数的源码实现,为了方便大家理解,我把注释加在了文中。 Module....省略 esm 模块的支持 }; 后缀处理 可以看出,针对不同的文件后缀,Node.js 的加载方式是不同的,以下针对 .js, .json, .node 简单进行分析。...return process.dlopen(module, path.toNamespacedPath(filename)); }; 从上面的三段源码,我们看出来并且可以理解,只有 JS 后缀最后会执行实例方法
前言 如果你有一个 Node.js 项目,并想使用 TypeScript 进行改造,那本文对你或许会有帮助。...本文讲的是如何将一个旧的 Node.js 项目使用 TypeScript 进行改造,包括目录结构调整、TypeScript-ESLint 配置、tsconfig 配置、调试、常见错误处理等。...由于篇幅有限,Node.js 项目能集成的技术也是五花八门,未覆盖到的场景还请见谅。...*/ "node_modules/**" ], } 步骤三、源码文件调整 将所有.js文件改为.ts文件 这一步比较简单,可以根据自身项目情况,借助 gulp 等工具将所有文件后缀改成ts...到这就算结束了,文中只涉及到了工具类的 Node.js 项目改造,场景有限,并不能代表所有 Node.js 项目,希望能对大家有所帮助。
创建项目 npm init 安装相应的库 npm install --save-dev typescript npm install --save-dev nodemon npm install.../run.sh Typescript特点 typescript 通过构造函数的参数直接定义属性,为了证明,我们创建一个info.ts文件 内容如下 class info{ constructor...email) { this.name = name; this.password = password; } return info; }()); 值得注意的是...,构造函数的参数需要指明为public或者private ,参数才会默认成为属性。
Node.js 不仅可以单独运行,还可以以库的方式被使用,本文介绍下如何把 Node.js 嵌入到自己项目中。首先第一步下载 Node.js 源码,然后根据 Node.js 的文档进行编译安装。...这样我们就可以拿到 Node.js 提供的头文件和库文件了。接下来根据官方的 demo 写一个测试程序。...LoadEnvironment 最后会执行我们传入的字符串代码。这段代码中,前面是 Node.js 提供的 demo,后面一句是我加的,test.js 里简单输出 hello world。...,这里先曲线救国一下,从 Node.js 源码里引入这两个文件,后续再去研究具体方案。...cool,我们已经实现了把 Node.js 嵌入到我们的项目。下面具体来看一下涉及到的一些逻辑。从 LoadEnvironment 看起。
作者 | Jiasm 来源 | https://juejin.im/post/5cef97e0e51d45776031af91 近期在按照业务划分项目时,我们组被分了好多的项目过来,大量的是基于 Node.js...我曾经晚上接到过同事的微信,让我帮他上线项目,他家的 Wi-Fi 是某博士的,下载项目依赖的时候出了些问题。...如何解决这些问题 上边我们所遇到的一些问题,其实可以分为两块: 有效的约束代码质量 快速的部署上线 所以我们就开始寻找解决方案,因为我们的源码是使用自建的 GitLab 仓库来进行管理的,首先就找到了...不过这在我们的 Node.js 项目中就会带来一个问题。 因为我们的 ESLint、单元测试 都是基于 node_modules 下边的各种依赖来执行的。...dist文件夹,并且部署的时候也是直接将该文件夹推送到服务器的(TS项目的源码就没有再往服务器上推过了)。
在执行 startup() 函数的过程中,多次用到了 NativeModule.require() 来加载模块 NativeModule NativeModule.require() 是专门用来加载 Node.js...filename: NativeModule 对应源码文件 exports: 默认值是 {} loaded / loading: NativeModule 状态 _cache: 简单的模块缓存..._source: 模块源码资源 require(): 先查询缓存,缓存没有则新建 NativeModule 并编译,返回 exports wrap()/wrapper: wrapper 是对模块上下文的包裹...,源码如下: // bootstrap main module....至此 启动-js部分 已经全部完成,后续模块加载部分,见 Node.js源码解析-require背后 End 启动只是 Node.js 源码的一小部分,除此之外还有大量的内置模块和 c / c++ 源码
GitLab CI/CD 在 Node.js 项目中的实践 近期在按照业务划分项目时,我们组被分了好多的项目过来,大量的是基于 Node.js 的,也是我们组持续在使用的语言。...我曾经晚上接到过同事的微信,让我帮他上线项目,他家的 Wi-Fi 是某博士的,下载项目依赖的时候出了些问题。...如何解决这些问题 上边我们所遇到的一些问题,其实可以分为两块: 有效的约束代码质量 快速的部署上线 所以我们就开始寻找解决方案,因为我们的源码是使用自建的 GitLab 仓库来进行管理的,首先就找到了...不过这在我们的 Node.js 项目中就会带来一个问题。 因为我们的 ESLint、单元测试 都是基于 node_modules 下边的各种依赖来执行的。...dist 文件夹,并且部署的时候也是直接将该文件夹推送到服务器的(TS项目的源码就没有再往服务器上推过了)。
引言Node.js是一种基于Chrome V8引擎的JavaScript运行时环境,广泛用于构建高性能的服务器端应用程序。...通过使用Node.js,我们可以简化后端开发过程,并利用丰富的npm生态系统来管理和共享代码。本文将介绍如何使用npm创建Node.js项目,并讨论项目初始化、依赖管理和脚本配置等方面的内容。...项目初始化2.1 确保已安装Node.js和npm在创建Node.js项目之前,请确保已安装Node.js和npm。...总结通过使用npm,我们可以轻松创建和管理Node.js项目。通过初始化项目、安装依赖、配置脚本等操作,可以更好地管理项目的开发过程和依赖关系。...希望本文对你理解如何使用npm创建Node.js项目有所帮助。
能连上数据库,本地测试一切正常 项目上线没问题,pm2管理也正常 运行一段时间后出现以下错误 PROTOCOL_CONNECTION_LOST PROTOCOL_ENQUEUE_AFTER_FATAL_ERROR...两天天以来都是凌晨断掉,重启项目又好了 原因 因为mysql连接断开,没有做异常处理,导致错误的代码继续在运行,导致node没有结束进程,所以node进程这些都好着,就是连不上数据库,重启服务就又恢复正常
传统的后端运行环境,如 Java、.NET,其源代码是经过编译才部署到服务器上运行的,不存在泄露的风险。而对于应用越来越广泛的 Node.js 而言,运行的则是源代码。...本文介绍一种可用于 Node.js 端的代码保护方案,使得 Node.js 项目也可以放心地进行私有化部署。...length), { cachedData: bytecodeBuffer }); anotherScript.runInThisContext(); 编译文件 讲清楚原理之后,下面就尝试编译一个很简单的项目...,在 Node.js 中,require 是个很基础的函数,怎么会未定义呢?...原来,Node.js 在编译 js 文件的过程中会对其内容进行包装。
最近笔者把一个中等规模的 Koa2 项目迁移到 TypeScript,和大家分享一下 TypeScript 实践中的经验和技巧。...原项目基于 Koa2,MySQL,sequelize,request,接口加页面总计 100 左右。迁移后项目基于 Midway,MySQL,sequelize-typescript,axios。...让 any 可控 本项目处理 any 的思路很简单,不显式使用 any,使用 unknown 作为顶级类型。...本项目是一个管理系统,核心模型就是数据库表,对应到代码里首先就是 Model 层,围绕这个核心会有很多 Model 类型的变体和衍生类型。...附上:Node.js 项目 TypeScript 改造指南(一) 参考资料 [1] Playground: https://www.typescriptlang.org/play/index.html
这样做会有两个缺点: 内存方面:占用大量内存 时间方面:需要等待数据的整个有效负载都加载完才会开始处理数据 为了解决上述问题,Node.js 效仿并实现了流的概念,在 Node.js 流中,一共有四种类型的流...(Transform Stream) 为了深入学习这部分的内容,循序渐进的理解 Node.js 中流的概念,并且由于源码部分较为复杂,本人决定先从可读流开始学习这部分内容。...相关 API 的实现 这里会按照源码文档中 API 的出现顺序来展示,且仅解读其中的核心 API 实现。...注:此处仅解读 Node.js 可读流源码中所声明的函数,不包含外部引入的函数定义,同时为了减少篇幅,不会将所有代码都拷贝下来。...总结 Node.js 为了解决内存问题和时间问题,实现了自己的流,从而可以将数据一小块一小块的读到内存里给消费者消费 流并不是 Node.js 特有的概念,它们是几十年前在 Unix 操作系统中引入的
https://nodejs.org/en/download/ 或 https://npm.taobao.org/mirrors/node/v14.17.1...
发布订阅模式在面试中也是高频考点,本文会自己实现一个发布订阅模式,弄懂了他的原理后,我们就可以去读Node.js的EventEmitter源码,这也是一个典型的发布订阅模式。...的EventEmitter Node.js的EventEmitter思想跟我们前面的例子是一样的,不过他有更多的错误处理和更多的API,源码在GitHub上都有:github.com/nodejs/node...订阅事件 代码传送门: github.com/nodejs/node… EventEmitter订阅事件的API是on和addListener,从源码中我们可以看出这两个方法是完全一样的: ?...总结 本文讲解了发布订阅模式的原理,并自己实现了一个简单的发布订阅模式。在了解了原理后,还去读了Node.js的EventEmitter模块的源码,进一步学习了生产环境的发布订阅模式的写法。...作者博文GitHub项目地址: github.com/dennis-jian… 作者掘金文章汇总:juejin.im/post/684490…
领取专属 10元无门槛券
手把手带您无忧上云