关于saas:Saas私有化部署方案

NodeJs端

1. 源码爱护

> 我的项目源码波及node端后盾代码,和前端代码,源码保护措施如下:
> 1: node:代码混同+加密+压缩
> 2: 客户端:提供给客户的是已编译的代码
> 3: node端和处于已编译状态的客户端专用一个配置文件;难点在于客户端是编译过的代码,配置文件更新的时候客户端是辨认不到的,所以采纳动静加载的形式,上面有具体步骤。

因为客户端和node服务端都波及到配置,而且客户端代码编译实现后要发送给客户,所以客户如果依据本人的业务场景批改配置时,已编译的客户端代码使不能辨认到最新的配置文件;node端因为是提供源码的,所以是能够获取到最新的配置。介于这种状况解决半发如下:

在整个我的项目的根目录定义一个全局配置文件config.json。

{
  "production":{
    "HOST": "https://nfs-src.sf8cloud.com"
  },
  "test":{
    "HOST": "https://test-nfs.sf8cloud.com"
  },
  "development":{
    "HOST": "https://dev-nfs.sf8cloud.com"
  }
}

node端间接require引入,依据process启动环境抉择配置文件中不同环境下的host地址;
重点在客户端,处于已编译的客户端是如何获取配置文件的更新的?
如下代码,其实就是通过申请动静获取,当然/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**/

const configInfo = require('../../serverConfig.json')
module.exports = {
  /**
   * 获取服务端的环境信息,使前端环境与之匹配
   */
  getEnvInfo(req, res){
    configInfo.env = process.env.NODE_ENV
    if (process.env.NODE_ENV === 'production') {
      return res.ok(configInfo.production)
    } else if(process.env.NODE_ENV==='test'){
      return res.ok(configInfo.test)
    }else {
      return res.ok(configInfo.development)
    }
  }
}

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理