如何在Django中使用节点模块?

如何在Django中使用节点模块?,django,django-staticfiles,django-static,Django,Django Staticfiles,Django Static,我希望在django项目中使用date fns,但不完全确定如何继续-我不能依赖CDN,需要以某种方式安装它。我在我的根文件夹中运行了npm init,之后是npm安装日期fns。这将生成一个node_modules文件夹和一个package.json文件 我不完全确定接下来该怎么做。必要的步骤是什么 我只是使用 <script src="{% static 'node_modules/date-fns' %}"></script> 在my ba

我希望在django项目中使用date fns,但不完全确定如何继续-我不能依赖CDN,需要以某种方式安装它。我在我的根文件夹中运行了
npm init
,之后是
npm安装日期fns
。这将生成一个node_modules文件夹和一个package.json文件

我不完全确定接下来该怎么做。必要的步骤是什么

我只是使用

<script src="{% static 'node_modules/date-fns' %}"></script>


在my base.html文件中?

使用
static
模板运算符时使用的搜索路径在
STATICFILES\u DIR
()中的
settings.py
文件中定义。这将允许静态操作员查找库文件并生成URL

但是,请注意,web服务器仍然需要从
STATIC\u URL
定义的预期路径为文件提供服务。项目根目录中的
manage.py
工具包含一个命令,该命令可以将所有静态搜索目录复制到一个位置,以简化这些文件的服务

还请注意,您显示了一个代码示例,该示例将脚本标记中的npm库目录作为脚本引用,但浏览器不知道如何从该目录中查找脚本
node
通常使用库的
package.json
来查找入口点。有必要特别调用包中感兴趣的脚本文件

一种选择是使用webpack或rollup等捆绑工具将所有资源收集到一个位置

另一个选项是将节点路径添加到静态路径,可能带有前缀。它可能看起来像下面这样

STATIC\u URL='/STATIC/'
静态根='dist/STATIC/'
静态文件\u目录=(
join(BASE_DIR,'static'),
#这定义了一个前缀,因此url路径将变为`/static/node\u modules/`
('node_modules',os.path.join(BASE_DIR,'node_modules/'),
)
具体包括
index.js
,而不仅仅是模板文件中的日期fns

{%load static%}
如果从
static\u ROOT
收集和提供静态文件,以下命令将把
STATICFILES\u DIRS
内容收集到
dist/static

python manage.py