无论是手机端还是pc端,几乎都包含登录注册方面功能,今天就使用node+express+mongodb实现一套登录注册功能,这里需要自己去安装MongoDB环境,如果没有安装可以看这篇关于MongoDB...,27017是你数据库的端口号,mongodb不需要打开数据库可视化工具,根据名字就自动创建这个数据库名了 const mongoose = require('mongoose') // 链接数据库 mongoose.connect...,但是这样密码暴露了,对用户信息造成安全隐私问题。...安装加密bcryptjs依赖包,这个和bcrypt原理是一样的,如果第bcrypt安装不成功,就是要bcryptjs安装就行,用法 一样的 cnpm install bcryptjs --save 然后直接对模型进行修改就行...SECRET定义的是一个秘钥,先随便填写,这个秘钥应该不要出现在代码中, const SECRET = 'ewgfvwergvwsgw5454gsrgvsvsd' 安装 jsonwebtoken依赖包
在这里,我整理了一些我最喜欢的 NPM 包的列表。我也将它们分类,因此信息更加结构化,更易于浏览。 当然,你不必安装和学习所有这些工具。在大多数情况下,从每个类别中挑选一个就足够了。...许多现代的 UI 工具包都基于它,例如 React Bootstrap[16] 或 Reactstrap[17]。...14.GraphQL[35] 用于 api 的查询语言和用于对运行时的现有数据执行查询。提供 API 中数据的完整描述,使客户端能够准确地要求他们所需要的数据。 ?...它非常快,因为它是基于 jquery 的。Cheerio 安装了 Parse5 解析器,能够解析任何类型的 HTML 和 XML 文档。...进程管理和运行 55.Nodemon[78] 在 Node.js 应用程序的开发过程中使用的简单的监控脚本。
yarn add express cors mongoose 我们还需要安装它们的类型作为开发依赖项,帮助 TypeScript 编译器理解这些包。...创建服务器 在创建服务器之前,我们需要在 nodemon.json 加一些环境变量来保存 MongoDB 的凭据。...然后,我们用 mongoose 包,通过读取 nodemon.json 带凭证的 url 去连接 MongoDB。...最值得注意的是 src/type.d.ts 被用来存放类型。我几乎在每个文件中都使用了它们,所以我添加了扩展 .d.ts ,使类型全局可用。现在我们不再需要导入它们。...: ITodo } 这里, ITodo 接口需要跟 API 返回的数据类型一样。这里没有 mongoose , 所以需要加一些额外的属性来匹配 API 定义的数据类型。
在这里,我整理了一些我最喜欢的 NPM 包的列表。我还对它们进行了分类,因此信息更加结构化并且更易于浏览。 当然,我们不必全部安装和学习它们。在大多数情况下,从每个类别中挑选一个两个就足够了。...许多现代 UI 工具包都基于它,例如 React Bootstrap 或 Reactstrap。...提供 API 中数据的完整描述,让客户能够准确地询问他们需要什么。...46、Mocha 地址:https://www.npmjs.com/package/mocha Mocha 是一个 JavaScript 测试框架,让异步测试变得简单有趣。...流程管理器和运行器 55、Nodemon 地址:https://www.npmjs.com/package/nodemon 用于开发 Node.js 应用程序的简单监控脚本。
帮助我们进行单元测试 安装 $ npm install --global mocha 创建测试文件夹 test 目录,然后添加测试脚本文件 // 引用node的默认的断言库 var assert =...setup:此方法会在每个测试用例执行前都执行一遍。 test:具体执行的测试用例实现代码。 teardown:此方法会在每个测试用例执行后都执行一遍,与 setup 相反。...行覆盖率(line coverage):是否每一行都执行了? 函数覆盖率(function coverage):是否每个函数都调用了?...分支覆盖率(branch coverage):是否每个 if 代码块都执行了? 语句覆盖率(statement coverage):是否每个语句都执行了?...因为,mocha 和 _mocha 是两个不同的命令,前者会新建一个进程执行测试,而后者是在当前进程(即 istanbul 所在的进程)执行测试,只有这样, istanbul 才会捕捉到覆盖率数据。
面对繁忙的日程安排与紧迫的工期限制,选择能够切实提升生产率的工具无疑至关重要。 在这里,我整理出一份个人最喜欢的 NPM 软件包清单。为了便于浏览,我还对它们进行了分类,希望呈现出更加清晰的结构。...当然,大家不必全数安装与学习。在大多数情况下,每个类别选择一款就足以解决生产需求。我只是想多提供一点替代方案,帮助每位读者朋友找到最适合自己的选项。闲言少叙,咱们马上开始!...---- ♂️ 数据生成器 Uuid uuid[14]是一个便捷的微型软件包,能够快速生成更为复杂的通用唯一标识符(UUID)。...Mocha 测试连续运行,允许灵活和准确的报告,同时将未捕获的异常映射到正确的测试用例。 安装及示例 yarn add mocha --dev 接下来,创建名为 test.js 的文件。...p2-github 安装及示例 $ yarn add global pm2 你可以像下面一样启动任何应用程序(Node.js、Python、Ruby、$PATH 中的二进制文件……) $ pm2 start
在这里,我整理出一份个人最喜欢的 NPM 软件包清单。为了便于浏览,我还对它们进行了分类,希望呈现出更加清晰的结构。 当然,大家不必全数安装与学习。...在大多数情况下,每个类别选择一款就足以解决生产需求。我只是想多提供一点替代方案,帮助每位读者朋友找到最适合自己的选项。闲言少叙,咱们马上开始!...---- ♂️ 数据生成器 Uuid uuid是一个便捷的微型软件包,能够快速生成更为复杂的通用唯一标识符(UUID)。...Mocha 测试连续运行,允许灵活和准确的报告,同时将未捕获的异常映射到正确的测试用例。 安装及示例 yarn add mocha --dev 复制代码 接下来,创建名为 test.js 的文件。...安装及示例 $ yarn add global pm2 复制代码 你可以像下面一样启动任何应用程序(Node.js、Python、Ruby、$PATH 中的二进制文件……) $ pm2 start app.js
在这里,我整理出一份个人最喜欢的 NPM 软件包清单。为了便于浏览,我还对它们进行了分类,希望呈现出更加清晰的结构。 当然,大家不必全数安装与学习。在大多数情况下,每个类别选择一款就足以解决生产需求。...♂️ 数据生成器 Uuid uuid[14]是一个便捷的微型软件包,能够快速生成更为复杂的通用唯一标识符(UUID)。...Mocha 测试连续运行,允许灵活和准确的报告,同时将未捕获的异常映射到正确的测试用例。 安装及示例 yarn add mocha --dev 接下来,创建名为 test.js 的文件。...nodemon 将监视启动目录中的文件,如果有任何文件更改,nodemon 将自动重新启动 node 应用程序。...p2-github 安装及示例 $ yarn add global pm2 你可以像下面一样启动任何应用程序(Node.js、Python、Ruby、$PATH 中的二进制文件……) $ pm2 start
在模块文件执行之前,模块文件中的代码会被包裹在模块包装函数当中,这样每个模块文件中的代码就都拥有了自己的作用域,所以在模块外部就不能访问模块内部的成员了。...3.13 项目依赖 VS 开发依赖 项目依赖:无论在开发环境还是线上环境只要程序在运行的过程中需要使用的软件包就是项目依赖。比如 lodash,mongoose。...-g 查看全局中安装了哪些软件包: npm list -g --depth 0 查看全局中有哪些过期软件包: npm outdated -g nodemon 问题:在 node 环境中每次修改...JavaScript 文件后都需要重新执行该文件才能看到效果。...主要用途有两个,第一个是临时安装软件包执行后删除它,第二个是执行本地安装的提供命令的软件包。
安装完成上述指令之后,我们可以检查一下安装的express是否能用 express --version 接着我们就可以创建项目了,在创建项目的时候可以先express -h来查看一下,express命令的参数...这个是包的描述文件,我们主要关注的是scripts和dependencies。...我们在执行node文件的时候,如果修改了node文件,每次执行都需要重新启动项目才行,为了方便我们可以使用nodemon来监听项目的改动,不再需要重复启动项目,这么方便的东西用起来能不香吗??...npm i nodemon -g //package.json "scripts": { "start": "nodemon ....数据库 安装 npm i mongoose -S 完成安装之后我们需要在app.js里引入并且配置数据库 //app.js //引入数据库 const mongoose = require('mongoose
在这里,我整理了一些我最喜欢的 NPM 包的列表。我也将它们分类,因此信息更加结构化,更易于浏览。 当然,你不必安装和学习所有这些工具。在大多数情况下,从每个类别中挑选一个就足够了。...许多现代的 UI 工具包都基于它,例如 React Bootstrap[16] 或 Reactstrap[17]。...数据库工具 19.Mongoose[40] Mongoose 是一个 MongoDB 对象建模工具,设计用于在异步环境中工作。Mongoose 支持 Promise 和回调。...46.Mocha[69] Mocha 是一个 JavaScript 测试框架,使得异步测试简单而有趣。...进程管理和运行 55.Nodemon[78] 在 Node.js 应用程序的开发过程中使用的简单的监控脚本。
server 用于我们本地调试,其启动的是 nodemon "scripts": { "start": "node server.js", "server": "nodemon server.js...Mac的请看 这篇文章 操作mongodb的插件有很多,这里我们使用mongoose 安装插件 npm install mongoose 新建一个config文件夹 ,然后建一个 keys.js文件...module.exports = { // 没有数据库和密码的本地服务 mine mongoURI : "mongodb://localhost/mine } // 引入mongoose...const mongoose = require('mongoose') // 我们把数据的驱动连接URL 写到了另一个文件config文件架下的keys.js中 const db = require.../models/userModel') 新建post请求 之前我们想要使用post请求,都需要安装body-parser。
('useCreateIndex', true) mongoose.set('useFindAndModify', false) // 开始连接( 使用用户名和密码时,需要 `?...然后,我继续查看目录,发现我之前安装的5.0.8的版本,其实在 /usr/local/redis-5.0.8下面,而且我不是使用的brew安装的 因此,我又把刚刚安装的redis删除: brew...Jest 和Mocha 单元测试为何难以落实 supertest接口测试 测试驱动开发TDD 5-2 介绍Jest和Mocha Jest官网:https://jestjs.io/zh-Hans/docs.../getting-started Mocha官网:https://mochajs.cn/#getting-started 代码演示 安装jest:npm i -S jest 配置package.json...run start 为了方便改代码后不用重启,我们使用 npm i nodemon cross-env --save-dev 8-2 |8-3 介绍app-js 各个插件的作用 http-errors
不过,有一个很便捷的模块叫做 concurrently ,它可以产生多个进程,并同时运行它们。 另外,请在局部使用命令行安装的开发工具,例如:webpack,nodemon,gulp,Mocha等。...例如你的安装可以指向 ./node_modules/.bin/mocha或者将此行命令加入到你的bash/zsh文件夹(PATH!) `export PATH="....根据专业水平和应用程序的性质,你可能会从像 TypeScript 或 Flow 这样的强语言。 另一方面,还有完全functional形式的脚本语言,像 Elm 或 ClojureScript。...所以你的Dockerfile可以看起来像这样: # ......他们每个星期都学习一个新的库,每个月学习一个新的框架。 他们强制自己每周刷Twitter,Reddit,Hacker News和JS。 强制性的行为导致在JavaScript领域中的拖延。
npm命令更新程序包 npm update 程序包名称 npm up 程序包名称 npm upgrade 程序包名称 npm更新全局包 npm update -g npm更新项目生产环境依赖包 npm...npm-check -g ② 检查npm包的状态 npm-check -u -g 通过上下键可以移动光标,使用空格键可以选择需要处理的包,回车直接进行处理。...万一不能用,就要手动安装一下。 npm install -g npx 调用项目安装的模块 npx 想要解决的主要问题,就是调用项目内部安装的模块。比如,项目内部安装了测试工具Mocha。...npm install -D mocha 一般来说,调用 Mocha ,只能在项目脚本和 package.json 的scripts字段里面, 如果想在命令行下调用,必须像下面这样。...# 项目的根目录下执行 $ node-modules/.bin/mocha --version npx 就是想解决这个问题,让项目内部安装的模块用起来更方便,只要像下面这样调用就行了。
为了便于浏览,我还对它们进行了分类,希望呈现出更加清晰的结构。 当然,大家不必全数安装与学习。在大多数情况下,每个类别选择一款就足以解决生产需求。...GraphQL 在 API 中提供完整的数据描述,使客户端能够准确获取其需要的信息。 项目链接: https://www.npmjs.com/package/graphql ?...数据库工具 19.Mongoose Mongoose 是一款用于在异步环境下使用的 MongoDB 对象建模工具。Mongoose 支持回调机制。...Mocha 以串行方式运行测试,能够在未捕获异常与正确测试用例加以映射的同时,发布灵活而准确的报告结果。 项目链接: https://www.npmjs.com/package/mocha ?...进程管理器与运行器 55.Nodemon 在 Node.js 应用开发期间使用的简单监控脚本。易于重启并默认启用并监控文件变更,因此特别适合匹配开发流程使用。
,然后在浏览器出入http://localhost:5000,就可以查看运行的结果了 2.6但是我们每次修改代码的时候都要重新运行node app.js,这个时候我们只需要安装nodemon...,监听node变化的一个工具 cnpm install nodemon -g 在这里是全局安装 2.7:配置package.json启动命令,在开发环境的时候,直接可以通过cnpm run app...来监听每次修改node的变化,nodemon我们已经全局安装过了,可以在任何地方都可以使用,只要我们每次修改代码都会发生变化,这样我们就不会手动输入命令了 3.数据库mlab创建 3.1...node链接我们的数据库了 4.node链接MongoDB 4.1安装mongoose链接数据库 cnpm install mongoose 4.2然后在你的入口文件引入(app.js...body-parser 5.4.2在安装完之后,需要在app.js文件引入,并使用,这样我们就可以使用post进行数据存储了 const bodyParser = require('body-parser
当 Node 开发人员看一个新项目时,npm scripts就像是唯一的入口。...使用功能继承 — 通过像一些最高产的 Node 贡献者所做的那样,只使用功能继承,避免陷入盲目的辩论和调试和理解原型继承或类的脑筋急转弯。 适当地命名 — 给出有意义的名称,作为文档。...但是,有一个更加方便的模块名为 concurrently,它可以生成多个进程并同时运行它们。 另外,在本地安装webpack、nodemon、gulp、Mocha等命令行工具,避免冲突。...它通过简单的函数工厂模式实现,不需要使用prototype、new 或 this。当您更新原型(导致所有实例也发生变化)时没有隐式影响,因为在功能继承中每个对象都使用自己的方法副本。...所以你的 Dockerfile 看起来像这样: # ...
熟悉 Node 或前端 JavaScript 工作的同学都知道,社区中的可用模块有数十万之多。...你想与应用程序的非 JS 部分共享这些 schema(它是 JSON,所以你可以这样做)。...时使用,它会直接查询 MongoDB Mongoose: 你更想在 MongoDB 上使用 ORM 时用它 Knex: 你不需要完整的 ORM 解决方案,只是想在写查询代码时方便一些就用它...NVM: 你希望能在环境中安装的多个版本 Node 之间切换时用它。 FS-EXTRA: 你需要递归 mkdir、rm -rf 和 Node 中缺少的其他文件系统实用程序时用它。...测试 Mocha: 在需要编写和运行单元测试时使用。 Chai: 你的单元测试需要一个断言库时用它。 注意:它和 Mocha 是搭配使用的。
nodemon 配置 ├── package.json 依赖包及配置信息文件 ├── tsconfig.json...本地开发环境 本地开发使用nodemon来实现自动重启,因为node不能直接识别ts,所以需要用ts-node来运行ts文件。...// nodemon.json { "ext": "ts", "watch": [ // 需要监听变化的文件 "src/**/*.ts", "config/**/*.ts",...-x" } 本地调试 因为有的时候需要看到请求的信息,那我们又不能在代码中添加console.log(日志)这样效率低又不方便,所以我们需要借助编辑器来帮我们实现debug的功能。...,就是路由可以引入装饰器写法,这样能减少重复工作和提高效率,有兴趣的同学可以看我上一篇博客哈。
领取专属 10元无门槛券
手把手带您无忧上云