Odoo 15 中如何管理静态资源

admin 2022-10-6 350402


Odoo 15 中如何管理静态资源

当我们进入 Odoo 时,管理静态资产并不是那么简单,因为我们知道在 Odoo 中我们拥有广泛的应用程序和代码库。只是在 Odoo 中,不同的应用程序具有独特的用途,并且它们也具有不同的 UI。因此,与任何其他应用程序相比,Odoo 中的资产并不是那么容易或直接。例如,在某些情况下,我们可能不需要所有资产,而这些资产可能很大。由于加载大量不必要的静态资产是不健康的,我们可能需要按需加载它们,即延迟加载。为了避免在 Odoo 中出现这种情况,我们为不同的代码库使用不同的资产包。此外,与 Odoo 以前的版本相比,Odoo 15 中的资产管理也有很大不同。让我们看看它是怎样的。

资源类型:

不同类型的资源是

1.代码(js文件)

我们可以在 Odoo 中看到三组不同的 Javascript 文件,它们都捆绑在一起并提供给浏览器。Odoo 支持的不同类型的 javascript 文件是纯 javascript 文件、本机 javascript 模块和 Odoo 模块。在这个纯 javascript 中,文件仅为外部库和特定类型的低级目的保留,所有新创建的 javascript 文件都应在本机 javascript 模块系统中创建。Odoo 模块是自定义模块系统。如果不在资产调试模式下,所有这些 javascript 文件都会被处理并缩小并最终连接。最后,结果以附件形式存储。通常,这些附件使用 <script> 标记加载到页面的 <head> 标记中的静态文件中。

2. 样式(CSS 或 SCC 文件)

通常,样式可以使用 CSS 或 SCC 文件来完成。如 javascript 文件中所述,样式文件也保存为附件文件,并使用 <head> 标记中的 <link> 标记加载。

3. 模板

模板是静态 XML 文件,它们在需要时是只读的,最后像 javascript 文件和样式文件一样连接起来。每当浏览器加载 odoo 时,它都会调用 /web/WebClient/qweb/ 控制器来获取模板。

捆绑

Odoo 资产按捆绑包分组,每个捆绑包都是特定类型资产的不同文件路径列表,例如 javascript、XML 和样式文件(CSS 或 scss)。捆绑包在 Odoo 模块的清单文件中列出。由于这些文件使用的是地球语法,我们可以在一行中声明不同的资产文件。在模块 __manifest__ 文件中添加捆绑包时,包含字典的关键资产专用于此。各种字典中的键是捆绑名称和值,键是它们可能包含的文件列表。

样本:

如何在 odoo-15 中管理资产捆绑包


Odoo 中使用的一些重要捆绑包是:

1. web.assets_common

它包含 Web 客户端、销售点和网站共有的大部分资产。它包括 boot.js 文件(定义 Odoo 模块系统的文件)。此外,这是包含对 Odoo 框架有用的较低级别构建块的捆绑包。

2. web.assets_backend

这是包含特定于操作管理器/Web 客户端或视图的代码的包,即基本上用于 Web 客户端

3. web.assets_frontend

这个是针对电子商务、博客、论坛等公共网站的

4. web.assets_qweb

所有静态 XML 模板都用于后端环境和销售点。

5. web.qunit_suite_tests

所有 javascript qunit 测试代码(测试、助手、模拟)

6. web.qunit_mobile_suite_tests

捆绑特定于移动设备的 qunit 测试代码

操作

使用 assets_common 或 assets_backend 处理资产太容易了。但在某些情况下,我们可能还需要一些操作。操作如下。

append

这个用于添加一个或多个文件。这是最常用的操作,可以如下进行。如何在 odoo-15 中管理资产捆绑包 

prepend
这个用于在bundle的开头添加一个或多个文件。语法: ('prepend',   <path> ) 如何在 odoo-15 中管理资产捆绑包

before
在特定文件之前添加一个或多个文件。

在包的开头添加文件可能不够精确。before 指令可用于在目标文件之前添加给定文件。它是通过用 3 元素元组('before'、  <target>、<path>)替换正常路径来声明的。

如何在 odoo-15 中管理资产捆绑包

after

与before类似,匹配文件直接附加目标文件之后。

语法:( 'after', <target>, <path>)

如何在 odoo-15 中管理资产捆绑包

include

使用嵌套包。include 指令是一种在其他捆绑包中使用捆绑包以最小化清单大小的方法。

语法:('include', <bundle>)



最新回复 (0)
返回