使用angular构建多个应用程序版本

使用angular构建多个应用程序版本,angular,Angular,我想创建一个支持多个版本的Angular应用程序:“免费版本”和“专业版本”。假设以下代码结构 app ├───app.module.ts ├───app.component.ts|html|css ├───free-version │ ├───feature-1 │ └───feature-2 └───pro-version ├───feature-3 └───feature-4 如何让我的Angular项目支持: 免费版本的版本仅包含feature-1和featu

我想创建一个支持多个版本的Angular应用程序:“免费版本”和“专业版本”。假设以下代码结构

app
├───app.module.ts
├───app.component.ts|html|css
├───free-version
│   ├───feature-1
│   └───feature-2
└───pro-version
    ├───feature-3
    └───feature-4
如何让我的Angular项目支持:

  • 免费版本的版本仅包含feature-1和feature-2
  • 专业版的附加版本,包含免费版的所有功能以及feature-3和feature-4

    • 一个解决方案是创建两个文件夹:
      freemium
      premium

      稍后编辑并设置2个项目,确保为每个项目定义相关
      index.html
      main.ts
      的正确路径

      "$schema": "./node_modules/@angular/cli/lib/config/schema.json",
      "version": 1,
      "newProjectRoot": "projects",
      "projects": {
          "freemium": {
              "root": "src",
              "sourceRoot": "src",
              "projectType": "application",
              "architect": {
                  "build": {
                      "builder": "@angular-devkit/build-angular:browser",
                      "options": {
                          "outputPath": "dist",
                          "index": "src/freemium/index.html",
                          "main": "src/freemium/main.ts",
                          "tsConfig": "src/tsconfig.app.json",
                          "polyfills": "src/polyfills.ts",
                          "assets": [
                              "src/assets",
                              "src/favicon.ico",
                              "src/manifest.json"
                          ],
                          "styles": [
                              "src/styles.scss"
                          ],
                          "scripts": []
                      },
                      "configurations": {
                          "production": { ... },
                          "staging": { ... }
                      }
                  }
              }
          },
          "premium": { ... }
          }
      },
      
      另外的解决方案是为每个项目使用不同的
      webpack.config.js

      请注意,您必须在服务器端处理授权层,并且不要假设客户端保护足够好


      最好的解决方案是将angular授权和服务器端授权结合起来。

      您似乎在寻找它。

      为什么要有单独的版本?对我来说,使用不同的路径和防护似乎更符合逻辑,也许延迟加载应用程序将是一个离线应用程序。下载的免费版本不应包含pro-version的功能。如果您的限制要求用户不下载应用程序,听起来您的安全性非常差。在现实世界中,我开发的任何具有免费和高级功能的应用程序都不是这样工作的。对高级内容或功能的限制发生在服务器上。你的这个离线应用程序可以由一个人下载并购买,然后简单地分享给其他人。这个问题与安全无关。我只是想知道如何构建我的应用程序以支持不同的构建。付费/免费版应该只是给出一个简单的例子,说明我正在努力实现的目标。作为董事会成员并参与其中的一部分是评估问题试图解决的问题。您问题中的问题似乎是,在更深层次上,如何将高级内容和免费内容分开,您选择的解决方案是创建不同的版本,您现在要问的是如何实现此解决方案。根据我的经验和知识,你的解决方案是错误的,你应该重新评估你的选择。这是一种帮助你的尝试,而不是一种攻击。在这个板上提出问题会引起各种各样的反应。对此持开放态度。