明知 | TypeScript 结合 egg.js 基本使用
时间:2022-07-22
本文章向大家介绍明知 | TypeScript 结合 egg.js 基本使用,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
小小又进入了学习状态,此时小小由于最近接触了js的相关内容,进而接触了一些ts相关的内容,所以小小本次主要学习的内容是ts。
安装相关依赖
这里安装两个依赖,分别为egg和ts
安装ts
这里需要确保首先安装了npm相关工具。
全局安装ts
npm install -g typescript
进行全局的测试
$ tsc -v
Version 3.2.2
这样就完成了本地全局的ts的安装
安装egg
这里实现全局安装egg,并初始化依赖项目。
创建工作目录
mkdir showcase && cd showcase
安装相关的依赖
npm init egg --type=ts
安装依赖
npm i
运行项目
npm run dev
出现以下提示,即代表已经启动,并安装完成
C:UsersAdministratorDesktopuntitled4555ming>npm run dev
> ming@1.0.0 dev C:UsersAdministratorDesktopuntitled4555ming
> egg-bin dev
[egg-ts-helper] create typingsappcontrollerindex.d.ts (5ms)
[egg-ts-helper] create typingsconfigindex.d.ts (16ms)
[egg-ts-helper] create typingsconfigplugin.d.ts (10ms)
[egg-ts-helper] create typingsappserviceindex.d.ts (5ms)
[egg-ts-helper] create typingsappindex.d.ts (2ms)
2020-07-31 14:27:49,701 INFO 12416 [master] node version v13.11.0
2020-07-31 14:27:49,703 INFO 12416 [master] egg version 2.27.0
2020-07-31 14:27:59,512 INFO 12416 [master] agent_worker#1:28076 started (9799ms)
2020-07-31 14:28:10,469 INFO 12416 [master] egg started on http://127.0.0.1:7001 (20
765ms)
访问页面效果如上
编写控制器
这里编写相应的控制器
控制器目录如下所示
添加相对应的类的方法
public async show() {
const { ctx } = this;
// eslint-disable-next-line @typescript-eslint/no-unused-vars
const page = ctx.query.page;
console.log(page);
const result = 'ming';
console.log(result);
await ctx.render('ming.tpl', result);
}
添加相关路由
import { Application } from 'egg';
export default (app: Application) => {
const { controller, router } = app;
router.get('/', controller.home.index);
router.get('/ming', controller.home.show);
};
添加模板渲染插件
编辑默认配置文件
import { EggAppConfig, EggAppInfo, PowerPartial } from 'egg';
export default (appInfo: EggAppInfo) => {
const config = {} as PowerPartial<EggAppConfig>;
// override config from framework / plugin
// use for cookie sign key, should change to your own and keep security
config.keys = appInfo.name + '_1596175919808_6331';
// add your egg config in here
config.middleware = [];
// add your special config in here
const bizConfig = {
sourceUrl: `https://github.com/eggjs/examples/tree/master/${appInfo.name}`,
};
config.view = {
defaultViewEngine: 'nunjucks',
mapping: {
'.tpl': 'nunjucks',
},
};
// the return config will combines to EggAppConfig
return {
...config,
...bizConfig,
};
};
添加相关插件
import { EggPlugin } from 'egg';
const plugin: EggPlugin = {
nunjucks: {
enable: true,
package: 'egg-view-nunjucks',
},
};
export default plugin;
访问链接
http://127.0.0.1:7001/ming
出现模板内容
服务层编写
这里配置相关的服务层。
定义相关接口
export interface NewsItem {
id: number;
title: string;
}
编写相关的控制器
// 定义相关方法
// eslint-disable-next-line @typescript-eslint/no-unused-vars
public async list(name: number): Promise<NewsItem[]>{
name = name;
return [{id:3, title: "ming"}] ;
}
在控制层中调用
public async show() {
const { ctx } = this;
// eslint-disable-next-line @typescript-eslint/no-unused-vars
const page = ctx.query.page;
console.log(page);
const result = 'ming';
console.log(result);
await ctx.render('ming.tpl', result);
}
调用显示结果
此时完成了最基本的服务层的搭建
中间件
中间件一般用于jwt验证相关的内容。这里使用jwt做前后端的验证。
创建新的中间件目录
import { Context, Application, EggAppConfig } from "egg";
export default function uuidMiddleWare(options: EggAppConfig['uuid'], app: Application): any {
return async (ctx: Context, next: () => Promise<any>) => {
// name 就是 config.default.js 中 uuid 下的属性
ctx = ctx;
console.info(options.name);
await next();
};
}
创建相关的配置文件用于中间件读取相关的内容
config.default.js
import { EggAppConfig, EggAppInfo, PowerPartial } from 'egg';
export default (appInfo: EggAppInfo) => {
const config = {} as PowerPartial<EggAppConfig>;
// override config from framework / plugin
// use for cookie sign key, should change to your own and keep security
config.keys = appInfo.name + '_1596175919808_6331';
// add your egg config in here
config.middleware = ['uuid'];
// add your special config in here
const bizConfig = {
sourceUrl: `https://github.com/eggjs/examples/tree/master/${appInfo.name}`,
local: {
msg: 'local',
},
uuid: {
name: 'ebuuid',
maxAge: 1000 * 60 * 60 * 24 * 365 * 10,
},
};
config.view = {
defaultViewEngine: 'nunjucks',
mapping: {
'.tpl': 'nunjucks',
},
};
// the return config will combines to EggAppConfig
return {
...config,
...bizConfig,
};
};
读取效果如下
- Android之Notification介绍
- postcss-lazysprite: 一种生成CSS 雪碧图的懒惰姿势
- Activity间中使用Intent传值
- VUE 入门基础(3)
- ASP.NET MVC 2 转换工具
- 使用Sysinternals工具定时休眠Windows Server 2008 R2
- Android中BroadcastReceiver广播
- 启用Windows 7/2008 R2 XPS Viewer
- Spring历史版本变迁和如今的生态帝国
- Android中Services之异步IntentService
- 使用GitHub搭建个人博客
- 这个用来玩儿游戏的算法,是谷歌收购DeepMind的最大原因
- asp.net安全检测工具 --Padding Oracle 检测
- Android中Services简析
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Flink 连接 hive 解决 java.net.UnknownHostException
- PAT (Advanced Level) Practice 1147 Heaps (30 分)
- Java自动化测试(app自动化环境搭建 31)
- PAT (Basic Level) Practice (中文)1038 统计同成绩学生 (20 分)
- 数据结构题集(严书)串 常见习题代码
- PAT (Basic Level) Practice (中文)1040 有几个PAT (25 分)
- 201909-4ccf计算机职业资格认证考试 第四题 推荐系统
- 【Linux_Shell 脚本编程学习笔记四、监控系统内存并报警企业案例脚本】
- PAT (Basic Level) Practice (中文)1042 字符统计 (20 分)
- Pytorch 中的 5 个非常有用的张量操作
- k-近邻算法实现数字识别
- 【Linux_Shell 脚本编程学习笔记五、Oracle JDK1.8 安装shell 脚本】
- vue中子组件使用$emit传值的种种情况
- 前端工程化建设
- 机器学习101-从JAX的角度去实现