vortesnail
vortesnail
# 原型链继承详解 #### 前言 在大多数面向对象编程语言中,继承是基于类来实现的,但是在JavaScript中是基于原型链来实现的,何为原型链,今天我们一步一步来解析它。 #### 两个函数对象,父类型和子类型 我们首先来创建两个函数对象,并且希望子类型能继承父类型的某些方法,代码如下,很简单: ```javascript //父类型 function Supper() { this.supProp = "Supper Property"; } Supper.prototype.showSupperProperty = function() { console.log(this.supProp); } //子类型 function Sub() { this.subProp =...
当你想把开发的前端项目和 Node 服务端项目部署至云服务器上,以便于别人能够公网访问,相信大多数开发者都要经历一个查来查去的过程,还容易踩坑。这篇文章会一步一步地教你如何做,可以让你少走些弯路。 在开始之前,我先介绍下我的项目技术栈: - 前端:vite4 + vue3 + vue-router - 服务端:koa2 + sequelize + mysql2 很常规,其实这篇教程和技术栈是没有任何关系的,毕竟我们要部署的前端项目只是打包后的静态资源文件而已,服务端进程管理器目前最好的选择也就 pm2 。 ## 购买云服务器 现在的云服务器选择很多,比如腾讯云、阿里云等其它云,这里讲下阿里云服务器 ECS 的购买,后续的服务器配置等操作都是基于我们购买的云服务器进行的,所以如果你购买的不是阿里云的,可能本教程只能作为一个参考。 访问 [阿里云服务器 ECS 主页](https://www.aliyun.com/product/ecs) 往下翻到产品规格,有许多种类型的服务器供我们选择,我是购买了共享型下的 2...
在自己建站的过程中,想要实现登录功能其实并不是一个简单的活儿,它的主要难点不在于技术实现,而是难在独立开发者往往没有太多资金投入。 举个例子,如果我现在要实现一个手机号码短信登录,先不考虑用户意愿问题,我们需要购买的第一个第三方服务就是短信发送的服务,每发送一条短信验证码,都是真金白银的钱,为了防止被人恶意刷量,还要购买行为验证码(或风控相关的)服务,这背后要多少钱大家可以自行了解下。 换个思路,我们支持微信登录好了,结果一查要注册公司盖章提交审核,才能使用微信的第三方登录功能,还要每年交个 300 元。所以可选择的不多,Github OAuth 登录是我的首选项,因为大多数开发者都会有自己的 Github 账号,而 Github OAuth 登录又没有类似微信的各种限制。 不过问题是,Github 登录过程中要调用它的 OpenApi,如果你和我一样买的是大陆的云服务器,会经常超时,这非常令人头疼,修改 host 什么的根本卵用没有,买国外的服务器又死贵。不过好在阿里云的 FC(云函数)产品还是挺便宜的,接下来就介绍下如何利用云函数调用 OpenApi,而国内服务器又能调该云函数获取返回结果。 ## 前提 因为我购买的是阿里云的 FC 产品,所以你最好也是和我一样,有一个阿里云账号,如果你还没购买,新用户可以试用三个月。 ## 打开控制台 找到产品**函数计算 FC**,点击【管理控制台】。 进入之后,你会看到账号下的基础信息。 ##...
# Nest.js 入门与核心原理解析,从 IoC、DI、装饰器到元编程 使用 Node.js 开发服务端应用有很多方式,比如最简陋的使用内置 `http` 模块的 `createServer` api 即可快速创建一个服务。 如果是偏简单点的服务端应用还可以使用 Express 或 Koa 这种轻量封装的库。想要开发大型的、企业级别的服务端应用,那就得选择比如 Egg、Nest 或 Midway 这类企业级别的框架。 目前企业级框架中 Nest 是 Github 上 star 数量最多的,相当于把其它的按在地上打的差距,实际上手的开发体验也很棒。 > 上图统计时间截止到...
## 引言 作为一个前端,工作大部分时间都是在和页面打交道,但如果有一天你有一个很好的产品 idea,前后端都需要,就尴尬了,一般这个时候有 3 条路走: - 放弃,心里想着这产品哪怕做出来可能也没人用,还要消耗自己大部分时间和人力,白费力气。 - 找一个认识的后端,说动他(她)并一起实践这个伟大的想法。 - 前后端都自己做,不过要花大量时间去涉猎服务端相关知识,并且一个人做两个人的活儿,累死累活最终实现这个伟大的想法。 我的建议还是首先尝试一下第三条路(如果你觉得这个想法再不快点实现就亏了一个亿,你也可以首先选第二条路),先别想着放弃,一方面哪怕最后不成功没人用,但是从技术角度讲,这不是刚好扩展了自己的知识面吗?而且万一咱的产品🔥了呢? 想搞服务端,前端最好的选择无非就是 NodeJS 了,语法和我们写前端时的 JavaScript 是一样的,只需要了解相关的 node 模块即可上手编写服务端代码。而我们最先应该了解的就是 `http` 模块,它能让我们快速启动一个服务。但是因为历史包袱以及考虑到广泛的适用性,原生的模块多少是需要二次封装一下才能很好地服务于我们开发者。 ## Koa2 原理实现 `Koa2` 就是这么个封装了原始 `http` 模块,拥有更好的心智模型的框架,接下来我会从原理实现入手,讲清楚如何实现一个基本的 `Koa2`...
## 背景 现在 TypeScript 已经是前端程序员的必备技能了,只会简单的类型注解有时候是无法更好发挥 TypeScript 的优势的,antfu 有一个开源库 Type Challenges,里面有许多类型体操题,然而目前 Type Challenges 官方提供了三种刷题方式 通过 [TypeScript Playground](https://www.typescriptlang.org/play?&install-plugin=@type-challenges/playground-plugin#code/PQKgUA7ABAtFBKBTAhgEwPYDsA2BPMMhRMYARrlAIKYAuAFlhQGICuUAFAALK0BmLASigBiFAGcKw0iwCW2GjBmYRAJxQYck9KQBWiAMYKA1olxiwYYVagBFFojE0ZWCwEkAtgAdsid4lpQ9IhQ0nIKSlAABkhoWHgAPAAqAHyRUADm-ogqMvpQAO4y9OgsNFAsYkrpUEUAdBYAwliOKiyGYlDIgbiewYX0ndjYUJ4q6L0qTg5Q6LxQiVBiiGU06FBqsZoANFB+PFWBdMGj49lTHbOHwfrNNK2GiKjdvVD6PJjoZaTBG2KV6ZhHvUwEx0CooIgAB7ILw+ABcFkiSJo5iUNGyvGQ+mCiXQGCgAG8wFBAkV4Ys7lViVBUA59DlPE4sHCKTlMOkwABfCw3TCOQJ49AsgCyuBiGgSuIwySgAF5CdSnDRyQAiAASphVW2ptLE9JkjOcmBZKt46G0yBUKq5FlWGFqSp8cqg6sQQ3QKqgwGAUAAoioxioWW9MB8yr9-souhsJRQThMaPg7eharr9YasM6VaRLaCPV6ff7A8H3p91uJI51y5s8CMxgn8EjIhYZQA1GSIfIzZQAcSKapYpBZdBoNE8Yjh3pR+jotR0YlqYPSwAgYBAwAsoCgAH1d3v93uoABNErgpq0qAatQ7g+37dQde2nrBUXiuK4JIy+U8fBgLd3295gcMoGmQJYOgAg8Hw3GQvDBFZn0JP0AEcWGQbAdl9SFekMKBOSgXgxncKAAHJOETXoYBndCfHZBxgFKOQxBIp8XjecDnQAbWpLCcJoeJfVQ9D4lfdR3ySQUAEZkh2N9NAkjBpOSGSwAAXQsNEMSxHEpIVElHUQFkWipEk0wZJljVZEzXnQWFlkeFlSHNHweGpPwaGQFkiRJElkFKBggys9lqW5bk-xAG9IN3KBWEmI5wQAZXRcdIqi6DwupGUEroS1glwU9FnQbBGOaYdR3HSdgGnWd50XFRlwgYAeDEfJskyqB207QriosicoBHMcJynPUaoXJcV2AMQipKvl2uFMFggaHKhn8TI+oGirhpnOcxvqtcNyAA) 方式,利用 TypeScript 官方在线环境来刷题。 克隆 [type-challenges](https://github.com/type-challenges/type-challenges) 项目到本地进行刷题。 安装 [vscode](https://marketplace.visualstudio.com/items?itemName=YRM.type-challenges) 插件来刷题。 这几种方式其实都很方便,不过都在题目的可读性上有一定的不足,还对开发者有一定的工具负担、IDE 负担。 针对这个问题,也是建立 TypeRoom 的第一个主要原因之一,就是提供直接在浏览器端就能刷题的在线环境,并且从技术和布局设计上让题目描述和答题区域区分开来,更为直观和清晰。不需要额外再做任何事,打开一个网址即可直接开始刷题,并且你的答题记录会存储到云端。...