openmvide使用需要什么插件_在Django中使用Webpack:再也不需要插件了!
这篇文章将会学习如何在Django中以最小的代价安装Webpack。这个问题常规的解决办法是使用django-webpack-loader,但是在我看来这种方式代价太大。这篇文章的目的是提供一个在Django中安装设置Webpack的手册,只使用Webpack和Django的功能而不使用任何插件。
Django-webpack-loader
django-webpack-loader 看起来是在Django项目中安装Webpack的事实上的解决办法。我尝试使用它但是这个方法的效果并不好:
它需要一个非标准的manifest插件(这看起来也很奇怪)。
它提供了一组定制Django模板的工具,而不是使用Django优秀的内置static功能。
为了使用这些定制工具,需要在Django中做一堆配置。
它是一个很不方便的解决方案,既需要Webpack插件也需要Django插件。
免责声明:尽管我在这里批评了Django-webpack-loader,这并不意味着我否认它的作者在这项工作中付出的艰苦的努力。
普通 Django和Webpack
在Django中使用Webpack实际上相当简单,并不需要任何Webpack或者Django插件。
Django原生支持处理静态资源。在开发过程中,Django可以提供静态资源,并且在生产部署过程中,Django可以压缩文件和对文件名进行哈希。Webpack也可以做这些(甚至更多),但最方便的是让Webpack只负责生成资源,让Django只负责处理资源。
在实践中,像这样做:
1. 使用Django默认的对静态资源的支持
从Django文档中可以看到,重要的设置如下:
STATICFILES_DIRS
STATIC_URL
STATICFILES_STORAGE
- 使用ManifestStaticFilesStorage
让Django通过对文件名哈希来实现缓存.
2. 配置Webpack写入文件到STATICFILES_DIRS变量的目录
你可以使用任何你想使用的Webpack配置项。不过只有一部分重要的配置项:
1. 通过STATICFILES_DIRS变量配置Webpack写入文件的目录
2. 配置output.publicPath变量与Django的STATIC_URL匹配
3. 不让Webpack哈希文件名(除了文件块,参考下文)
4. 确保webpack-dev-server写入文件到磁盘(这样Django可以在部署时提供服务)
现在,在开发过程中你需要同时运行webpack-dev-server和Django服务器。你可以使用程序文件和一个类似Goreman的工具来方便地完成这件事而不需要打开两个终端。Webpack写文件到STATICFILES_DIRS变量指向的目录,Django使用这些文件提供服务。最棒的是:你仍然能够获得Webback的优势,像热加载和动态导入。
你可以使用Django的static标签来包含Webpack生成的资源:
对于生成部署,你首先需要用Webpack构建资源,然后像通常那样使用manage.py collectstatic命令。太方便快捷了!只有简单的Django和Webpack,优雅又简单。
Webpack 文件块(动态导入)
像我们前面提到的那样,使用Webpack哈希块文件名。Webpack运行过程中默认使用块编号来指向块文件。当Django运行collectstatic时,它对文件名进行哈希,然后找到没有哈希的引用进行替换。
例如,如果你在一个样式表中引用指向了foo.jpg文件,然后Django将foo.jpg重名为foo.695e1b313f34.jpg,它将会自动把样式表中引用的文件名从foo.jpg修改为foo.695e1b313f34.jpg。
在运行时,Webpack默认通过块文件的编号chunk id引用它们,因此collectstatic命令不会正确地识别块文件名。通过使用Webpack哈希块文件名,我们得到了被恰当哈希的块文件名,因此这些文件可以被浏览器恰当的缓存。
示例项目
对上面内容,我已经在Github上创建了一个演示项目,因此你可以看看实际效果如何。这个项目也可从Heroku获取。
如果上面的内容对你是有用的,我很想听到你的反馈!
英文原文:https://pascalw.me/blog/2020/04/19/webpack-django.html 译者:穆胜亮
openmvide使用需要什么插件_在Django中使用Webpack:再也不需要插件了!相关推荐
- python 邮箱验证_在Django中进行用户注册和邮箱验证的方法
本文主要介绍我在利用Django写文章时,采用的注册方法.首先说一下整体逻辑思路: •处理用户注册数据, •产生token,生成验证URL, •发送验证邮件, •用户登录网址,进行验证, •验证处理. ...
- axure谷歌浏览器插件_都说谷歌浏览器好用,网页翻译插件插件必不可少
Infinity新标签页插件是一款可以把chrome默认新标签页换成一个美观实用的infinity新标签页,不仅有简洁美观的页面,自定义添加网站,还有邮件提醒,天气预报,笔记功能,待办事项,右下角小风 ...
- cad加载tiff影像插件_设计大神CAD常用的七个插件你会用几个?
说道CAD插件可能会被人们熟知的也就那几个,可是据统计CAD插件多达上百个,那么在这上百个插件中你又会用几个呢?下面就让我们看看大部分设计师常用的插件有哪些吧! 一.cad批量修改图框程序 1.输入加 ...
- idea struts插件_使用Struts 2的查询网格(无插件)
idea struts插件 当将jQuery与struts 2结合使用时,开发人员被说服使用struts2-jQuery插件 . 因为大多数论坛和其他Internet资源都支持jQuery strut ...
- mysql8.0 密码认证插件_只需使用VS Code的REST客户端插件即可进行API调用
为什么要离开IDE去测试新的API?现在你不必这样做了. 我们如何获取数据 如果你已经做了很长时间的Web开发,你可能知道我们的很多工作都是围绕着数据展开的:读取数据.写入数据.操作数据,并以合理的方 ...
- 华视读卡器多浏览器插件_翻遍Chrome商店,这9款插件值得安装
对于电脑浏览器来说,好用的浏览器插件确实方便不少,浏览器插件功能各异,但确实都能满足不少需求. 而现在的浏览器市场,几乎就是Chrome或者基于Chromium内核浏览器的天下,这不微软的Edge向C ...
- jqueryui时间插件_满足您所有日历要求的jQueryUI Datepicker插件
jqueryui时间插件 jQuery provides a variety of Calendar Plugins that would allow you to integrate calenda ...
- 安卓游戏广告加速插件_这是一个你值得拥有的安卓小插件.....
点击上方「稻草人讲万物」关注我们 哈喽大家好,我是稻草人. 今天给你们带来了一个好用又好玩的安卓手机文艺小清新语录插件.有了这个小插件,你可以每天都在手机桌面上看到不一样的文艺语录,每天都是好心情.显 ...
- 写笔记插件_梁宝川:这11条anki插件的使用常识分享给你
每日写一篇文章的第2年195天 anki考研找梁宝川 在我们编辑anki笔记的过程当中,插件我担任着一个非常重要的角色. 因为插件可以帮我们将笔记形式变得更加丰富. 并且,也可以我们更加方便的操作an ...
最新文章
- Git使用常见问题解决方法汇总
- linux 修改ip地址_Day.19 变更IP地址
- accept函数与TCP三次握手
- 移动金融业务风控框架及设备风险识别的意义(上)
- 前端学习(932):mouseenter和mouseover区别
- mysql 日志同步 数据不同步_Mysql互为主从问题--日志同步数据不同步
- CentOS 7 Linux实时内核下的epoll性能分析
- CentOS7 安装部署k8s
- plsql development 注册码
- Matplotlib库学习笔记(4) pyplot的文本显示以及Latex的使用
- 能煮熟鸡蛋的慢 SQL!阿里巴巴数据中心的“煮蛋史”!
- DNS服务(二):域名劫持
- 同事在上班期间在干私活,要不要告诉老板!
- 某金融企业核心存储POC测试及选型经验
- BUGKU (Take the maze)
- 短短一年时间,为何液晶面板价格大涨七成?
- 玩《Minecraft我的世界》学python编程,可免费领|取电子学习版本
- java程序员从笨鸟到菜鸟_Java程序员从笨鸟到菜鸟之(十四)Html基础积累总结(上)...
- 手机访问电脑本地项目
- WmiPrvSE.exe是什么进程?WMI Provider Host占用很高CPU怎么办?