在我加入的项目中,这是node_packages人的建筑:

|- Django project
|-- app1
|-- app2
|-- node_modules
|--- foundation-sites
|--- grunt
|-- static
|--- css
|--- images
|--- js
|--urls.py
|--settings.py
|--package.json

我个人认为node_packages应该是js文件夹下的静态文件,也应该是package.json文件夹下的静态文件:

|- Django project
|-- app1
|-- app2
|-- static
|--- css
|--- images
|--- js
|---- node_modules
|----- foundation-sites
|----- grunt
|---- packages.json
|--urls.py
|--settings.py

有什么不同吗?哪个是最佳实践?为什么?

推荐答案

我理解你想把所有与javascript相关的文件放在一个地方的 idea ,但以下是几个原因,你可能想把node_modules文件夹和package.json文件放在Django应用程序的static目录之外.

  1. You'll likely end up statically serving files that aren't meant to be.如果您的生产环境中存在node_modules文件夹,则运行collectstatic每次都必须判断它是否同步,这可能会因为 node 嵌套的依赖关系 struct 而变得很慢.假设您有一个构建步骤来Bundle 和传输您的JS,如果这些源文件在static%以内,它们也将无缘无故地作为静电文件提供服务.
  2. You might want to use node for more than just your JavaScript build process.我知道你正在使用Grunt,你可能想用它来满足更多的JavaScript需求,比如缩小你的css,或者在Django dev服务器周围运行一个代理服务器,在文件更改或Django服务器重新启动时自动重新加载浏览器.考虑到这一点,考虑Node可能更有意义.js作为构建过程中的工具,可以触及项目的任何部分,JavaScript的Bundle /传输只是其中的一部分.

Django相关问答推荐

Django模型ManyToManyField.Add不起作用

如何在Django REST框架中使用FactoryBoy创建不同的项目

APIView查询未返回任何结果

如何从基于类的视图将用户保存在 django 模型中

有什么方法可以自动设置 Debug True Django application

当我告诉它时,如何使用 Django 的记录器来记录回溯?

多租户 Django 应用程序:根据请求更改数据库连接?

是否可以在没有模型的情况下创建自定义管理视图

如何从 django 自定义中间件类返回 rest_framework.response 对象?

Django 自定义管理器 - 如何仅返回登录用户创建的对象?

如何使用 django 发送 POST 请求?

带有 Django 和 Python 的 Atlassian Bamboo - 可能吗?

在 docker 容器中创建 django 超级用户而不输入密码

如何在 Django 中测试自定义模板标签?

import_module 的 Django 1.9 ImportError

django 模板列表变量中的最后一个元素

如何在 django 中将多张图片上传到博客文章

ModelForm 上的 Django 和字段集

django/文件上传权限

从 git 存储库中删除并忽略所有具有扩展名的文件