搞懂JS变量提升
2019年9月17日 · 107 字 · 1 分钟
本文讲解Javascript变量提升引起的问题以及如何规避。 问题 今天看到一道有意思的面试题,考察的还真是JS的基本功,题目如下: var name = "world"; (function(){ if(typeof name === "undefined") { var name = "Jack"; console.
2019年9月17日 · 107 字 · 1 分钟
本文讲解Javascript变量提升引起的问题以及如何规避。 问题 今天看到一道有意思的面试题,考察的还真是JS的基本功,题目如下: var name = "world"; (function(){ if(typeof name === "undefined") { var name = "Jack"; console.
2019年9月10日 · 405 字 · 2 分钟
本文是NestJs的第九篇,讲解拦截器。 拦截器是一个实现了NestInterceptor接口且被**@Injectable**装饰器修饰的类。 拦截器是基于AOP编程思想的一种应用,以下是常用的功能: 在方法执行之前或之后执行额外的逻辑,这些逻辑一般不属于业务的一部分 转换函数执行结果 转换函数执行时抛出的异常 扩展函数基本行为 特定场景下完全重写函数的行为(比如缓存拦截器,一旦有可用的缓存则直接返回,不执行真正的业务逻辑,即业务逻辑处理函数行为已经被重写) 拦截器接口 每个拦截器都需要实现NestInterceptor接口的**intercept()**方法,该方法接收两个参数。方法原型如下:
2019年8月28日 · 387 字 · 2 分钟
本文是NestJs学习之旅的第八篇,讲解管道。 管道 熟悉Linux命令的伙伴应该对“管道运算符”不陌生。 ls -la | grep demo “|” 就是管道运算符,它把左边命令的输出作为输入传递给右边的命令,支持级联,如此一来,便可以通过管道运算符进行复杂命令的交替运算。
2019年8月27日 · 457 字 · 3 分钟
本文是NestJs的第七篇,讲解路由守卫。 传统的Web应用中去检测用户登录、权限判断等等都是在控制器层或者中间件层做的,而在目前比较推荐的模块化与组件化架构中,不同职责的功能建议拆分到不同的类文件中去。 通过前几篇的学习可以发现NestJs在这方面做的很好,传统的express/koa应用中,需要开发者去思考项目结构以及代码组织,而NestJs不需要你这样做,降低了开发成本,另外也统一了开发风格。 路由守卫 熟悉Vue,React的伙伴应该比较熟悉这个概念,通俗的说就是在访问指定的路由之前回调一个处理函数,如果该函数返回true或者**调用了next()**就会放行当前访问,否则阻断当前访问。
2019年8月26日 · 405 字 · 2 分钟
本文是NestJs的第六篇,讲解异常处理。 传统的异常处理 在前面的内容中我们介绍了NestJs的几大常用组件,但是有一点没有做出说明,当我们的应用需要中断此次请求且输出错误信息时,我们需要怎么做? 这个问题有两种解决办法: services层直接返回中断请求的响应对象,controller直接输出该对象即可
2019年8月24日 · 355 字 · 2 分钟
Socks5代理协议 或许你没听说过socks5,但你一定听说过SS,SS内部使用的正是socks5协议。 socks5是一种网络传输协议,主要用于客户端与目标服务器之间通讯的透明传递。 该协议设计之初是为了让有权限的用户可以穿过防火墙的限制,访问外部资源。 1. RFC地址 socks5协议规范rfc1928 socks5账号密码鉴权规范rfc1929 2.
2019年8月23日 · 271 字 · 2 分钟
本文是NestJs学习之旅的第五篇,讲解中间件。 中间件 中间件是在路由处理程序之前调用的函数。中间件函数可以访问请求和响应对象。 使用过koa和express的朋友应该知道,中间件是一个很核心的功能,尤其是koa,核心就是中间件,连路由功能都是由中间件提供的。 中间件可以提供以下功能:
2019年8月22日 · 270 字 · 2 分钟
本文是NestJs学习之旅的第四篇,讲解模块系统。 模块 NestJs中模块是构建和组织业务单元的基本元素。使用@Module()装饰模块来声明该模块的元信息: 本模块导出哪些服务提供者 本模块导入了哪些依赖模块 本模块提供了哪些控制器 每个NestJs至少有一个跟模块,这个就是app.
2019年8月21日 · 363 字 · 2 分钟
本文是NestJs学习之旅的第三篇,讲解服务提供者。 简介 服务提供者是NestJs一个非常重要的概念,一般来说,被装饰器@Injectable()修饰的类都可以视为服务提供者。服务提供者一般包含以下几种: Services(业务逻辑) Factory(用来创建提供者) Repository(数据库访问使用) Utils(工具函数) 使用 下文中将以Services来说明服务提供者的具体使用。
2019年8月20日 · 378 字 · 2 分钟
本文是NestJs学习之旅的第二篇,主要讲解控制器。 MVC 说到控制器就不得不说经典的MVC架构。 MVC模式(Model–view–controller)是软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model)、视图(View)和控制器(Controller)。 控制器(Controller)- 负责转发请求,对请求进行处理,处理完毕后输出响应。 视图 (View) - 界面设计人员进行图形界面设计 模型 (Model)- 数据库查询和业务逻辑 可以看到控制器起着承上启下的作用,是Web开发中必备的一环,视图和模型倒不是必须的,理由如下: