跳到主要内容

79 篇博文 含有标签「Fullstack」

查看所有标签

Intro to HTTP/2

· 阅读需 16 分钟
Kimi Gao
Fullstack & AI
C-8t70YXoAEShUL

简介

HTTP/2 主要目的是提高网页性能,最近几年比较火,将其单独抽成一块讲。2015 年,HTTP/2 发布。它不叫 HTTP/2.0,是因为标准委员会不打算再发布子版本了,下一个新版本将是 HTTP/3。

目前还有不少服务还是 HTTP/1.1,NodeJS 也是从 v10 才将 http2 转正。Express5.x 才开始支持 http/2。

可以打开谷歌首页看看,基本上都是 http/2 协议,简写成 h2

TypeScript Type Compatibility

· 阅读需 18 分钟
Kimi Gao
Fullstack & AI

TS 允许将一些不同类型的变量相互赋值,虽然某种程度上可能会产生一些不可靠的行为,但增加了语言的灵活性,毕竟它的祖宗 JS 就是靠灵活性起家的,而灵活性已经深入前端的骨髓,有时会不得不做一些妥协。

当一个类型 Y 可以被赋值给另一个类型 X 时,我们就可以说类型 X 兼容类型 Y

X (目标类型) = Y (源类型)

Primitive type compatibility

原始类型的兼容性主要关注三点:

Node.js 安装与版本管理

· 阅读需 2 分钟
Kimi Gao
Fullstack & AI

简单的说 Node.js 就是运行在服务端的 JavaScript。

  • Node.js 是一个基于 Chrome JavaScript 运行时建立的一个平台。
  • Node.js 是一个事件驱动 I/O 服务端 JavaScript 环境,基于 Google 的 V8 引擎,V8 引擎执行 Javascript 的速度非常快,性能非常好。

安装 nvm

推荐先安装 nvm,再通过 nvm 去安装 Node.js:

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash

npm vs. yarn

· 阅读需 2 分钟
Kimi Gao
Fullstack & AI

npm 与 yarn 常用命令对比

同操作同名的命令

npmyarn功能描述
npm runyarn run运行 package.json 中预定义的脚本
npm config listyarn config list查看配置信息
npm config set registry 仓库地址yarn config set registry 仓库地址更换仓库地址
npm inityarn init互动式创建/更新 package.json 文件
npm listyarn list查看当前目录下已安装的所有依赖
npm loginyarn login登录你的用户名、邮箱
npm logoutyarn logout退出你的用户名、邮箱
npm publishyarn publish将包发布到 npm
npm testyarn test(yarn run test)测试
npm binyarn bin显示 bin 文件所在的安装目录
yarn infoyarn info显示一个包的信息

yarn 使用

· 阅读需 20 分钟
Kimi Gao
Fullstack & AI

Get started

macOS

  1. 使用脚本安装,每次安装的都是最新版:
curl -o- -L https://yarnpkg.com/install.sh | bash

如需升级,再次运行此命令,然后会出现以下信息:

/Users/xxx/.yarn already exists, possibly from a past Yarn install.
> Remove it (rm -rf /Users/xxx/.yarn) and run this script again.

根据提示,由于已经安装了 yarn,所以需要先删除~/.yarn文件,然后再重新执行该命令,即可安装最新版 yarn。

TypeScript Generic Function

· 阅读需 6 分钟
Kimi Gao
Fullstack & AI

概述

泛型即不预先确定的数据类型,具体的类型在使用的时候才能确定。本节将学习ts中的泛型函数。

在软件工程中,开发定义良好且可重用的组件是非常重要的,因为这确保了程序的灵活性和长期可扩展性。使用泛型可以创建可重用的组件,一个组件可以支持多种类型的数据,而用户就可以根据自己的需要的数据类型来使用组件。

泛型函数

什么是泛型函数

概述中泛型的概念比较抽象,为了理解什么是泛型函数,我们可以结合一个例子来说明。

如下例所示,identity函数返回传入的参数,但是这个函数的可重用性很差,只能支持number类型。

function identity(arg: number): number {
return arg;
}

为了支持更多的类型,我们可以将参数设置为联合类型或者any类型。

TypeScript Interface: Extend or implement

· 阅读需 2 分钟
Kimi Gao
Fullstack & AI

Interface extends interface

Interfaces can extend one or more interfaces. This makes writing interfaces flexible and reusable.

interface Person {
name: string;
gender: string;
}

interface Employee extends Person {
department: string;
}

let empObj: Employee = {
name: 'Kimi',
gender: 'male',
department: 'Payment',
};

Type Script Interface: As Object Or Array Type

· 阅读需 6 分钟
Kimi Gao
Fullstack & AI

Interface in TypeScript can be used to define a type and also to implement it in the class. The most scenarios can be summarized as following:

  • as object type definition
  • as array type definition
  • as function type definition
  • interface extends interface
  • class implements interface

In this section, we mainly focus on the object and array type definition using interface. As function type definition will be introduced in Function: Types section.

Interface likes contract which defines the structure of the object, array, function and also class. However, we need to note that the TypeScript compiler does not convert interface to JavaScript. It uses interface for type checking.

TypeScript tsconfig.json Usage

· 阅读需 33 分钟
Kimi Gao
Fullstack & AI

TypeScript项目中,tsconfig.json文件指定了用来编译这个项目的根文件和编译选项,通过自定义tsconfig.json文件中的配置项,可以达到我们想要的编译结果。

tsc

当我们使用tsc命令对项目进行编译时,编译器会从当前目录开始去查找tsconfig.json文件,逐级向上搜索父目录。

下面我们将通过以下三个方面来讲述tsconfig.json配置:

  • 文件选项: filesincludeexclude
  • 编译选项: compilerOptions
  • 项目引用: extendsreferences

文件选项

files

files指定一个包含相对或绝对文件路径的列表,列举在files中的所有文件,编译器在编译时都会将它们包含在内。

// tsconfig.json
"files": [
"src/core.ts",
"src/index.ts",
]

当配置文件中的files字段值如上所示时,使用tsc命令编译时,src目录下的core.tsindex.ts文件会被编译为core.jsindex.js文件。

HTTP 响应状态码

· 阅读需 7 分钟
Kimi Gao
Fullstack & AI

目前 HTTP 在 Web 开发中被广泛使用,在 Web 开发中不同的 HTTP 响应状态码往往有不同的含义。在普通网站开发、分布式集群开发、团队协作方面,如果采用了 HTTP 作为组件之间交互的协议,遵守通用的响应状态码是很有必要的(一是有充分的信息量、二是避免歧义)。