Typescript安装Koa
npm install koa koa-bodyparser koa-router koa-static --save # 添加koa 注意这里没有-devnpm install @types/koa @types/koa-router @types/koa-bodyparser @types/koa-static --save-dev # 添加koa ts相关
删掉 operations.ts 和 index.ts ,新建项目入口文件 app.ts ,输入一下内容:
import path from 'path'import Koa from 'koa'import Router from 'koa-router'import koaStatic from 'koa-static'import bodyParser from 'koa-bodyparser'const app = new Koa()const router = new Router()// Middlewaresapp.use(bodyParser())app.use(koaStatic(path.join(__dirname, '../public')))// Routesrouter.get('/api', async (ctx, next) => {ctx.body = {code: 0,msg: 'success',data: {}}await next()})app.use(router.routes()).use(router.allowedMethods());app.listen(3000, () => {console.log('Koa started')})
package.json 修改成 "dev": "nodemon --watch src/**/*.ts --exec \"ts-node\" src/app.ts"
npm run dev 之后 浏览器访问http://localhost:3000/api,即可看到内容。
在这里发现了一个很赞的点,终于不用写 const Koa = require('koa') ,已经跟Es6语法一致了!!!
OK http服务已经跑起来了。
安装mongodb
**
社区版(免费)下载地址:https://www.mongodb.com/try/download/community
具体安装步骤查看视频,或者自行网上搜索。
mongodb可视化管理工具:https://robomongo.org/
安装typeorm
npm install typeorm reflect-metadata mongodb --save # 安装typeorm、mongodb相关依赖
查看详细文档 https://typeorm.io/
一、测试链接是否生效,新建文件 src\entity\Post.ts
import { Column, Entity, ObjectID, ObjectIdColumn } from 'typeorm'@Entity()export default class Post {@ObjectIdColumn()id: ObjectID;@Column()title: string;@Column()text: string;}
- Eslint提示:对修饰器的实验支持功能在将来的版本中可能更改。在 “tsconfig” 或 “jsconfig” 中设置 “experimentalDecorators” 选项以删除此警告。打开
tsconfig.json将“experimentalDecorators”和“emitDecoratorMetadata”选项打开。 - Eslint提示:属性“id”没有初始化表达式,且未在构造函数中明确赋值。修改成如下代码
id!: ObjectID;
二、 app.ts 修改成如下代码
import path from 'path'import Koa from 'koa'import Router from 'koa-router'import koaStatic from 'koa-static'import bodyParser from 'koa-bodyparser'import 'reflect-metadata'import { createConnection, ConnectionOptions } from 'typeorm'import Post from './entity/Post'const options: ConnectionOptions = {type: 'mongodb',name: 'mymongodb',host: 'localhost',port: 27017,username: '',password: '',database: 'comments',synchronize: true,entities: [__dirname + '/entity/*.{ts, js}'],useUnifiedTopology: true,logging: true};createConnection(options).then(async connection => {let post = new Post()post.title = '我的标题'post.text = '我不想说'let postRepository = connection.getRepository(Post)postRepository.save(post).then(post => console.log("Post has been saved: ", post)).catch(error => console.log("Cannot save. Error: ", error))const app = new Koa()const router = new Router()// Middlewaresapp.use(bodyParser())app.use(koaStatic(path.join(__dirname, '../public')))// Routesrouter.get('/api', async (ctx, next) => {ctx.body = {code: 0,msg: 'success',data: {}}await next()})app.use(router.routes()).use(router.allowedMethods())app.listen(3000, () => {console.log('Koa started')})}).catch((error: any) => console.log('TypeORM connection error: ', error))
出现 Post has been saved: Post { title: '我的标题', text: '我不想说', id: 5fb0b527fb27b517e0d63c7b } 证明数据插入成功。
三、去数据库验证下
打开mongo.exe,依次输入
show dbsuse commentsshow tablesdb.post.find({}).pretty()
即可看到刚刚插入的数据。
到此基本的依赖都已经安装完成,下一步就是考虑怎么在业务逻辑中学习使用Typescript。
使用之前,建议去浏览一遍以下文档,不喜欢英文版,可以自行搜索中文版:
- KOA: https://koajs.com/
- TypeORM:https://typeorm.io/#/
- TypeScript:https://www.typescriptlang.org/zh/
- MongoDB 4.4 Manual:https://docs.mongodb.com/manual/
- ES6:https://es6.ruanyifeng.com/
