首页
学习
活动
专区
圈层
工具
发布
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    日常用得到的 Koa 优雅代码指南

    老王:因为 Koa 比较轻量,几乎没有内置任何的额外功能。也是因为这个原因,Koa 的灵活度是很高的,喜欢折腾的人可以尝试下 小王:又轻量又几乎没有任何额外功能?那为什么不用原生Node?...10001, 'name 是必须的')) ,我希望我在 controller 层一上来就能写一些业务代码,最合理的还是将参数校验放在中间件中去统一处理,这里我们采用第三方插件 @hapi/joi 来处理.../test'); module.exports = { scmTest }; app/schema/test.js const Joi = require('@hapi/joi'); const.../joi 更多的使用方法请 查看文档 数据库操作 当涉及到数据库操作时,我们可以在 app 下再新增一个 service 目录。...另外再添加一个 model 目录,用来定义数据库表结构,具体的这里暂时不介绍了。 目前为止目录结构 总结 其他更多的公共逻辑都可以放在中间件层面去做,例如登录校验、权限校验等。

    2.1K20

    挑选 npm 模块很费事?掌握这些技巧就能事半功倍!

    Hapi: 你想要一个比 Express 或 Koa 有更多“部件”的框架时选它,但它集成的东西没 Sails 那么多。...(),  username: joi.string().alphanum().min(8).required()}); 它不是在 JSON 中定义 schema 你正在使用 Hapi(Joi 自带它,开箱即用...还要考虑你的团队是否熟悉 Promise。现在大多数开发者应该都很熟悉了。...ESlint: 你需要一个 linter 来自动查找(和修复)代码中的语法和模式问题时选它。 调试 目前 Node 的原生调试已经够用了,我建议用原生功能就行。...几年前一些额外的 npm 模块还能有些帮助,有的特定场景可能用得着;但是现在有了足够的原生支持,如果你没什么疯狂的调试需求就最好省掉额外的依赖项。 小结 挑选模块可能会很费事,但用些技巧就能事半功倍。

    2.2K21

    2024年Node.js精选:50款工具库集锦,项目开发轻松上手(三)

    https://sequelize.org/ 24、Joi:JavaScript对象模式验证的强大工具 在开发过程中,确保数据的完整性和遵守既定规则至关重要。...Joi为JavaScript开发者提供了全面的对象模式验证,通过在开发过程的早期捕捉无效数据,发挥着预防错误、安全漏洞和意外行为的关键作用。..., schema).value; 注意事项 尽管Joi在对象模式验证方面提供了许多便利,但广泛的验证可能会对应用性能产生影响,特别是在处理大型数据集时。...GraphQL的优点 客户端驱动:客户端可以精确指定所需数据,减少数据的过度和不足获取。 强类型系统:通过模式保证了数据的完整性和类型安全。 灵活性:能够适应多种数据源和应用架构。...Ramda的优点 不可变性:鼓励使用纯函数,避免副作用,提升代码的可预测性和易测试性。 简洁性:函数式风格通常导致代码更加简洁、易读。 可组合性:函数可以轻松组合,创建复杂的逻辑。

    1.9K10

    【译】73个超棒且可提高生产力的 NPM 包

    8.Hapi[26] Hapi 最初用于 Express 框架。使用 Hapi,你可以以最小的开销和完全开箱即用的功能构建功能强大、拓展性强的应用程序。...向Passport 提供一个身份验证请求,Passport 提供钩子来控制身份验证成功或失败时发生的操作。 22.Bcrypt[43] 它是可以帮助你生成哈希密码的库。...模板语言 29.Mustache[50] Mustache 是一种无逻辑的模板语法。它可以用于 HTML,配置文件,源代码等任何东西。它的工作原理是使用 hash 或对象中提供的值在模板中展开标记。...ESLint 是完全插件化的,每个规则都是一个插件,你可以在运行时添加更多内容。 50.Prettier[73] Prettier 是一种固执己见的代码格式化程序。...你可以传递选项对象从而决定其产生的颜色类型。 73.Pluralize[97] 该模块使用预先定义的规则列表,按顺序应用这些规则给指定单词单数或复数。

    7.3K30

    前端小白玩转koa(一)

    Hapi 简介:Hapi 是一个用于构建应用程序和服务的 Node.js 框架,它注重配置和插件系统,能够构建稳定、安全的 web 服务。...特点: 配置驱动开发:使用配置对象来定义服务器设置、路由、插件等。...例如,定义一个简单的路由配置: const Hapi = require('hapi'); const server = new Hapi.Server({ port...攒钱不是吝啬,可以投资自己提升自己 需求规划: 首页(banner、功能区、意见反馈入口)小程序登录授权&邮箱登录&手机号登录 添加/编辑账单(涉及收入/支出、消费类型、时间、金额、备注等等)api 新增自定义消费类型...ctx.status = 500; } } } module.exports = catchError; core/http-exception 这个构造函数的目的是创建一个特定的错误对象

    72020

    基于VuePress和github用搭建无服务器的博客、文档系统

    既可以当做博客系统、文档系统,项目介绍的系统,还有丰富的插件使用。 要用到的域名: http://{github pages的域名} (github pages)的域名。...简单的说它就是一个快速建设文档站点的工具,在简单配置好功能后,需要做的事情就剩下写好一个个 Markdown 文档,并且可以将其发布到github pages中 vuepress官网:https://vuepress.vuejs.org...[1/4] Resolving packages... warning @vuepress/theme-blog > @vuepress/plugin-pwa > workbox-build > @hapi.../joi@15.1.1: Switch to 'npm install joi' ... └─ zepto@1.2.0 Done in 113.09s....}.git" master:gh-pages cd - 关于主题和插件 修改配置文件: docs\.vuepress\config.js 添加主题: theme: 'vuepress-theme-note

    64710

    基于VuePress和github用搭建无服务器的博客、文档系统

    既可以当做博客系统、文档系统,项目介绍的系统,还有丰富的插件使用。 要用到的域名: http://vuepress.xgss.net (github pages)的域名。...简单的说它就是一个快速建设文档站点的工具,在简单配置好功能后,需要做的事情就剩下写好一个个 Markdown 文档,并且可以将其发布到github pages中 vuepress官网:https://vuepress.vuejs.org...[1/4] Resolving packages... warning @vuepress/theme-blog > @vuepress/plugin-pwa > workbox-build > @hapi.../joi@15.1.1: Switch to 'npm install joi' ... └─ zepto@1.2.0 Done in 113.09s....github.com:funet8/vuepress.xgss.net.git" master:gh-pages cd - 关于主题和插件 修改配置文件: docs\.vuepress\config.js 添加主题

    64710

    利用微搭搭建答题小程序

    应粉丝的要求,改造一下官方的答题小程序,可以实现自己添加题库 [在这里插入图片描述] 解题的思路的话是先安装模板,然我我们在一步步的分析一下模板做了什么工作,需要做哪些改造。...[在这里插入图片描述] 分享信息 [在这里插入图片描述] 这里需要注意的是分享是对象类型,我们需要先加字段,然后再往对象里添加属性 [在这里插入图片描述] 依次按照外部数据源的字段,给对象添加属性 [...怎么做这一步呢,就需要看他的源码 新增练习册方法 我们首先查看一下他的云函数是如果写的,在云函数旁边的查看详情按钮可以看到具体代码 [在这里插入图片描述] const Joi = require('joi...还有一个点就是出参的问题,一般你调试成功之后直接出参隐射就可以,省下一个个参数添加了。...我的建议是看是否官方后续会把题库开放了,到时候我们直接使用模板就好了,改造也不是不可以,但是花的精力就比较大一些。

    4.2K20

    干货 | Node.js 在转转的微服务实践(二)

    ,所有这些都隐藏至你的业务逻辑之后; 组件化:功能被表示为一组可以一起组成微服务的插件。...链接的调用按顺序执行,但不是按顺序执行,因此它们的结果可以按任何顺序返回。 扩展模式以增加新功能 模式使您可以轻松扩展功能。您只需添加更多模式,而不是添加if语句和复杂逻辑。...让我们通过添加强制整数运算的能力来扩展加法动作。为此,您需要向消息对象添加一个新属性 integer:true。...很多时间,提供一种可以让你不需要全盘修改现有 Action 函数的代码即可增加它功能的方法是很有必要的,比如,你可能想为某一个消息增加更多自定义的属性验证方法,捕获消息统计信息,添加额外的数据库结果中,...为了演示初始化,让我们向 math 插件添加简单的自定义日志记录,当插件启动时,它打开一个日志文件,并将所有操作的日志写入文件,文件需要成功打开并且可写,如果这失败,微服务启动就应该失败。

    2K30

    2024年不可错过的Node.js框架大盘点:让你的后端开发效率翻倍!

    注解,如@IsNumber()和@IsString(),充当守护者,确保每个参数都遵循指定的类型。例如,尝试将字符串值分配给"value"参数将触发错误,为你的应用程序添加了额外的保护层。...Hapi.js的突出特性 1、配置式设计 Hapi.js采用了配置驱动的设计,允许开发者通过配置对象轻松设置路由、定义设置和集成插件。...,并且可以通过options键向每个插件传递选项。...4、输入验证 Hapi.js非常重视输入验证。在路由的options对象中,开发者可以定义哪些输入需要验证。...它的路由系统旨在表达性强且功能强大,使开发者能够轻松定义和管理应用的各种终端。 Adonis.js的亮点特性 1、全栈MVC框架 Adonis.js遵循MVC(模型-视图-控制器)架构模式。

    8K10

    NestJs 管道(Pipe)

    管道(Pipe)的使用 Nestjs 中内置了下列的9个管道,利用这些管道可以轻松的验证路由参数、查询参数和请求正文是否合法,下面通过两个例子一起看一下管道的使用。...,此时客户端在传递非数字类型的ID时并不会收到合理的提醒,这样很容易造成服务端业务逻辑的异常,有入库的操作的话还会造成垃圾数据。...所以可将 ParseIntPipe 管道类直接添加到 @Param() 装饰器的第二位参数,如下图: @Controller('users') export class UsersController...age: Joi.number().required(), gender: Joi.bool().required(), }); 定义完 schema 后可以使用 nest g pi joi-validation...创建一个公共的管道,在 transform 函数中使用已经注入的ObjectSchema 对象提供的 validate 函数对请求参数 value 做验证,当验证不通过是抛出合理的异常,反之通过。

    1.2K20

    73个超棒且可提高生产力的 NPM 包

    8.Hapi[26] Hapi 最初用于 Express 框架。使用 Hapi,你可以以最小的开销和完全开箱即用的功能构建功能强大、拓展性强的应用程序。...向Passport 提供一个身份验证请求,Passport 提供钩子来控制身份验证成功或失败时发生的操作。 22.Bcrypt[43] 它是可以帮助你生成哈希密码的库。...模板语言 29.Mustache[50] Mustache 是一种无逻辑的模板语法。它可以用于 HTML,配置文件,源代码等任何东西。它的工作原理是使用 hash 或对象中提供的值在模板中展开标记。...41.Joi[64] 强大的 JavaScript schema 描述语言和数据验证器。 ?...ESLint 是完全插件化的,每个规则都是一个插件,你可以在运行时添加更多内容。 50.Prettier[73] Prettier 是一种固执己见的代码格式化程序。

    5.6K20
    领券