新项目,更加轻量,更加简单,请移步 lenneth
- 框架: koa+tyescript
- db: mongodb
- 编辑器: vscode
- 测试: mocha
- 项目地址: https://github.com/soraping/koa-ts.git
git clone https://github.com/soraping/koa-ts.git
cd koa-ts
npm install
在.vscode 文件夹中,修改 launch.json 文件
{
"version": "0.2.0",
"configurations": [
{
"name": "koa2",
"type": "node",
"request": "launch",
"program": "${workspaceRoot}/src/index.ts",
"stopOnEntry": false,
"args": [],
"cwd": "${workspaceRoot}",
"outFiles": ["${workspaceRoot}/build/**/*.js"],
"runtimeExecutable": "nodemon",
"runtimeArgs": [
"--nolazy"
],
"env": {
"NODE_ENV": "development"
},
"externalConsole": false,
"sourceMaps": true,
"restart": true
}
]
}
注意,在属性'runtimeExecutable'处我选用 nodemon 检测 ts 编译后的 js 文件,‘restart’属性选择 true根目录下 nodemon.json 文件就是 nodemon 的配置文件,要配置所要检测的文件夹,否则会默认检测这个项目,影响性能
{
"compileOnSave": false,
"compilerOptions": {
"module": "commonjs", // 模块引入方式
"target": "ES6", // 将ts文件转成es6的js代码
// 当 noImplicitAny 标志为 true 的时候,TypeScript 编译器不能推断类型,它仍然生成 JavaScript 文件,但是报告一个错误。
"noImplicitAny": true,
"sourceMap": true, // 开启sourceMap
"preserveConstEnums": true,
"emitDecoratorMetadata": true, // 开启修饰器
"experimentalDecorators": true, // 开启修饰器
"removeComments": true,
"rootDir": "./src", // tsc目标文件夹
"outDir": "./build" // tsc输出文件夹
},
// atom
"atom": {
"rewriteTsconfig": true
},
// 不需要监控编译的目录
"exclude": [
"node_modules",
"build"
],
// 需要ts编译的文件集合
"include": [
"./src/typdts/*/*.d.ts",
"./src/apis/*.ts"
],
// 需要ts编译的文件绝对路径
"files": [
"./src/index.ts"
],
"filesGlob": [
"./src/**/*.ts"
]
}
// config.json
{
"port": "8083", // 端口
"log": {
"log_name": "log", // 日志名称
"log_path": "logs/" // 日志路径
},
"mongo": {
"development": {
"host": "mongodb://localhost:27017/ts-test"
},
"production": {
"host": ""
}
},
"session": {
"secrets": "koa-ts"
},
"jwt": {
"secret": "koa-ts-jwt"
}
}
参照了网上的一些案例,进行了整理,利用 es7 的 Decorator 把 koa-router 做了一些封装
import {router, required, prefix, convert, log} from '../middleware/router';
// api path
@prefix('/user')
class UserController{
// 访问路径就是/user/findOne/zhangsan
@router({
method: 'get',
path: '/findOne/:username',
unless: true //如果不做jwt校验,则把这个字段置为true,默认校验
})
// 必传参数 {params: ...,query:...}
@required({params: 'username'})
// 中间件,api执行前会调用someFun方法
@convert(someFun)
// 日志
@log
async getUserOne (ctx: IRouterContext): Promise<void> {
let user = await UserModel.findOne({username: ctx.params.username});
ctx.body = user;
}
}
设计 api 时可以按照上述写法,这样写就更加的优雅
首先要确认 mongodb 是开启状态
npm run build # 启动tsc编译监控
点击 vscode 默认 debug 键, enjoy!
1、 介绍 1-1、安装路由 在原来的 Koa 路由配置中,我们是通过 koa-router 进行集中注册管理的方式来绑定路由的 npm i koa-router // 类型声明文件 npm i -D @types/koa-router 代码如下: // file: backend/src/app.ts const Koa = require('koa'); const KoaRouter =
koa-body 的注意事项 1.中间件顺序问题; 2.next() 别忘记写; <form action="/upload" method="post" enctype="multipart/form-data"> <input type="text" name="name" /> <input type="file" name="file" /> <inpu
初始化typescript tsc --init 下面是我常用的typescript配置,其中的outDir,include需要配置为你那边的对应目录 { "compilerOptions": { "target": "ES5", "module": "commonjs", "lib": [ "ES6" ], "sourceMap":
搭建步骤 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
/** * Compose `middleware` returning * a fully valid middleware comprised * of all those which are passed. * * @param {Array} middleware * @return {Function} * @api public */ function compose
npm ERR! code ELIFECYCLE npm ERR! errno 1 npm ERR! koa2-es10@1.0.0 start: nodemon --exec npm run babel npm ERR! errno 1 npm ERR! koa2-es10@1.0.0 start: nodemon --exec npm run babel的解决方法 安装es10-cli 脚手架
Koa art-template view render middleware. support all feature of art-template. Install npm install --save art-template npm install --save koa-art-template Example const Koa = require('koa'); const ren
koa是Express的下一代基于Node.js的web框架,目前有1.x和2.0两个版本。 历史 1. Express Express是第一代最流行的web框架,它对Node.js的http进行了封装,用起来如下: var express = require('express'); var app = express(); app.get('/', function (req, res) {
Koa 是下一代的 Node.js 的 Web 框架。由 Express 团队设计。旨在提供一个更小型、更富有表现力、更可靠的 Web 应用和 API 的开发基础。 Koa可以通过生成器摆脱回调,极大地改进错误处理。Koa核心不绑定任何中间件,但提供了优雅的一组可以快速和愉悦地编写服务器应用的方法。 示例代码: var koa = require('koa');var app = koa();//
Koa - HelloWorld 以上便是全部了,我们重点来看示例,我们只注册一个中间件, Hello Worler Server: <?php $app = new Application(); // ... $app->υse(function(Context $ctx) { $ctx->status = 200; $ctx->body = "<h1>Hello Worl
koa-log4js A wrapper for log4js-node which support Koa logger middleware.Log message is forked from Express (Connect) logger file. Note This branch is use to Koa v2.x.To use Koa v0.x & v1.x, please ch
koa-rudy 环境 node -v >=6.9.0pm2 启动 npm install npm run dev 开发环境 npm run dev || test || prod 接口测试 npm run mocha 推荐开发工具 vscode 实现 支持 async/await MVC架构(middleware-view-controller) RESTful a
学习 koa 源码的整体架构,浅析koa洋葱模型原理和co原理 1. 前言 你好,我是若川,微信搜索「若川视野」关注我,专注前端技术分享。欢迎加我微信ruochuan12,加群交流学习。 这是学习源码整体架构系列第七篇。整体架构这词语好像有点大,姑且就算是源码整体结构吧,主要就是学习是代码整体结构,不深究其他不是主线的具体函数的实现。本篇文章学习的是实际仓库的代码。 本文仓库地址:git clon
koa-seo SEO middleware for koa base on chrome-render, a substitute for prerender. Modern web app use technique like react.js vue.js which render html in browser, this lead to search engine can't crawl