当前位置: 首页 > Web前端 > HTML

SaaS私有化部署方案

时间:2023-03-28 13:14:18 HTML

NodeJs端1.源码保护>项目源码涉及node端后台代码和前端代码,源码保护措施如下:>1:node:代码混淆+加密+compression>2:client:provide编译后的代码给客户端>3:node端和client在编译状态下共享一个配置文件;难点在于客户端是编译好的代码,配置文件更新时客户端无法识别,所以采用了动态加载的方式,具体步骤如下。因为客户端和节点服务器都涉及到配置,客户端代码是编译后发给客户的,所以如果客户根据自己的业务场景修改配置,编译后的客户端代码无法识别最新的配置文件;因为node端提供源码,可获取最新配置。对于这种情况,解决方法是:在整个项目的根目录下定义一个全局配置文件config.json。{“生产”:{“主机”:“https://nfs-src.sf8cloud.com”},“测试”:{“主机”:“https://test-nfs.sf8cloud.com”},“development":{"HOST":"https://dev-nfs.sf8cloud.com"}}node端直接要求导入,根据进程启动环境在配置文件中选择不同环境的host地址;重点是客户端,在Howdocompiledclientsgetupdatestoconfigurationfiles?下面的代码其实是通过请求动态获取的。当然请求/envInfo在Node端添加了一个EnvController.js(代码如下),在EnvController.js中操作目录下的全局配置文件,然后根据node的配置数据如果客户端的启动环境不同,则将相应的环境发送给客户端。axios.get('/envInfo').then(res=>{console.log('======serverConfig===',res)Vue.prototype.ydHostConfig=res.data//localStorage.setItem('ydHostConfig',JSON.stringify(res.data))}).catch(err=>{console.log('======err',err)})/**EnvController.js**/constconfigInfo=require('../../serverConfig.json')module.exports={/***获取服务器的环境信息,让前端环境匹配*/getEnvInfo(req,res){configInfo.env=process.env.NODE_ENVif(process.env.NODE_ENV==='production'){returnres.ok(configInfo.production)}elseif(process.env.NODE_ENV==='test'){返回res.ok(configInfo.test)}else{returnres.好的(configInfo.development)}}}