Angular2应用程序架构(网络,移动,原生)

时间:2016-11-30 10:36:15

标签: javascript angular redux single-page-application nativescript

让我们想象一个ng2应用程序,它可以处理以下平台:web,mobile-web和mobile-native。

由于存在许多共享文件(诸如动作创建者,减少者......,服务,常见组件等), 一切都可以在一个存储库中。在大多数情况下,组件和路由中的Web,移动Web和移动本机视图登录之间存在差异。 一切都由webpack管理,使用.mobile.ts和.desktop.ts扩展来构建所有内容。扩展名为.base.ts的文件包含桌面和移动组件之间的共享视图逻辑。

当前(简化)文件结构如下(桌面是网络版,移动网是移动网):

assets/
app/
    /common
        actions/
        enums/
        models/
        effects/
        pipes/
        reducers/
        services/
        components/
            account-list/
                account-item/
                    account-item.component.base.ts
                    account-item.component.desktop.ts
                    account-item.component.desktop.html
                    account-item.component.mobile.ts
                    account-item.component.mobile.html
                    index.ts
                account-list.component.base.ts
                account-list.component.desktop.ts
                account-list.component.desktop.html
                account-list.component.mobile.ts
                account-list.component.mobile.html
                index.ts 
    /modules
        /desktop
            /accounts
                accounts.component.desktop.ts
                accounts.component.desktop.html
                accounts.routes.desktop.ts
                index.ts
        /mobile
            /accounts
                accounts.component.mobile.ts
                accounts.component.mobile.html
                accounts.routes.mobile.ts
                index.ts
    app.component.desktop.ts
    app.component.mobile.ts
    app.module.desktop.ts 
    app.module.mobile.ts
    app.routes.desktop.ts
    app.routes.mobile.ts

如您所见,文件数量增长如此之快。我害怕通过添加另一个原生平台来思考它的外观。不幸的是,我找不到任何有趣的例子。

我发现的唯一一个是: Angular2 advanced seed link

但它似乎也很奇怪而且非直观。

您对如何为该案例制定更好的结构有任何建议吗?我会感激任何帮助。谢谢你的建议。

1 个答案:

答案 0 :(得分:0)

我建议您创建不同的项目并创建一个通用的角度包,如下所示:

  • 常见(包括角度服务和帮助)
  • 网络(组件和网络特定服务/视图)
  • mobile-web (组件和移动网络特定服务/视图)
  • 移动设备本地(组件和本机特定服务/视图)

也许您可以一起加入网络和移动应用。但是这个设置在很多项目中对我有用