我有一些GAE应用,我打算将它们分成三个模块: default
( www
), {{ 1}} 和 mobile
但我在理解模块以及如何组织代码时遇到了一些困难。
根据找到的图片here,应用程序应该是这样的。
这是我到目前为止提出的简化结构:
api
gae-app/
├── modules
│ ├── api
│ │ ├── app.yaml
│ │ └── src
│ │ └── main.py
│ ├── mobile
│ │ ├── app.yaml
│ │ └── src
│ │ └── index.html
│ └── www
│ ├── app.yaml
│ └── src
│ ├── main.py
│ └── templates
├── cron.yaml
├── index.yaml
└── queue.yaml
模块提供了大量API函数,并且可以自行运行。
api
模块只是一堆html + js,可以通过ajax与 mobile
模块一起使用
api
( default
)模块有一天会变得像 www
模块只包含html + js文件并通过ajax使用 mobile
模块但是现在大多数模板都是通过 jinja2 在服务器端生成的一些问题。
问题:
由于 api
和 api
( default
)模块正在运行服务器端现在使用数据存储区,我在哪里将数据存储区模型保留在此映像/结构中?除此之外,他们都共享一些图书馆,我在哪里保留它们?我是否在应用程序的根文件夹中创建了一个新的“ lib ”文件夹并将公共/共享文件存储在那里,然后将其符号链接到每个模块?我正在寻找一些最佳实践。
使用单独的git repos进行所有这些工作的最佳方法是什么?我希望我的每个模块都有自己的存储库。如何使用Q1中的共享模型/库?使用模块的GAE应用程序似乎每个应用程序只允许一个www
/ dispath.yaml
/ cron.yaml
/ index.yaml
/ etc(不是每个模块),哪个repo会有这些文件?< / p>
我意识到问题没有一个正确的答案,但我正在寻找最佳实践。请注意,我刚刚开始使用模块,所以我理解它们的工作原理可能完全错误。
答案 0 :(得分:2)
关于第一个问题:是的,您可以创建/ lib文件夹,将其放在文件夹结构的根目录中,并从那里引用所有常用代码。 www和api模块都应该能够访问(共享)此代码。
@Lipis回答了第二个问题:请查看此链接:How do I work with a git repository within another repository?