在实际业务开发中,会遇到这样一种需求,使用VUE的页面须要支持SEO,同时对首屏有指标性要求,目前市面上广泛使用的是Nuxt.js解决方案,在引入的同时还须要考虑与现有的全栈工程结合,本系列文章探讨的是此类全栈工程的解决方案,同时使用的是TypeScript应用于先后端编程,文章中介绍的工程与技术要点源码已上传至Github,有须要的朋友可自行下载:
Nuxt.js和Nest.js同构工程前端
复制代码
文章意在抛砖引玉,先后端使用同一种语言TypeScript编写,示例已包含基本接口请求,数据库链接应用,公用模块封装等实际开发中使用到的内容。ios
TypeScript全栈工程实战-(Nuxt. js & Nest. js) - 2、《框架融合》git
TypeScript全栈工程实战-(Nuxt. js & Nest. js) - 3、《配置服务》github
TypeScript全栈工程实战-(Nuxt. js & Nest. js) - 4、《UI系统》数据库
TypeScript全栈工程实战-(Nuxt. js & Nest. js) - 5、《API服务设计》编程
TypeScript全栈工程实战-(Nuxt. js & Nest. js) - 6、《SEO功能实现》axios
TypeScript全栈工程实战-(Nuxt. js & Nest. js) - 7、《Vuex使用》后端
TypeScript全栈工程实战-(Nuxt. js & Nest. js) - 8、《接入Mongo DB服务》api
TypeScript全栈工程实战-(Nuxt. js & Nest. js) - 9、《TypeScript》跨域
TypeScript全栈工程实战-(Nuxt. js & Nest. js) - 10、《工程化部署》
示例中的远程服务调用系统采用直连和服务端中转2种方式进行,在实际业务开发中,跨域状况比较常见,在现今先后端各司其职状况下,引入Nest.js服务,通常前端能自行解决。跨域方法类型这里不做缀述。主要有:
1.NGINX设置
2.服务端开放
3.其它
这里讨论的是Nest.js中转的方式进行,通常来说,若是API不须要跨域,则只须要前端直接发起请求便可。但若是API是跨域,在这里示例中使用的是Nest.js中转的方式进行,同时使用中转也能统一请求出口入口,鉴权,请求参数监控和日志监控等的统一处理。本示例中使用到的服务远程调用主要围绕axios组件使用展开。
在nuxt.config.ts
配置中导出全局引用
服务端则经过中间件形式,引入axios,注册拦截器,charles抓包代理,原理同客户端实现大同小异。
与客户端axios实现区别是,由于做了服务端中转,因此须要重写实现全部RESTful系列方法。