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

Angular 应用是怎么工作的?

因此,bootstrapping 就像是一种装置或说一种加载的技术,启动 Angular 应用。当我们加载组件或者模块的时候,它将被渲染。 现在,我们找到了应用入口。...platformBrowserDynamic().bootstrapModule(AppModule) 也许你注意到了,上面的方法中还传递了参数 AppModule。真正的应用代码!...是的,应用的代码都包含在这里面。AppModule 包含了声明(declarations),组件(components),服务(services)和应用相关的其他代码。...{ } 在这个 AppModule 中,在 @NgModule 装饰器中,我们有一个引导 bootstrap 数组,表明加载 AppComponent。...那么其他的页面或者组件是怎么渲染的呢? 首先, index.html 是一直被渲染的。不管我们做什么,index.html 都是主要的模块。 标签里面的内容的更改是基于 URL的。

1.5K30

学习NestJS开发小程序后台(一)

在 main.ts 文件中引入并配置 TypeORM: import { NestFactory } from '@nestjs/core'; import { AppModule } from '.../entities/user.entity'; export class UserRepository extends Repository {}五、在模块中配置 TypeORM 和使用数据访问层在对应的模块文件中...二、注册全局错误过滤器在main.ts文件中注册全局错误过滤器: import { NestFactory } from '@nestjs/core'; import { AppModule }...你可以根据实际需求进一步扩展错误处理逻辑,例如记录错误日志、发送通知等。错误日志在 NestJS 中可以添加错误日志来记录应用程序中的错误信息,以便于调试和故障排查。...', error.stack); } }}这样,在应用程序中发生错误时,错误信息会被记录到日志文件中,同时也可以在其他地方使用日志服务记录各种信息,方便调试和故障排查。

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

    Angular 2 架构(上)

    几个重要的属性如下: declarations (声明) - 视图类属于这个模块。 Angular 有三种类型的视图类: 组件 、 指令 和 管道 。...exports - 声明( declaration )的子集,可用于其它模块中的组件模板 。 imports - 本模块组件模板中需要由其它导出类的模块。 providers - 服务的创建者。...本模块把它们加入全局的服务表中,让它们在应用中的任何部分都可被访问到。 bootstrap - 应用的主视图,称为根组件,它是所有其它应用视图的宿主。只有根模块需要设置 bootstrap 属性中。.../app.module'; platformBrowserDynamic().bootstrapModule(AppModule); 组件(Components) 组件是一个模板的控制类用于处理应用和逻辑页面的视图部分...以下是一个简单是实例: 网站地址 : {{site}} 在Angular中,默认使用的是双大括号作为插值语法,大括号中间的值通常是一个组件属性的变量名。

    1.4K10

    模块化开发 Angular 应用

    想要更好地理解 Angular 应用程序所有的不同构建的模块? 在这篇文章中,我们将走进模块的内容。 在 angular 应用中,模块是共享和重用代码的好方法。...这个程序只有一个模块,就是 AppModule。 现在,为我们应用程序添加登录内容。登录内容将包含一个登录的页面和一个注册的页面。也许会有一个帮助的页面。每个页面都是以组件的方式呈现。...AuthenticationService 复制代码 由于这些页面是完全独立的,并且与我们应用程序的内容页面无关。我们决定将它们捆绑到一个单独的模块中。...减少加载时间的一种方法是将应用程序拆分成模块。 当你以惰性方式加载模块时,它不会包含在初始的程序中。相反,它仅在需要的时候才下载。为啥要下载我们还没用得上的组件呢,是吧? 那么,它是怎么工作的?...如果我们想在特定的路由上延迟加载模块,我们可以使用 loadChildren 属性。这里我们指定模块的路径和名称,用 # 分隔开。 之后,我们可以在我们的 AppModule 中导入配置模块。

    3.1K10

    Angular 2 模块(Modules)

    imports - 声明这个模块的组件模版需要的、其他模块声明导出的类。 providers - 这个模块的服务创建器,是全局服务集合的一部分,可以被应用的任意部位访问到。...开发中你可以在main.ts中引导AppModule,如下所示: import { platformBrowserDynamic } from '@angular/platform-browser-dynamic.../app.module'; platformBrowserDynamic().bootstrapModule(AppModule); Angular 模块 对比 JavaScript 模块 The Angular...在 JavaScript 中, 每个 文件就是一个模块,所有定义在文件中的对象都属于模块。模块定义公有对象通过关键词export标记这些对象。.../app.component'; export class AppModule { } 在网上学习更过关于Javascript模块系统的知识。 这是两种不同的和完整的模块系统,在应用中同时使用它们。

    88870

    使用NestJs、GraphQL、TypeORM搭建后端服务

    在我们过去常用的RestFul API中,我们可能在不同的业务中需要调用同一个接口,但是各自所需的数据有不同的情况下,服务端为了同时满足两个需求则提供了更多的字段,这样导致了一个两个业务请求到的数据都包含了自己不需要的字段.../app.module'; async function bootstrap() { const app = await NestFactory.create(AppModule); await...他们的值都为一个数组,方便添加多个模块功能。 import { Module } from '@nestjs/common'; import { AppController } from '....logging:日志 entities:要加载并用于此连接的实体。接受要加载的实体类和目录路,值为一个数组。...4.3、声明pokemon模块,并引入到App中 到目前为止,我们以及创建好了TypeORM的entity实体,TypeGraphQL的ObjectType,现在我们先声明PokemonModule import

    6.7K10

    NestJS学习总结篇

    ()和 @All() 在Nestjs中获取Get传值或者Post提交的数据的话我们可以使用Nestjs中的装饰器来获取。...但是,当它返回一个字符串时,Nest 将只发送一个字符串而不是序列化它 Nest服务 Nestjs中的服务可以是service 也可以是provider。...事实上,根模块可能是应用程序中唯一的模块,特别是当应用程序很小时,但是对于大型程序来说这是没有意义的。在大多数情况下,您将拥有多个模块,每个模块都有一组紧密相关的功能。...导入模块的列表,这些模块导出了此模块中所需提供者 exports 由本模块提供并应在其他模块中可用的提供者的子集 // 创建模块 posts nest g module posts Nestjs中的共享模块...path String 表示cookie影响到的路径,如:path=/如果路径不能匹配的时候,浏览器则不发送这个cookie secure Boolean 当 secure 值为 true 时,cookie

    2.3K42

    一个参数验证,学会 Nest.js 的两大机制:Pipe、ExceptionFilter

    整体架构如图: 整个 IOC 容器内有多个 Controller、Service、Respository 等实例,分散在不同的 Module 中。...这就是 Pipe 的作用。 所以,我们在 pipe 中对参数做 validate 就行了。...pipe 中调用 validate 的方法,如果有错误就抛异常: import { PipeTransform, Injectable, ArgumentMetadata, BadRequestException...Nest.js 支持异常过滤器(ExceptionFilter),可以声明对什么错误做什么响应,这样应用想返回什么响应只需要抛相应的异常。...异常过滤器的形式是一个实现 ExceptionFilter 接口的类,通过 Catch 装饰器声明对什么异常做处理。实现它的 catch 方法,在方法内拿到 response 对象返回相应的响应。

    1.4K10

    Nest.js 从零到壹系列(一):项目创建&路由设置&模块

    路由指向 打开 src 下的 main.ts,不出意外,应该会看到下列代码: import { NestFactory } from '@nestjs/core'; import { AppModule.../app.module'; async function bootstrap() { const app = await NestFactory.create(AppModule); await...局部路由前缀 路由还可以设置局部和全局的前缀,使用前缀可以避免在所有路由共享通用前缀时出现冲突的情况。...还是 app.controller.ts,在 @Controller()写入 lesson-1,这样的话就表示当前文件中,所有的路由都有了前缀 lesson-1: // src/app.controller.ts...在本篇中:Service 负责处理逻辑、Controller 负责路由、Module 负责整合。 通过实战可以看出,Nest 还是相对简单的,唯一的障碍可能就是 TypeScript 了。

    5.4K51

    NestJS 7.x 折腾记: (2) 环境变量及配置维护

    前言 在写后端的时候,我们一般提倡配置文件分离. 所以.env就可以很方面来维护我们的环境变量, 封装对应的工厂函数也能组合更复杂的配置!...比如我们用镜像(Docker),就可以外部映射配置文件目录; 达到不同环境使用差异化配置的需求!(运行时加载是允许的!)...: Array; // 加载环境变量的工厂函数,可以用于组合复杂的配置 expandVariables?...abortEarly: true, // 如果为true,在遇到第一个错误时就停止验证;如果为false,返回所有错误。默认为false。...匹配数组有效值,不匹配默认用默认值~ 若是环境变量使用异常,或者转换异常就会抛出类似的错误 image.png ConfigModule 之 load 这个可以用来加载组合的配置函数, 比如你一些配置分散在多个

    4.3K10

    Nest.js 从零到壹系列(七):讨厌写文档,Swagger UI 了解一下?

    3000),不出意外,会看到下图: 这就是 Swagger UI,页面列出了我们之前写的 Router 和 DTO(即图中的 Schemas) 映射 DTO 点开 RegisterInfoDTO,发现里面是空的...,接下来,我们配置一下参数信息,在 user.dto.ts 中引入 ApiProperty,然后添加到之前的 class-validator 上: // src/logical/user/user.dto.ts...: string | number; } 保存,刷新页面(该页面没有热加载功能),再看看效果: 看到已经有了字段信息了,但是我们的 role 字段是【可选】的,而文档中是【必填】的,接下来再完善一下描述...,看到用户相关的都在一个栏目下了: 在 Swagger 中登录 接下来,我们测试一下注册接口的请求,先编辑参数,然后点击 Execute: 然后看一下返回参数: 看到返回的是 401 未登录。...: 将 Responses body 中的 token 复制出来,然后将页面拖到顶部,点击右上角那个带锁的按钮: 将 token 复制到弹窗的输入框,点击 Authorize,即可授权成功: 注意:这里显示的授权

    4.7K10

    用VSCode开发一个asp.net core 2.0+angular 5项目(4): Angular5全局错误处理

    之所以发生这个错误, 是因为AppErrorHandler在angular引入Toastr模块之前就初始化了....并没有弹出错误信息!!!!, 但是来回切换菜单后, 开始显示错误信息了, 貌似有点迟钝. 这是什么原因呢?...比如angular的一个component有一个click事件, click()方法里更新了某些属性的值, 这个时候angular就需要进行变化检测, 如果真的发生了变化, 那么angular 就会更新...Zone.js就是一个执行的上下文, 它可以在不同的异步操作之间进行持久性传递. Angular就使用了这个库, 在它之上建立了ngZone这个模块....'); }); } } 回到浏览器的错误页面, 触发错误后, 大约几分钟后, 来到sentry.io网站查看: ?

    1.5K50

    Nest.js 从零到壹系列(四):使用中间件、拦截器、过滤器打造日志系统

    首先,一个良好的服务端,应该有较完善的日志收集功能,这样才能在生产环境发生异常时,能够从日志中复盘,找出 Bug 所在。 其次,要针对项目中抛出的异常进行归类,并将信息反映在接口或日志中。...打开 pm2InstanceVar: 'INSTANCE_ID', // 会根据 pm2 分配的 id 进行区分,以免各进程在写日志时造成冲突 }; export default log4jsConfig...内置的异常层负责处理整个应用程序中的所有抛出的异常。当捕获到未处理的异常时,最终用户将收到友好的响应。...对于典型的基于 HTTP REST/GraphQL API 的应用程序,最佳实践是在发生某些错误情况时发送标准 HTTP 响应对象。...已经有了明显的区别,再看看 errors.log,也写进了日志中: ? 如此一来,代码中未捕获的错误也能从日志中查到了。

    6.6K73

    无需框架,就能实现微前端,理解起来通俗易懂

    它们帮助我们在多个框架(甚至是Vanilla JS)中编写应用程序,并使用相同的路由(router)和域(domain)加载它们。...我们可以开发包含认证和路由实现的主父应用程序,然后我们可以继续添加多个独立工作的子应用程序,可以在相同或不同的页面加载。...例如,假设仪表板上有三个功能,我们也可以为每个各自的功能提供三个微前端,仪表板作为公共部分。 页面 在一些应用程序中,功能按页面划分。...我们可以按页面来划分应用程序,使用这种方法时,每个页面都有独立的功能。 域 应用程序也可以按域划分。例如,我们可以根据我们的需求将应用程序划分为核心域、支付域或配置文件域。...在单个页面上使用多个框架 项目结构 我们将构建三个模块,即React中的主应用、React中的子应用和Angular中的子应用。

    2.1K20

    Nest.js 实战系列四:使用中间件、拦截器、过滤器打造日志系统

    首先,一个良好的服务端,应该有较完善的日志收集功能,这样才能在生产环境发生异常时,能够从日志中复盘,找出 Bug 所在。 其次,要针对项目中抛出的异常进行归类,并将信息反映在接口或日志中。...打开 pm2InstanceVar: 'INSTANCE_ID', // 会根据 pm2 分配的 id 进行区分,以免各进程在写日志时造成冲突 }; export default log4jsConfig...内置的异常层负责处理整个应用程序中的所有抛出的异常。当捕获到未处理的异常时,最终用户将收到友好的响应。...对于典型的基于 HTTP REST/GraphQL API 的应用程序,最佳实践是在发生某些错误情况时发送标准 HTTP 响应对象。...已经有了明显的区别,再看看 errors.log,也写进了日志中: ? 如此一来,代码中未捕获的错误也能从日志中查到了。

    5.9K20
    领券