前后端分离架构
随着前端应用的越来越复杂,前后端分离架构成为了主流。前后端分离之后,前端并不依赖后端的模板和路由,渲染逻辑、路由跳转逻辑都由前端应用独立控制,开发时也不需要等待后端接口,可以本地起mock server来mock数据。这样后端接口就只剩下提供数据的功能了。
拆分不同环境主要是为了便于测试不同的功能,根据环境的不同,数据也不同,比如线上环境,用的都是真实的数据,而非线上环境大多是自己模拟的数据,或者拷贝的部分线上数据。环境的切换可以用类似k8s等工具。
前端项目的后端环境切换
前端项目运行在浏览器之上,浏览器环境提供了对js的解析,对dom、bom、ajax等的支持。前端应用通过http或者websocket来和服务端交互数据。
开发、测试、线上会对应若干不同的环境,比如开发一般会用本地的mock server或者远程的某个非线上环境,并且会启动dev server来支持热替换以提高开发效率,而线上版本使用的是线上环境的真实数据,并且不需要启动dev server。
在打包的时候不同的环境是分开打包的,主要是切换不同的后端环境,也就是不同的域名。当然还可以通过改hosts文件的方式来切换。
小程序项目的后端环境切换
小程序和前端项目有一些不同,一个是运行环境在微信给小程序定制的环境下,dom操作能力受限,但却可以调用微信基础库提供的设备能力,开放能力等。
小程序对应的后端环境也因为有了微信服务器而变得复杂。小程序的项目依然是前后端分离,后端只返回数据,开发、测试、线上使用不同的环境的数据,但小程序的环境切换更复杂一些。
考虑到安全,小程序对应用可访问的域名做了限制,只有后台配置的域名才可以访问,每个小程序都有着不同的域名配置。不同环境下访问的域名不同,所以对应的配置不同,也就需要不同的appid。
所以,小程序的环境切换除了在打包时指定不同环境的脚本外,也需要指定不同的appid。
总结
随着前端技术的发展,越来越多的应用使用前后端分离的方式,路由和渲染都由前端控制,后端只返回数据,前端通过切换域名来切换不同的环境。
不同的环境主要是为了便于测试不同的功能,而不同的功能自然也就对应着不同的域名和接口。浏览器中的前端应用只需要切换不同的打包脚本来使用不同的后端环境,小程序因为可访问域名受到微信限制,除了切换打包脚本外,也需要切换不同的appid来切换域名配置。
小程序应用,客户端运行在微信环境中,基础能力和前端应用不同,并且后端除了自己的服务器外,多了微信的服务器,所以整体流程会复杂一些。