ts+koa项目搭建

阅读: 评论:0

ts+koa项目搭建

ts+koa项目搭建

搭建步骤

1. 初始化项目

npm init
npm i koa koa-router
npm i --save-dev typescript ts-node nodemon
npm i --save-dev @types/koa @types/koa-router

2. 新建 tsconfig.json

在项目根目录,新建tsconfig.json,并加入内容。

3. 创建server.ts

要使你的服务“跑”起来,在刚建立的src文件夹上新建server.ts,作为此应用的入口,在此文件中加入内容。

4. 路由

koa是一个非常简洁的框架,它并没有提供路由。在此项目,我们使用koa-router。
koa-router的使用其实不太复杂。

5. 跑起来

npm run watch-server 命令

6. 连接数据库

1) 安装相应插件

npm install sequelize -s
npm install mysql2 -s

2)编写数据库连接设置(models/index.ts)

import { Sequelize } from 'sequelize';const DbSequelize = new Sequelize({host: "localhost",//本地:localhost,其他服务器使用ip地址dialect: "mysql",//连接数据库类型database: "demo_koa_ts",//数据库名称username: "root",//数据库账户用户名password: "syy2307",//数据库账户密码define: {timestamps: false,//是否开启时间戳createAt  deleteAt  updateAtunderscored: true,//下划线freezeTableName: true, //禁止sequelize修改表名,默认会在表后边添加一个字母`s`表示复数paranoid: true //开启假删除},pool: {max: 10,min: 0,acquire: 30000,  //请求超时时间idle: 10000 //断开连接后,连接实例在连接池保持的时间},timezone: '+08:00',//时区设置,东八区  默认是'+00:00'
});export default DbSequelize;

3)编写相应的models、service、controller文件夹和内容。

4)入口文件引入数据库连接文件(models/index.ts)

5)创建router文件夹,存放接口地址,及其对应的controller。

6)入口文件相关的路由设置,改为引入路由文件。

7)安装koa-body

npm install koa-body -s

8)入口文件添加koa-body的使用。

app.use(KoaBody({multipart: true
}));

9)完成,使用postman测试接口。

1. TS-Node

此包提供了TypeScript的运行环境,即不需要编译也能运行TypeScript代码。
在开发期间省去编译这一步。

2. Nodemon

Nodemon会监视node应用中的代码,当它发现改变,会自动重启服务。
这对于开发来说,省了重启服务这一步。

nodemon --watch ‘src/’ -e ts,tsx --exec ts-node src/server.ts
并没有在我修改src文件夹下文件时重新加载,这是为什么?

3. koa-body

是一个可以帮助解析 http 中 body 的部分的中间件,包括 json、表单、文本、文件等

4. sequelize

ORM工具,可以映射表,能使sql变得更简单。

koa-body设置

KoaBody({multipart: true, 支持文件格式formidable: {maxFileSize: 1000 * 1024 * 1024    // 设置上传文件大小最大限制,默认2M},formLimit: "10mb",jsonLimit: "10mb",textLimit: "10mb"
})

Sequelize

1. attributes

1. 要仅选择某些属性,可以使用该attributes选项。
Model.findAll({attributes: ['foo', 'bar']
});
//等同于 SELECT foo, bar ...
2.可以使用嵌套数组重命名属性:
Model.findAll({attributes: ['foo', ['bar', 'baz']]
});
//等同于SELECT foo, bar AS baz..
3.sequelize.fn用来进行聚合
Model.findAll({attributes: [[sequelize.fn('COUNT', l('hats')), 'no_hats']]
});
//等同于SELECT COUNT(hats) AS no_hats ...
4.删除选定的几个属性
Model.findAll({attributes: { exclude: ['baz'] }
});

2. where

Sequelize的where配置项基本上完全支持了SQL的where子句的功能
1. 条件
Model.findAll({'where': {'id': [1, 2, 3],'nick': 'a','department': null}
});
2.可包含操作符($and$or...)---新版本修改了
User.findAll({'where': {'id': {'$eq': 1,                // id = 1'$ne': 2,                // id != 2'$gt': 6,                // id > 6'$gte': 6,               // id >= 6'$lt': 10,               // id < 10'$lte': 10,              // id <= 10'$between': [6, 10],     // id BETWEEN 6 AND 10'$notBetween': [11, 15], // id NOT BETWEEN 11 AND 15'$in': [1, 2],           // id IN (1, 2)'$notIn': [3, 4]         // id NOT IN (3, 4)},'nick': {'$like': '%a%',          // nick LIKE '%a%''$notLike': '%a'         // nick NOT LIKE '%a'},'updated_at': {'$eq': null,             // updated_at IS NULL'$ne': null              // created_at IS NOT NULL}}})
User.findAll({'where': {'$or': [{'id': [1, 2]},{'nick': null}]}
});
where: {[Op.or]: {name: {[Op.like]: `%${userSubject}%`},nameEn: {[Op.like]: `%${userSubject}%`}}}

配置文件属性

1.配置文件(typescript — tsconfig.js 可通过tsc init生成)

  "compilerOptions": { // 配置编译选项"target": "es2017",// 多用es6"module": "commonjs","noImplicitAny": true, //当表达式和申明 类型为any时,是否需要发出警告,设置false,则不警告"outDir": "dist","sourceMap": true,//为发出的JavaScript文件创建源映射文件。  性能节省,可能加载更快"moduleResolution":"node",//指定TypeScript如何从给定模块说明符中查找文件。指定当前项目的运行模式,默认浏览器模式。"baseUrl":".", //根目录"types": [  // 引用第三方库类型,可直接使用。"@types/node"],"typeRoots": [ // 自定义类型"./types"],},"include": [ // 指定编译文件位置"src/**/*"],"exclude": ["node_modules","**/*.spec.ts"]
}
.html 官方地址

本文发布于:2024-01-29 08:31:06,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170648826814004.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:项目   ts   koa
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23