我有一些 GAE 应用程序,我想将它们分为三个模块:default
(www
) 、mobile
和 api
但我在理解模块和如何组织代码时遇到了一些困难。
根据图片找到here这就是应用程序的外观。
这是我到目前为止想出的简化结构:
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 函数并且可以独立运行。mobile
模块只是一堆 html+js,与api
通过 ajax 的模块。default
(www
) 模块有一天会变得像mobile
模块仅包含 html+js 文件并通过 ajax 使用api
模块,但目前大多数模板都是在服务器端生成的通过 jinja2 这引起了一些问题。
问题:
因为
api
和default
(www
) 模块目前在服务器端与 Datastore 一起工作,我应该将我的 Datastore 模型保存在此图像/结构中的什么位置?除了它们都共享一些库之外,我应该把它们放在哪里?我是否在应用程序的根文件夹中创建一个新的“lib”文件夹并将公共(public)/共享文件存储在那里,然后将其符号链接(symbolic link)到每个模块?我正在寻找一些最佳实践。使用单独的 git 存储库进行所有这些工作的最佳方法是什么?我希望我的每个模块都有自己的存储库。这将如何与第一季度的共享模型/库一起使用?带有模块的 GAE 应用程序似乎只允许一个
dispath.yaml
/cron.yaml
/index.yaml
/queue.yaml
/etc 每个应用程序(而不是每个模块)所以哪个 repo 会有这些文件?
我知道这些问题没有唯一的正确答案,但我正在寻找最佳实践。请注意,我今天早些时候才开始使用模块,所以我对它们工作方式的理解可能完全错误。
最佳答案
关于第一个问题:是的,您可以创建一个/lib 文件夹,将其放在文件夹结构的根目录下,并从那里引用所有常用代码。 www 和 api 模块都应该能够访问(共享)此代码。
@Lipis 回答了第二个问题:查看此链接:How do I work with a git repository within another repository?
关于python - 如何组织GAE Modules app结构和代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26389301/