- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我过去曾经这样做过,但我完全忘记了我是如何做到的。我正在开发一个 Flask 服务器,其中包含多个应用程序,并且静态文件捆绑在一起,但我希望每个应用程序的静态文件夹中的 js/css 文件仅由该应用程序的 init.py 文件中定义的路由使用。
假设我有一个 appA 和 appB:
app
- static // this contains my common js/css files
- apps
- appA
- __init__.py
- static // appA's js/css files
- appB
- __init__.py
- static // appB's js/css files
我转到“localhost:8000:/appA”(假设它是我定义的路由)。在它的 js 文件中我有
$(document).ready(function(params) {
console.log('appA ready');
});
如果我转到“localhost:8000/appB”并且它的 js 文件中有
$(document).ready(function(params) {
console.log('appB ready');
});
无论我运行哪条路线,我都会在控制台中看到“appA Ready”和“appB Ready”打印。现在我知道这是有道理的。毕竟我已经将它们捆绑在一起并缩小了。但就我的一生而言,我知道我过去使用过 bundle ,但能够找出哪个应用程序使用了哪个静态文件。
重点是使用基本静态目录来存储常见内容,使用应用程序的静态目录来存储特定于应用程序的内容。
我的 Assets 已这样配置
from app.apps.appA import appA
from app.apps.appA import appA_js, appA_css
from app.apps.appB import appB
from app.apps.appB import appB_js, appB_css
flask_app.register_blueprint(appA)
flask_app.register_blueprint(appB)
globals_js = ('js/utils/jquery-3.4.1.min.js',
'js/utils/socket.io.js',
'js/utils/*.js')
globals_css = ('css/utils/common.css',
'css/utils/*.css')
assets = Environment(flask_app)
bundle_globals_js = Bundle(*globals_js + appA_js + appB_js, filters='jsmin', output='dist/local_js.js')
bundle_globals_css = Bundle(*globals_css + appA_css + appB_css, filters='cssmin', output='dist/local_css.css')
assets.register('base_js', bundle_globals_js)
assets.register('base_css', bundle_globals_css)
我觉得我的资源包配置有问题。要么就是这样,要么就是我在 html 中导入文件的方式。
<head>
{% assets "base_js" %}
<script type="text/javascript" src="{{ ASSET_URL }}"></script>
{% endassets %}
{% assets "base_css" %}
<link rel="stylesheet" href="{{ ASSET_URL }}"/>
{% endassets %}
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>{{title}}</title>
</head>
这是 appA 和 appB 所使用的每个特定 html 文件的 header 代码。关于如何使用 bundle ,这里可能存在一个根本性的误解。我只想指定一个公共(public)静态目录,但能够让我的应用程序将自己的 js/css 文件与这些基本文件结合使用。
有人能指出我正确的方向吗?
谢谢!
最佳答案
我想通了,尽管不是我内存中的方式。
而不是将我的所有静态文件捆绑在一起作为“base_js”或“base_css”包,我创建了具有唯一名称的单独 bundle 。
bundles = {
'globals_js': Bundle('js/utils/jquery-3.4.1.min.js',
'js/utils/socket.io.js',
'js/utils/*.js',
filters='jsmin',
output='dist/local_global_js.js'),
'globals_css': Bundle('css/utils/common.css',
'css/utils/*.css',
filters='cssmin',
output='dist/local_global_css.css'),
'appA_js': Bundle(*appA_js,
filters='jsmin',
output='dist/local_appA_js.js'),
'appA_css': Bundle(*appA_css,
filters='cssmin',
output='dist/local_appA_css.css'),
'appB_js': Bundle(*appB_js,
filters='jsmin',
output='dist/local_appB_js.js'),
'appB_css': Bundle(*appB_css,
filters='cssmin',
output='dist/local_appB_css.css')
}
现在我指定一个基本 html 文件,在头部添加全局资源
<head>
{% assets "globals_js" %}
<script type="text/javascript" src="{{ ASSET_URL }}"></script>
{% endassets %}
{% assets "globals_css" %}
<link rel="stylesheet" href="{{ ASSET_URL }}"/>
{% endassets %}
</head>
<body>
{%block data %}{% endblock %}
</body>
</html>
在 appA 或 appB 中,我扩展了该基本 html 文件,并在扩展代码块中添加了我的特定静态资源。
{% extends "base.html" %}
{% block data %}
{% assets "appA_js" %}
<script type="text/javascript" src="{{ ASSET_URL }}"></script>
{% endassets %}
{% assets "appA_css" %}
<link rel="stylesheet" href="{{ ASSET_URL }}"/>
{% endassets %}
{% endblock %}
现在appA/appB只加载各自的静态文件。
谢谢!
关于javascript - Flask-assets - 如何防止特定应用程序的静态 js 文件被另一个应用程序使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59740924/
我在我的应用程序中使用rails 4 和 ruby 1.9.3 以及fancybox2-rails gem,但是 Assets 管道存在一个普遍问题。如果我运行 rake task 进行预编译,那
我把我所有的 Assets 都放在我的包里例如myBundle/Resources/public/css/ 然后像这样加载它们: {% block stylesheets %} {{ parent()
我正在创建RoR-6应用程序,并从此行的application.html.erb文件中引发以下错误: javascript_include_tag 'application', 'data-turbo
我正在对 Play Subproject 功能进行更多扩展测试,如下所述:http://www.playframework.com/documentation/2.0/SBTSubProjects .
我是 symfony 2 和 Assetic 的新手。我想在 CSS 中使用 assetic 和 Sass。我使用自定义字体。我在资源下的包中创建文件夹“assets/css”,里面有 _base.s
这是我的目录结构(这只是一个测试项目): stan@mypc:/generate_assets$ sudo tree -L 3 -p . ├── [drwxr-xr-x] assets │ └─
我使用 node.js connect/express。 有人知道支持 TypeScript 源代码即时编译和缩小的 Assets 管理器吗? 知道如何以编程方式调用编译器吗? 我一直在使用 conn
因此,我们在 Assets 管道摘要方面遇到了一个小问题,因为我们有许多 HTML 模板作为 Assets (对于 AngularJS),并且我们使用 asset_path 在 Javascript
我想从iPad的照片库中获取图像URL。 当我尝试从Image Piicker的信息中获取 UIImagePickerControllerReferenceURL 时 我将URL设为: assets
我正在使用带有Assetic的Symfony 2.1.10版,并且在上次 Composer 更新之后,当我尝试运行php app/console assetic:dump时出现以下错误 Dumping
我的 Assets 管道有问题,我已经有一个名为 Assets 的资源/ Controller 。所以我已将 assets.prefix 选项更改为“/externals”。 config.asset
更新到 Expo sdk 34 后,出现此错误:TypeError:Asset.fromModule 不是函数。 (在“Asset.fromModule(image)”中,“Asset.fromMod
将 Play 框架项目从 2.2.4 迁移到 2.3.8 后遇到问题: 这是运行命令“activatorcompile”的错误输出: [error] ...\workspace\testproject
我在将 Google Analytics 添加到我的 Rails 4 应用程序时遇到了一些困难(参见 this post)。 我通过在 /public/assets/google-analytics.
我正在使用 Symfony2 和 Assetic。最近我一直在做很多 CSS 工作,所以在某个时候我需要命令 $ php app/console assetic:dump --env=prod --n
我正在 Android 开发中迈出第一步,并遇到了 Assets 一词。 据我了解, Assets 只是一个未被解析或引用为资源的文件。 这个词有更准确的定义吗?我应该在哪些情况下在我的应用程序中使用
我添加了 danial-farid--angular-file-upload通过 Rails Assets 将库添加到我的 Rails 4 应用程序。主库加载正常,但 sprockets 找不到它包含
这是我的代码,尽管编码非常粗糙: public void loadStack(AssetManager manager, String path) { String[] lis
我正在使用 Assets 管理我的 Symfony 2 框架中的 CSS 文件。它在生产模式下运行良好。 我的问题是在 Debug模式下,assetic 不断将我的文件合并为一个输出文件。这使得跟踪特
我想以编程方式从重复的相册中删除 Assets (照片不是)。我可以使用照片框架删除相册 我想知道如何从相册中删除 Assets 而不从照片应用中完全删除它。我想在多个地方使用它,例如将 Assets
我是一名优秀的程序员,十分优秀!