当前位置: 首页 > 后端技术 > Node.js

知道TypeScript结合egg.js基本就用完了

时间:2023-04-03 20:24:21 Node.js

潇潇又进入了学习状态。这个时候潇潇最近接触了js相关的内容,然后又接触了一些ts相关的内容,所以潇潇这次主要学习的内容就是ts。安装相关依赖这里安装两个依赖,分别为egg和ts安装ts这里需要保证先安装npm相关工具。全局安装tsnpminstall-gtypescript进行全局测试$tsc-vVersion3.2.2这样就完成了本地和全局的ts安装和egg安装。到这里就实现了egg的全局安装,并初始化了依赖项目。创建工作目录mkdirshowcase&&cdshowcase安装相关依赖npminitegg--type=ts安装依赖的npmi运行项目npmrundev出现如下提示,表示已经启动,安装完成C:\Users\Administrator\Desktop\untitled4555\ming>npmrundev>ming@1.0.0devC:\Users\Administrator\Desktop\untitled4555\ming>egg-bindev[egg-ts-helper]创建打字\app\controller\index.d.ts(5ms)[egg-ts-helper]创建typings\config\index.d.ts(16ms)[egg-ts-helper]创建typings\config\plugin.d.ts(10ms)[egg-ts-helper]创建typings\app\service\index.d.ts(5ms)[egg-ts-helper]创建typings\app\index.d.ts(2ms)2020-07-3114:27:49,701信息12416[master]nodeversionv13.11.02020-07-3114:27:49,703INFO12416[master]eggversion2.27.02020-07-3114:27:59,512INFO12416[master]agent_worker#1:28076started(9799ms)7020-3114:28:10,469INFO12416[master]eggstartedonhttp://127.0.0.1:7001(20765ms)访问页面效果如上。这里写controller,这里写对应的controller。如下图添加对应的controller目录Classmethodpublicasyncshow(){const{ctx}=this;//eslint-disable-next-行@typescript-eslint/no-unused-varsconstpage=ctx.query.page;控制台日志(页面);constresult='明';控制台日志(结果);等待ctx.render('ming.tpl',结果);}添加相关路径由import{Application}from'egg';exportdefault(app:Application)=>{const{controller,router}=app;router.get('/',controller.home.index);router.get('/ming',controller.home.show);};添加模板流插件编辑默认配置文件import{EggAppConfig,EggAppInfo,PowerPartial}from'egg';exportdefault(appInfo:EggAppInfo)=>{const配置={}作为PowerPartial;//从框架/插件覆盖配置//用于cookie签名密钥,应该更改为您自己的并保持安全config.keys=appInfo.name+'_1596175919808_6331';//在这里添加你的egg配置config.middleware=[];//在这里添加你的特殊配置constbizConfig={sourceUrl:`https://github.com/eggjs/examples/tree/master/${appInfo.name}`,};config.view={defaultViewEngine:'nunjucks',映射:{'.tpl':'nunjucks',},};//返回的配置将合并到EggAppConfigreturn{...config,...bizConfig,};};添加相关插件import{EggPlugin}from'egg';constplugin:EggPlugin={nunjucks:{enable:true,package:'egg-view-nunjucks',},};导出默认插件;访问链接http://127.0.0.1:7001/ming出现模板内容服务层写在这里配置相关服务层定义相关接口导出接口NewsItem{id:number;title:string;}写相关控制器//定义相关方法//eslint-disable-next-line@typescript-eslint/no-unused-varspublicasynclist(name:number):Promise{name=姓名;return[{id:3,title:"明"}];}在控制层调用publicasyncshow(){const{ctx}=this;//eslint-disable-next-line@typescript-eslint/no-unused-varsconstpage=ctx.query.page;控制台日志(页面);constresult='明';控制台日志(结果);等待ctx.render('ming.tpl',结果);}调用显示结果至此,最基本的服务层已经搭建完成中间件中间件一般用于jwt验证相关内容。这里jwt用于前后端验证。新建中间件目录import{Context,Application,EggAppConfig}from"egg";exportdefaultfunctionuuidMiddleWare(options:EggAppConfig['uuid'],app:Application):any{returnasync(ctx:Context,next:()=>Promise)=>{//name是uuid下的属性在config.default.jsctx=ctx;控制台信息(选项名称);等待下一个();};}创建相关配置该文件用于中间件读取相关内容config.default.jsimport{EggAppConfig,EggAppInfo,PowerPartial}from'egg';exportdefault(appInfo:EggAppInfo)=>{constconfig={}asPowerPartial;//覆盖框架/插件的配置//用于cookie签名密钥,应更改为您自己的并保持安全config.keys=appInfo.name+'_1596175919808_6331';//在这里添加你的egg配置config.middleware=['uuid'];//在这里添加你的特殊配置constbizConfig={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',},};//返回的配置会合并到EggAppConfigreturn{...config,...bizConfig,};};读取效果如下