ela*_*ver 22 python architecture django node.js npm
在我加入的项目中,这是以下的架构node_packages
:
|- Django project
|-- app1
|-- app2
|-- node_modules
|--- foundation-sites
|--- grunt
|-- static
|--- css
|--- images
|--- js
|--urls.py
|--settings.py
|--package.json
Run Code Online (Sandbox Code Playgroud)
我个人认为node_packages
应该是在js
文件夹下的静态以及package.json
类似的:
|- Django project
|-- app1
|-- app2
|-- static
|--- css
|--- images
|--- js
|---- node_modules
|----- foundation-sites
|----- grunt
|---- packages.json
|--urls.py
|--settings.py
Run Code Online (Sandbox Code Playgroud)
有区别吗?这是最佳做法?为什么?
jos*_*son 27
我理解你想要将所有与javascript相关的文件保存在一个地方的想法,但是这里有几个原因你可能想要将node_modules
文件夹和package.json
文件保存在Django应用程序的static
目录之外.
node_modules
生产环境中存在该文件夹collectstatic
,则每次运行时都必须检查它是否同步,由于节点嵌套的依赖关系结构,这可能会很慢.假设您有一个构建步骤来捆绑和转换您的JS,如果这些源文件在其中static
,它们也将无缘无故地作为静态文件提供.css
,或者在你的Django dev服务器周围运行一个代理服务器,当你改变文件或Django服务器时自动重新加载你的浏览器重新启动.考虑到这一点,将Node.js视为构建过程中可能触及项目任何部分的工具可能更有意义,JavaScript的捆绑/转换只是其中的一部分.zxz*_*zak 10
把npm_modules
和package.json
你的项目的顶层:
npm_modules
到.gitignore
仅提供生成的文件.将源代码保留在外面STATICFILES_DIRS
(可选)如果你想在没有售卖的情况下提供一些npm模块(而不是bower),请使用像django-npm这样的工具来指定将要暴露的内容
示例项目:
https://github.com/mbrochh/django-reactjs-boilerplate
https://github.com/Seedstars/django-react-redux-base
一般来说,node_modules
应该在Django应用程序之外.我用于Django应用程序的典型格式如下:
- AppName
---- appname (This is the Django Project)
---- appname-env (Python virtualenv)
---- bower_components
---- bower.json
---- gulpfile.js
---- node_modules
---- package.json
---- requirements.txt
Run Code Online (Sandbox Code Playgroud)
然后我使用gulp将组件从节点模块或bower组件复制到我的app static/lib
目录中.
归档时间: |
|
查看次数: |
11037 次 |
最近记录: |