为啥用Django模板生成js代码会被鄙视
谢邀。本问题来源于我的回答 你所见过最恶心的代码片段是怎样的? - 余泽江的回答 。在上链中,展示了某友人在 Django 模版根据传入的 Python 变量动态拼接成 JavaScript 代码的方式。下面简要介绍一下为什么这样做不好。1. 静态文件的动态化静态文件(html,js,css,jpg,etc.)之所以称为静态文件,也就是由于其不变性。可以被缓存、通过 CDN 分发、通过 Nginx 直接读取文件系统等等。JavaScript 被动态化之后,不能被缓存、不能放 CDN、需要 Application Server 的复杂处理。不论从 CPU 还是 IO 上都会影响性能。2. 字符串拼接的危险性一切字符串拼接,包括但不仅限于 SQL、HTML 都会引来不必要的注入风险。对于 Markup 来说都需要经过严格转义和相关处理,对于 Logic Code,完全没得防。3. 现有工具的不可用因为嵌入到 Django 模版中,一切基于 JavaScript 的工具,包括但不仅限于 JSLint、Uglify、Browserify 等,除非自己写中间件。当然,能写中间件的人显然并不会这样写代码。4. 违反 Django 的 MTV 模式就算你要拼接字符串,模版也不是进行复杂运算的地方,要运算放 Python 代码里算好了传过来。5. 代码质量感人没有可读性和可维护性就不说了,可测试性也是基本没有的(当然还能写个端到端测试)。N. 附录并不是用源码生成源码就叫元编程。
推荐阅读
- 为啥看到书柜上的藏书会有心旷神怡的感觉
- 为啥知乎上普便有一种【我在北上广深打工,所以拥有更好的视野】这样的错觉
- 为啥工商银行的用户体验如此之差
- 汽车|看了中消协4S店服务测评调查结果,终于知道法系车为啥卖不好了
- 你为啥从窝窝商城离职?
- 为啥5G和2.4G默认的BSSID是相同的
- 为啥电器实体店的价格比淘宝贵那么多
- 现在在线学习视频有很多了,为啥大部分人还是喜欢下载下来观看
- 为啥到现在你还没有女朋友 ?
- 天赐的声音|33岁张雨绮为啥总离婚?看过这些照片就明白了,都是性感惹得祸