如何在不重复的情况下包含即插即用小部件静态 [CSS/JS]?
我有一个可重复使用的 google-maps
小部件,可以将其插入任何可能想要使用它的页面。
小部件具有:
- Google 地图特定
js
包含。 - 地图特定的
css
来设置地图样式。
问题:
- 小部件代码被包含为
服务器端
包含。 - 小部件特定的
js
和css
必须包含在小部件代码中。 - 因此,如果小部件在页面上重复 5 次,则
js
和css
的 include 语句将被包含 5 次。 - 我无法将小部件特定包含在
标记中,因为如果页面上未使用该小部件,则未使用的
js
和css
下载到客户端。
那么,我应该如何保留 js
和 css
以便仅在使用小部件时才包含它们,并且在重复小部件的情况下不进行多次包含。
我的技术:
Django-Python
[如果这很重要]- 我在
php
上也遇到了同样的问题
注意:
- 我了解在页面上多次包含相同的 js 和 css 不会强制客户端多次下载它们,但我想避免多次包含。
我应该如何解决这个问题?
如果我错过了什么,请随时询问更多信息。 :)
I have a reusable google-maps
widget that can be plugged into any page that might want to use it.
Widget has :
- Google maps specific
js
includes. - Map specific
css
to style the map.
Problem:
- Widget code gets included as
server-side
include. - Widget specific
js
andcss
has to included with the widget code. - Therefore, if widget repeats 5 times on a page, then the include statements for
js
andcss
get included 5 times. - I can-not keep the widget specific includes in the
<head>
tag, since if the widget is not used on the page, then un-usedjs
andcss
gets downloaded on client.
So, how should I keep the js
and css
so they gets included only when the widget is used and no multiple include are done in case the widget is repeated.
My technology:
Django-Python
[ If that matters ]- I also faced the same problem on
php
Note :
- I understand that including the same
js
andcss
multiple times on a page doesn't forces the client to download them multiple times, but I want to avoid the multiple includes.
How should I tackle this problem ?
Please feel free to ask for more info, if I missed something. :)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
根据您的用例,有几个选项:
为需要该小部件的所有页面使用单独的基本模板;在该库中添加所需的 js/css 文件。对于所有需要该小部件的视图,请从修改后的基础继承。
使用javascript实现条件包含。
Depending on your use case a few options:
Use a separate base template for all pages that need the widget; in that base add the required js/css files. For all views that need the widget, inherit from the modified base.
Using javascript implement conditional includes.