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

为什么在调用api时必须返回函数,而在express (KeystoneJs)中调用视图控制器时却不返回?

在调用API时必须返回函数,而在Express(KeystoneJS)中调用视图控制器时却不返回的原因是由于它们所处的上下文和设计模式的不同。

首先,API是一种用于不同系统之间进行通信和数据交互的接口。当调用API时,我们需要返回一个函数,这是因为API通常会涉及异步操作和回调函数的使用。返回函数可以确保在异步操作完成后,通过回调函数将结果返回给调用方。

在云计算领域中,API通常用于请求云服务提供商的资源、执行计算任务等。由于这些操作可能涉及到网络通信、数据处理、安全验证等耗时的过程,因此需要使用回调函数来处理异步结果。返回函数的设计可以使得调用方能够方便地处理异步操作的结果,提高系统的响应性能和并发处理能力。

而在Express(KeystoneJS)中调用视图控制器时不返回函数的原因是,Express是一种基于Node.js的Web开发框架,它采用了MVC(模型-视图-控制器)的设计模式。在这种模式下,视图控制器负责处理HTTP请求和响应,将请求的数据传递给模型进行处理,并将处理结果渲染到视图上。

在Express中,请求经过路由的匹配后,会被发送到相应的视图控制器处理函数。这些处理函数通常不需要返回函数,因为它们会直接根据业务逻辑处理请求,生成相应的响应数据,并将其渲染到视图上。在这种情况下,不需要返回函数,而是直接返回处理结果即可。

需要注意的是,虽然在Express中不需要返回函数,但是在某些情况下仍然可能会使用到异步操作和回调函数。比如在处理数据库查询、调用第三方API等耗时操作时,可以使用Promise、async/await等方式来处理异步结果。

总结起来,API调用需要返回函数是为了处理异步操作和回调函数,而在Express中调用视图控制器时不返回函数是因为其设计模式和处理方式的差异。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Node.js的关注点分离

当你想要修改模型,最好可以直接通过浏览模型文件夹来修改,而不是包含模型、控制器、加载器和服务的单个文件找来找去。...当用户注册,他们的信息被保存在 MongoDB 数据库。当用户登录,我们将验证他们的信息,如果验证成功,就返回一个令牌。...它包含的函数可以被其他服务使用,因为与其服务构建这些函数,不如直接根据需要导入它们,保持代码整洁并加快开发速度。...例如,当你试图构建一个 try-catch 事件可以 catch 部分调用它,并提供必要的参数(如状态、数据和消息)。你可以重用这些定义,而不是在所有地方声明它们。...路由接收一个请求,将其转发到控制器,然后控制器将其转发到数据库,并向控制器返回一个报告。

5.9K40

手写Koa.js源码

与之相比,本文要讲的Koa就简洁多了,Koa虽然是Express的原班人马写的,但是设计思路却不一样。...所以到这里我们其实已经可以看出Koa和Express的一个重大区别了,那就是:Express使用老的API,兼容性更强,可以老的Node.js版本上运行;Koa因为使用了新API,只能在v7.6.0或者更高版本上运行了...this,这个有点意思,为什么返回this呢?...,这个函数必须符合http.createServer的参数形式,也就是 http.createServer(function(req, res){}) 复制代码 所以this.callback()的返回必须是一个函数...另外由于中间件返回前还包裹了一层Promise.resolve,所以我们所有自己写的中间件,无论你是否用了Promise,next调用返回的都是一个Promise,所以你可以使用await next

1.1K20

快速构建和交付网站:无头 CMS 推荐

Payload 提供了许多核心优势: 不需要依赖第三方 SaaS API,而是可以直接调用自己的 API。 可以使用自己的数据库并拥有数据所有权。...Payload 仅基于 Express 构建, Payload 之外你可以按照需求随意定制扩展。 如果您懂 JavaScript,那么学习如何使用 Payload 将会非常容易。...强大生态系统:借助 Keystone 的底层组件库和指南资源,构建享受到完善支持并减少常见问题困扰。...Headless CMS:带有 GraphQL API 的 Headless CMS, UI 构建 API 和内容模型。支持内容修订、本地化和细粒度权限控制。...无论是个人还是团队,处理复杂而庞大量级的内容,Sanity Studio 都将帮助您高效完成任务。

46020

SpringMVC的数据响应:编织美妙的返回乐章

起舞的ModelAndViewSpringMVC,ModelAndView是一个神奇的对象,它承载着控制器方法的返回值,将模型数据和视图信息一同传递给前端。...当用户访问/api/getSong,将得到一个JSON格式的响应:{ "songName": "Spring Serenade"}响应状态码:音符的情感色彩有时候,我们不仅需要返回数据,还需要传达一些特定的情感或状态信息...异常处理:和弦的优雅回响音乐的世界里,有时会出现一些不可避免的小插曲,而在编写Web应用程序时,处理异常也是不可或缺的一环。...而在同一个控制器,通过@ExceptionHandler注解的handleConcertFailedException方法,对特定的异常进行处理。...当该控制器方法被访问,只有来自该域名的请求将被允许。

30340

NestJS学习总结篇

Nest 在这些常见的 Node.js 框架 (Express/Fastify) 之上提高了一个抽象级别,但仍然向开发者直接暴露了底层框架的 API。...Nest控制器 Nest控制器层负责处理传入的请求, 并返回对客户端的响应。 [图片上传失败...(image-5b262f-1653558123233)] 控制器的目的是接收应用的特定请求。...但是,当它返回一个字符串,Nest 将只发送一个字符串而不是序列化它 Nest服务 Nestjs的服务可以是service 也可以是provider。...@module() 装饰器接受一个描述模块属性的对象: providers 由 Nest 注入器实例化的提供者,并且可以至少整个模块中共享 controllers 必须创建的一组控制器 imports...,如果不传递参数,必须返回一个空对象 } } Cookie的使用 cookie和session的使用依赖于当前使用的平台,如:express和fastify 两种的使用方式不同,这里主要记录基于express

2.2K42

vue面试题+答案,2021前端面试

通常模型对象负责在数据库存取数据 View(视图):是应用程序处理数据显示的部分。通常视图是依据模型数据创建的 Controller(控制器):是应用程序处理用户交互的部分。...通常控制器负责从视图读取数据,控制用户输入,并向模型发送数据 MVC 的思想:一句话描述就是 Controller 负责将 Model 的数据用 View 显示出来,换句话说就是 Controller...为什么vue组件data必须是一个函数?...对象为引用类型,当复用组件,由于数据对象都指向同一个data对象,当在一个组件修改data,其他重用的组件的data会同时被修改;而使用返回对象的函数,由于每次返回的都是一个新对象(Object...Mutation:是唯一更改 store 状态的方法,且必须是同步函数。 Action:用于提交 mutation,而不是直接变更状态,可以包含任意异步操作。

1.3K00

处理 JavaScript 的非预期数据

但是,也存在其它有缺陷数据的来源,比如数据库、函数返回的隐形空数据、外部 API 等。 我们稍后将展开讨论以如何不同的方式对待每一种的情况,要知道毕竟没什么灵丹妙药。...422 一样,对于分页查询,重要的是返回恰当的状态码,无论何时对于一个只返回包含了部分数据的请求,都应该返回 HTTP 206 Partial Content,也就是 “不完整的内容”;当用户到达最后一页且再没有更多数据...抛出 Errors 对于数据库和外部 API 的服务器代码使用 断言函数(Assertion Functions) 也是个好的实践,基本上这些函数的做法就是如果数据存在就返回否则报错。...该做法之所以好,是因为我们可以用这样一个函数找到的 user,可以被另外的函数用来检索位于其它数据库的相关数据,比如用户的详细资料;而当我们调用后一个检索函数,前置函数 findUser 已经 保证...用 Promise 包装隐性的空值、统一操作模式 用前置的 map 或 filter 过滤成组数据的非预期数据 在职责明确的控制器函数,各自抛出类型明确的错误 用这些方法处理数据就能得到连续而可预测的信息流了

1.1K30

AngularJs指令解密

factory_function(函数) 这个函数返回一个对象,其中定义了指令的全部行为。$compile服务利用这个方法返回的对象,DOM调用指令来构造指令的行为。...例子我们使用my-前缀(比如my-derictive)。 当AngularJSDOM遇到具名的指令,会去匹配已经注册过的指令,并通过名字注册过的对象查找。...controller(字符串String | 函数Function) 可选: * 字符串:以字符串的值为名字,查找注册应用控制器的构造函数 * 函数:直接定义内联的控制器 可以向控制器中注入如下服务...require会将控制器注入到其值所指定的指令,并作为当前指令的链接函数的第四个参数。 默认情况下,指令只会在自身的元素上查找控制器。可以用下面的前缀进行修饰,改变查找控制器的行为: ?...一个指令会将内部子指令的模板合并在一起成为一个模板函数返回,它无法查找父指令,只能通过模板函数访问内部子指令 ngModel ngModel提供更底层的API来处理控制器内的数据。

2.2K70

WinCC VBS 脚本的实用技巧问答 (TIA Portal )

脚本类型必须是 “ Function ” 才可以有返回值。... “ Parameter ” 表格您以创建脚本变量用来将内部变量或控制器变量传入脚本需要的时候。 组态函数返回值,脚本为脚本的名称分配表达式。 例如 组态函数类型,。...图. 02 脚本中使用 "HMI_Tag_1" 的值赋给"Parameter_1" ,"HMI_Tag_2" 的值赋给"Parameter_2" ,必须有一行脚本定义了返回值。...16、如何在脚本中保存变量值当他们两个脚本之间调用两个脚本间相互传递数据需要使用全局变量。全局变量可以是 HMI 或者 PLC 变量。 脚本定义的变量总是脚本结束删除。...对象的属性修改仅是暂时的,当屏幕更改后视图使用组态的配置。 21、如何在运行时选择一个画面对象(例如输入输出域)?

5.4K20

ExtJs十(ExtJs Mvc用户管理之二)

前言 为了防止意外情况,这里添加了try模块,错误的时候会将错误信息作为Msg关键字的值返回而在客户端脚本,目前是没有处理错误信息的代码的,因而在这里返回的错误信息,客户端是看不到。...在这里要处理的意外情况其实还有很多,大家可根据API的说明完善该函数。...这也是为什么添加数据后必须返回正确的id的一个重要原因。...第一种方式必须在proxy的api定义定义destroy配置项,之前的代码已经定义了,因而本示例将使用该方式。...因为Ajax提交不是根据返回的success值来调用success方法或failure方法的,只要不是页面错误,都会执行回调函数success方法,因而要自己根据返回的数据,调用decode方法将数据转换为对象

6.6K20

滴滴前端常考vue面试题_2023-02-28

对于最终的结果,两种方式是相同的 不同点: computed: 计算属性是基于它们的依赖进行缓存的,只有它的相关依赖发生改变才会重新求值; method 调用总会执行该函数。 如何定义动态路由?...ref返回的响应式数据JS中使用需要加上.value才能访问其值,视图中使用会自动脱ref,不需要.value;ref可以接收对象或数组等非原始值,但内部依然是reactive实现响应式;reactive...Vue为什么没有类似于ReactshouldComponentUpdate的生命周期?...生成阶段:将最终的AST转化为render函数字符串。 为什么 Vue3.0 采用了 Proxy,抛弃了 Object.defineProperty?...发送请求,配置请求的根路径 axios.defaults.baseURL = '/api' 方案二 此外,还可通过服务端实现代理请求转发 以express框架为例 var express = require

83530

webpack-dev-middleware 源码解读

它作为一个容器,将 webpack 编译后的文件存储到内存,然后在用户访问 express 服务,将内存对应的资源输出返回。...最后,我们只需要返回 express 的中间件就可以了,而中间件则是调用 middleware(context) 函数得到的。下面,我们来看看 middleware 是如何实现的。...middleware.js 此文件返回的是一个 express 中间件函数的包装函数,其核心处理逻辑主要针对 request 请求,根据各种条件判断,最终返回对应的文件内容: function goNext...ready(context, processRequest, req); }); 最后,中间件返回一个 Promise 实例,而在实例,先是定义一个 processRequest 方法,此方法的作用是根据上文中找到的...,而上文中我们说到 compile.hooks.done 上注册了回调函数 done,等编译完成之后,将会执行这个函数,并循环调用 context.callbacks。

46611

框架设计:如何基于 Egg 设计 Node 的服务框架

API 下面,对于数据的业务流转流转逻辑,在上面对于数据的调用和组装,这就是数据层面的天然分界点,而 Node 植入进去,也必须API 这一层与 Java 保持规范的统一和兼容,通过 RPC 无缝的调用才能来谈边界...为什么选择 Eggjs 小菜前端使用 Eggjs 作为 Nodejs 的基础服务框架之前使用过诸如 Koa、Express、Koa2、Thinkjs 等框架,其中与 Eggjs 最接近的当属奇舞团开源的...API 和常用工具函数以及常用的插件(redis、gateway)等统一集成基础框架 baseFramework ,由于 Egg 支持多级框架继承,所以我们可以根据基础框架 baseFramework...返回数据格式化 方法同上,我们可以 BaseController 定义统一的调用成功和调用失败返回函数,并在函数处理返回数据从而避免返回数据不规范的问题 3....有两种方式可以做到: 框架加载时调用 app.loader.loadToContext 将所有 controller 对应的参数校验函数挂载到 context 上, controller 执行相应的处理函数调用

1.3K21

1. 初始SpringMVC

MVC是一种软件架构模式(是一种软件架构设计思想,不止Java开发中用到,其它语言也需要用到),它将应用分为三块: M:Model(模型) V:View(视图) C:Controller(控制器) 应用为什么要被分为三块...SpringMVC,表单提交可以自动将表单数据绑定到相应的JavaBean对象,只需要在控制器方法的参数列表声明该JavaBean对象即可,无需手动获取和赋值表单数据。...视图解析:SpringMVC框架提供了多种视图模板,如JSP、Freemarker、Velocity等,并且支持国际化、主题等特性。而在Servlet开发需要手动处理视图层,增加了代码的复杂度。...调用相应的控制器:DispatcherServlet将请求发送给找到的控制器处理,控制器将执行业务逻辑,然后返回一个模型对象(Model)。...first 给视图解析器 视图解析器找到 /WEB-INF/templates/first.html 文件,并进行解析,生成视图解析对象返回给前端控制器DispatcherServlet 前端控制器DispatcherServlet

11610

第一章 Web MVC简介 —— 跟开涛学SpringMVC

到此我们了解了web开发的请求/响应模型,接下来我们看一下标准的MVC模型是什么。...Controller(控制器):接收用户请求,委托给模型进行处理(状态改变),处理完毕后把返回的模型数据返回视图,由视图负责展示。 也就是说控制器做了个调度员的工作,。...从图1-1我们还看到,标准的MVC模型能主动推数据给视图进行更新(观察者设计模式,模型上注册视图,当模型更新自动更新视图),但在Web开发模型是无法主动推给视图(无法主动更新用户界面),因为...、业务对象调用); 控制器视图选择与具体视图技术分离。...轻薄的web表现层:     做的事情越少越好,薄薄的,不应该包含无关代码;        只负责收集并组织参数到模型对象,启动业务对象的调用;        控制器返回逻辑视图名并由相应的应用控制器来选择具体使用的视图策略

96110

GraphQL 初体验,Node.js 构建 GraphQL API 指南

传统的基于 REST 的 API 方法,客户端发出请求,而服务端决定响应。 但是 GraphQL ,客户端可以精确地确定其从服务器获取的数据。...然后你可能需要进行另一个 API 调用以获取有关地址的信息,该信息存储另一张表。随着应用程序的发展,由于其构建方式的原因,你可能需要继续对不同位置进行更多的 API 调用。...虽然每一个 API 调用都可以异步完成,但你也必须处理它们的响应,无论是错误、超时甚至暂停页面渲染,直到收到所有请求数据。...另一部分涉及实际获取数据,这是通过使用解析器完成的,解析器是一个返回字段基础值的函数。 让我们看一下如何在 Node.js 实现解析器。...左侧窗格,你可以输入所需要的任何有效 GraphQL 查询,而在右侧获得结果。

8.3K40

如何将传统 Web 框架部署到 Serverless

例如创建函数指定的 handler 为 index.handler,那么函数计算会去加载 index.js 文件定义的 handler 函数 * event: 您调用函数传入的数据,其类型是 Buffer...("hello world"); } 差异对比 对比可以看出,传统应用,是启动一个服务监听端口号去处理 HTTP 请求,服务处理的是 HTTP 的请求和响应参数;而在 Serverless 应用...API 网关调用函数计算的事件函数,会将 API 的相关数据转换为 Map 形式传给函数计算服务。...4.入口函数引入适配层代码并调用 以上 3 步就将适配层核心代码完成了,整个过程就是:将 API 网关事件转换成 HTTP 请求,通过本地 socket 和函数起 Node.js Server 进行通信...最后我们入口函数所在文件 index.js 引入 server.js,先用 Server 构建一个 HTTP 代理服务,然后入口函数 handler 调用 server.proxy(event,

2.6K30

Vue.js高仿饿了么外卖App学习记录

Vue.js 的目标是通过尽可能简单的 API 实现响应的数据绑定和组合的视图组件,Vue.js 自身不是一个全能框架——它只聚焦于视图层。因此它非常容易学习,非常容易与其它库或已有项目整合。...的缩写,用一种业务逻辑,数据,界面显示分离的方法来写代码,view视图视图调用控制器到controller控制器控制器调用model,model返回数据给控制器,然后控制器将数据返回给view。...这是mvc的简单调用流程,mvc模式是单向的数据绑定,view视图调用model层,要通过中间层controller来实现。...,height控制视图窗口的高度,这个属性很少用,initial-scale为控制页面最初加载最理想的情况下缩放的等级,通常设置为1.0,可以是小数,maximum-scale为允许用户的最大缩放量...很早的时候,只有物理像素,没有独立像素,不缩放的前提,css的1px代表着一个物理像素。

2.3K11

与我一起学习微服务架构设计模式8—外部API模式

开发人员必须更新API Gateway才能对外公开服务的API。更新过程要尽可能轻量化,必要使用后端前置模式。...简单情况下,查询文档包含查询的名称,参数值及要返回结果的对象字段。 把模式连接到数据源 当GraphQL服务器执行查询必须从一个或多个数据存储检索所请求的数据。...通过将解析函数附加到模式定义的对象类型字段,可以将GraphQL模式与数据源相关联。GraphQL通过调用解析器函数检索数据,以此实现API组合模式。...GraphQL通过递归调用Query文档中指定的字段解析器函数来执行查询。首先,它执行查询解析器,然后递归调用结果对象层次结构字段的解析器。...为了让客户端调用GraphQL,你需要将它与Web框架集成,如Express Web

1.4K30
领券