手动搭建koa+ts项目框架(基础篇)

news2024/11/23 21:25:06

文章目录

  • 前言
  • 一、TS配置文件
    • 1、全局安装TypeScript
    • 2、项目根目录创建Typescript配置文件
  • 二、项目初始化配置文件(package.json)
    • 1、初始化配置文件
    • 2、安装依赖
  • 三、开启简单的服务API
    • 入口文件
    • 新增脚本
  • 总结
    • `如有启发,可点赞收藏哟~`


前言

为什么要使用Node.js+TypeScript

  • TypeScript是一个JavaScript超集。它集成了JavaScript特性,并具有静态类型和类型检查等补充特性。
  • Node.js是非常流行的JavaScript框架。Node.js有一个强大的NPM(Node Package Manager)生态系统,提供开源代码(包),你可以在你的任何Node.js项目中使用。
  • Node.js非常适合制作服务器端应用程序,但它缺乏一些现代组件,如类型检查。Node.js的代码库也可能非常难以维护。
  • Typescript支持现代编码风格,如静态类型和类型检查。它是为构建广泛和高水平的应用程序而制作的。
  • 这使得你可以用强大的类型检查来编写基于服务器端的应用程序,这使得你可以避免运行时的类型错误和其他Typescript的优势,并充分利用Node.js的优势。

一、TS配置文件

1、全局安装TypeScript

安装typescript到全局

npm i typescript -g

查看安装版本

tsc --version

在这里插入图片描述

2、项目根目录创建Typescript配置文件

  • 新建./src/indexts文件
  • 初始化tsconfig.json文件
tsc --init
  • 根据实际需要修改配置文件

例如
rootDir:“/src”指定项目编译入口,实际指定./src/index.ts文件
outDir: "./dist"指定输出文件夹为dist
compilerOptions(编译器选项)同级新增exclude(排除)配置如下

{
	"compilerOptions": {
		...
		"module": "commonjs",                                /* Specify what module code is generated. */
	    "rootDir": "./src",                                  /* Specify the root folder within your source files. */
	    "moduleResolution": "node10",                     	 /* Specify how TypeScript looks up a file from a given module specifier. */
	    "outDir": "./dist",                                  /* Specify an output folder for all emitted files. */
	},
	"include": [
	   "src/**/**.ts",
	],
	"exclude":[
	    "./node_modules"
	  ]
}

在这里插入图片描述

二、项目初始化配置文件(package.json)

1、初始化配置文件

项目根目录执行命令npm init
在这里插入图片描述

2、安装依赖

koa框架

npm i koa -S
and
npm i @types/koa -D // 支持TS

使用es6的import导入模版

如果项目使用require需要安装@types/node让项目支持require导入模块

npm i @types/node -S

require与import的区别

  • 1、require是CommonJS规范的模块化语法,import是ECMAScript 6规范的模块化语法;
  • 2、require是运行时加载,import是编译时加载;
  • 3、require可以写在代码的任意位置,import只能写在文件的最顶端且不可在条件语句或函数作用域中使用;

在这里插入图片描述

三、开启简单的服务API

入口文件

/src/index.ts文件

import Koa from "koa";

const app = module.exports = new Koa();

app.use(async function (ctx: Koa.Context) {
  ctx.body = 'Hello World';
});
if (!module.parent) app.listen(3000);

新增脚本

  • package.json
    新增build脚本(先使用tsc转译TSJS,然后使用node命令开启编译后的js文件)
{
  ...
  "scripts": {
    "build": "tsc && node ./dist/index.js",
    ...
  },
  ...
}
  • 执行npm run build
    在这里插入图片描述
  • 可看到成功生成dist文件
    在这里插入图片描述
  • 打开浏览器访问localhost:3000
    在这里插入图片描述

总结

按照上述步骤操作,即可开启TS+Koa项目啦~

如有启发,可点赞收藏哟~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1304535.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【玩转TableAgent数据智能分析】利用TableAgent进行教育数据分析

文章目录 前言九章云极(DataCanvas)介绍前期准备样例数据集体验1. 样例数据集-Airbnb民宿价格&评价 体验1.1 体验一1.2 体验二 教育数据的分析(TableAgent&ChatGLM对比)1. 上传文件2. 数据分析与对比2.1 分析一2.1.1 Tabl…

【腾讯云AI绘画】与AI绘画和解,和AI绘画共成长

前言 六月份的时候,买了腾讯AI绘画的资源包。可当通过API去使用AI绘画后,我顿时就被整破防了,于是写了一篇文章,算是无声控诉。被腾讯云AI绘画整破防了! 再回首,腾讯绘画不仅提供了API调用,还构…

伪原创API,一文快速了解伪原创API

伪原创API,听起来可能对许多人来说是一个陌生的术语。然而,在当今数字化时代,尤其是在内容创作和网络营销领域,伪原创API正逐渐崭露头角。在本文中,我将向您深入介绍伪原创API是什么,以及它如何在实际应用中…

中国大模型名录汇编(2023)

随着ChatGPT应用的现象级火爆,AI大模型正在迅速发展,引发了新一轮人工智能发展浪潮。大模型基座化趋势或将对人工智能产业链和全球市场竞争格局产生深刻影响。在技术方面,大模型在交互、理解和生成等方面表现出了显著的性能提升。在产业发展方…

Linux:符号和符号表

文章目录 什么是符号?什么是符号表?全局符号和本地符号1. 全局符号:symtab符号表 2. 本地符号: 符号在汇编阶段符号在链接阶段1.由模块 m 定义并能被其他模块引用的全局符号。2.由其他模块定义并被模块 m 引用的全局符号。3.只被模…

AI跨界学习,不再是梦!

大家好!今天给大家推荐的 GPTs 是【行业知识脉络】,帮助大家快速了解某个领域的脉络,并提供足够的学习资料和建议。 在AI时代,从小白到专家的1万小时定律即将失效,用少于1千小时掌握行业知识树和其核心概念是如何学习的…

Python Selenium3 自动化测试实战:构建高效测试项目

💂 个人网站:【 海拥】【神级代码资源网站】【办公神器】🤟 基于Web端打造的:👉轻量化工具创作平台💅 想寻找共同学习交流的小伙伴,请点击【全栈技术交流群】 在当今软件开发领域,自动化测试成为…

310v转5v 1A 4G模块供电稳压芯片-AH8665

AH8665是一个高性能的稳压芯片,适用于将310V输入电压转换为5V 1A的输出电压,为4G模块提供稳定的电源供应。该芯片具有出色的稳定性能、高效转换效率和紧凑的外形尺寸,广泛应用于通信、物联网等领域。 AH8665芯片采用先进的低压差线性稳压器&…

【新手解答9】深入探索 C 语言:递归与循环的应用2

C语言的相关问题解答 写在最前面问题交流递归和循环if-else 和循环的结合 递归中的 if-else例子 递归是否形成循环?可以理解为特殊形式的循环递归示例:计算阶乘递归与循环的区别 结论 写在最前面 一位粉丝私信交流,回想起了当初的我C语言一题…

2012-12-12 下载ndk编译出so和可执行文件,放到android 真机运行,包含源码。

一、下载ndk链接NDK 下载 | Android NDK | Android Developers 二、解压ndk后得到下面的文件,里面包含ndk-build.cmd,这个是用来编译的。 三、Android.mk和C源码。完整源码下载路径https://download.csdn.net/download/qq_37858386/88622702 3.1 A…

SD-WAN是怎样实现SaaS性能优化的?

在数字化时代,SaaS应用已经成为许多企业不可或缺的核心业务工具。为实现高效的SaaS应用和卓越的用户体验,企业可考虑采用SD-WAN技术。通过就近访问、智能带宽管理、多路径冗余、高级安全和简化的管理监控,SD-WAN为企业带来显著价值。 1. 就近…

单域名https证书怎么申请

单域名https证书可以保护www和两个域名记录,如果保护的域名是子域名时,只能保护一个子域名。单域名https证书能够为网站提供加密的HTTPS连接,保护网站的数据安全。今天随SSL盾小编了解单域名https证书的申请。 1. 确定证书类型:根…

python自动下载网页中的文件,python 自动下载脚本

本篇文章给大家谈谈python自动下载文件 下载的不完整,以及python登录网站自动下载文件,希望对各位有所帮助,不要忘了收藏本站喔。 问题描述 Python自动下载文件,通用文件,包括但不限于压缩文件、图片等。 解决方法 一般…

隐语开源|周爱辉:隐语 TEE 技术解读与跨域管控实践

“隐语”是开源的可信隐私计算框架,内置 MPC、TEE、同态等多种密态计算虚拟设备供灵活选择,提供丰富的联邦学习算法和差分隐私机制 开源项目 github.com/secretflow gitee.com/secretflow 11月25日,「隐语开源社区 Meetup西安站」顺利举办&…

【动态规划】03斐波那契数列模型_最小花费爬楼梯_C++(easy1)

题目链接:leetcode使用最小花费爬楼梯 目录 题目解析: 算法原理 1.状态表示 2.状态转移方程 3.初始化 4.填表顺序 5.返回值 编写代码 题目解析: 题目让我们求达到楼梯顶部的最低花费. 由题可得: cost[i] 是从楼梯第 i 个…

【EMQX】通过EMQX webhook实现转发消息到Python web服务器

EMQX webhook消息转发Web服务器 一、前言二、实现1、EMQX服务器搭建EMQX下载、安装、启动 2、本地Web服务搭建创建Flask项目代码 3、EMQX中创建webhook数据桥接4、EMQX中创建数据转发规则 三、效果 一、前言 需求:获取设备通过mqtt协议发送过来的数据并将数据保存到…

【sqli靶场】第四关和第五关通关思路

目录 前言 一、sqli靶场第四关 1.1 判断注入类型 1.2 观察报错 1.3 判断数据表中的列数 1.4 使用union联合查询 1.5 使用group_concat()函数 二、sqli靶场第五关 2.1 判断注入类型 2.2 使用extractvalue函数报错 2.3 爆出数据库中的表名 2.4 爆出users表中的列名 2.5 爆出use…

异地现场工控设备,如何实现远程配置、调试?

南京某企业专注于工业物联领域,在相关项目中往往会在各个点位部署基于Linux系统的中控主机,实现各类物联设备信息的采集、汇总。但是,由于各点位分散多地,且数量达到了上百个,虽然中控主机具备4G物联网接入能力&#x…

Java设计模式-单例(Singleton)设计模式的概述及实现

目录 🐶1 设计模式概述 🐶2 何为单例模式 🐶3 实现思路 🐶4 饿汉式实现代码 🐶5 懒汉式实现代码 🐶6 对比两种模式(特点、优缺点) 🐶7 单例模式的优点及应用场景 &…

系统提示:comres.dll丢失怎么办,comres.dll丢失的解决方法

comres.dll是Windows操作系统中一个非常重要的动态链接库文件,它负责提供一些重要的功能和资源。当这个文件丢失或损坏时,可能会导致一系列的问题和影响。本文将介绍comres.dll文件丢失对电脑的影响以及comres.dll丢失的原因,并提供5个解决方…