assets_common.min.js

assets_common.min.js

odoo将零散的js文件主要打包成了两个文件,分别是web.assets_common.min.js 和web.assets_backend.min.js, 我们分别看看这两个文件里都有些啥?

common.js最先加载,看看里面都有些啥

1、boot.js

定义了odoo这个全局变量,并且定了它的几个对象。

js 复制代码
/* /web/static/src/boot.js */

一看就是跟会话有关,优先加载页没错

复制代码
/* /web/static/src/session.js */
/* /web/static/src/legacy/js/core/cookie_utils.js */

3、underscore.js

Underscore一个 JavaScript 实用库,提供了一整套函数式编程的实用功能,但是没有扩展任何 JavaScript 内置对象。它是这个问题的答案:"如果我在一个空白的 HTML 页面前坐下, 并希望立即开始工作, 我需要什么?"...它弥补了部分jQuery没有实现的功能,同时又是Backbone.js必不可少的部分。

复制代码
/* /web/static/lib/underscore/underscore.js */
/* /web/static/lib/underscore.string/lib/underscore.string.js */

4、moment.js

这个不用说了,跟时间有关的js库

复制代码
/* /web/static/lib/moment/moment.js */

5、luxon.js

moment.js 2.0版本

复制代码
Luxon 是一个轻量的 JavaScript 日期库(压缩后的大小约为 21.1KB),它隶属于 Moment 项目组,在 moment 基础上优化了 API 的语义、时区,统一了 API 的命名规范,让开发者更容易上手,让你彻底摆脱原生难用的方法,从此爱上日期时间

Luxon 的作者名为 icambron,他也是 Moment 的开发者之一,在开发的过程中,他逐渐有了些新想法想去优化,但是却未能成功,一是时区,Moment 的底层架构使得这部分功能难以改善,二是链式调用,这部分与 Moment 现有的 API 完全不兼容,icambron 为了不影响现有的 Moment 功能,于是就新开了一个项目,在吸收了 Moment 的设计思想之上,创造了 Luxon,他断断续续写了 2 年,最终被 Moment 队伍接受,并将 Luxon 放在了 Moment 组织之下,而现在,Moment 虽然还在维护,但是官方已经声明,他们了解了 Moment 的缺陷,虽然项目没有死,但是也不会有更新的东西了(It is not dead, but it is indeed done.),而首推的其他库就是 Luxon


/* /web/static/lib/luxon/luxon.js */

6、owl.js

这么不用说了吧

复制代码
/* /web/static/lib/owl/owl.js */

7、odoo_module.js

这是什么玩意? 就是定义了@odoo/owl 这个模块

复制代码
/* /web/static/lib/owl/odoo_module.js */
odoo.define("@odoo/owl", function () {
    "use strict";
    return owl;
});

8、owl2_compatibility

这俩货从名字看是为了owl2的兼容性,不去管它了,估计也不重要

复制代码
/* /web/static/src/owl2_compatibility/app.js */
/* /web/static/src/owl2_compatibility/event_target.js */

9、从名字看是为了兼容老版的组件系统

复制代码
/* /web/static/src/legacy/js/component_extension.js */
/* /web/static/src/legacy/legacy_component.js */

在src目录下有一个子目录legacy,估计都是为了兼容性而保留的,不知道odoo17还有没有。

10、jquery,永远的神

复制代码
/* /web/static/lib/jquery/jquery.js */
/* /web/static/lib/jquery.ui/jquery-ui.js */
/* /web/static/lib/jquery/jquery.browser.js */
/* /web/static/lib/jquery.blockUI/jquery.blockUI.js */
/* /web/static/lib/jquery.hotkeys/jquery.hotkeys.js */
/* /web/static/lib/jquery.placeholder/jquery.placeholder.js */
/* /web/static/lib/jquery.form/jquery.form.js */
/* /web/static/lib/jquery.ba-bbq/jquery.ba-bbq.js */
/* /web/static/lib/jquery.mjs.nestedSortable/jquery.mjs.nestedSortable.js */

11、popper.js

PopperJS是一个开源的javascript框架,用于在web应用程序上显示/隐藏/重用漂亮的弹出窗口和工具提示。

复制代码
/* /web/static/lib/popper/popper.js */

12、bootstrap 永远的神

, odoo16用的是5.0版本

复制代码
/* /web/static/lib/bootstrap/js/dist/dom/data.js */
/* /web/static/lib/bootstrap/js/dist/dom/event-handler.js */
/* /web/static/lib/bootstrap/js/dist/dom/manipulator.js */
/* /web/static/lib/bootstrap/js/dist/dom/selector-engine.js */
/* /web/static/lib/bootstrap/js/dist/base-component.js */
/* /web/static/lib/bootstrap/js/dist/alert.js */
/* /web/static/lib/bootstrap/js/dist/button.js */
/* /web/static/lib/bootstrap/js/dist/carousel.js */
/* /web/static/lib/bootstrap/js/dist/collapse.js */
/* /web/static/lib/bootstrap/js/dist/dropdown.js */
/* /web/static/lib/bootstrap/js/dist/modal.js */
/* /web/static/lib/bootstrap/js/dist/offcanvas.js */
/* /web/static/lib/bootstrap/js/dist/tooltip.js */
/* /web/static/lib/bootstrap/js/dist/popover.js */
/* /web/static/lib/bootstrap/js/dist/scrollspy.js */
/* /web/static/lib/bootstrap/js/dist/tab.js */
/* /web/static/lib/bootstrap/js/dist/toast.js */

13、tempusdominus.js bootstrap的日期选择器插件

复制代码
/* /web/static/lib/tempusdominus/tempusdominus.js */

14、select2.js

大名顶顶的select2, 下拉框自动搜索

复制代码
/* /web/static/lib/select2/select2.js */

15、clipboard.js

https://zhuanlan.zhihu.com/p/337309625

本期介绍一个非常常用的前端插件 Clipboard.js,Clipboard.js 实现了纯 JavaScript (无 Flash)的浏览器内容复制到系统剪贴板的功能。

复制代码
/* /web/static/lib/clipboard/clipboard.js */

16、jSignatureCustom.js

js手写签名

复制代码
/* /web/static/lib/jSignature/jSignatureCustom.js */

17、qweb2.js

odoo专用模板, Qweb2是一个全局对象,跟odoo一样

复制代码
/* /web/static/lib/qweb/qweb2.js */

QWeb2
{expressions_cache: {...}, RESERVED_WORDS: Array(22), ACTIONS_PRECEDENCE: Array(13), WORD_REPLACEMENT: {...}, VOID_ELEMENTS: Array(16), ...}

18、 legacy

不细看了吧,为了兼容留着的

复制代码
/* /web/static/src/legacy/js/assets.js */
/* /web/static/src/legacy/js/libs/autocomplete.js */
/* /web/static/src/legacy/js/libs/bootstrap.js */
/* /web/static/src/legacy/js/libs/content-disposition.js */
/* /web/static/src/legacy/js/libs/download.js */
/* /web/static/src/legacy/js/libs/jquery.js */
/* /web/static/src/legacy/js/libs/moment.js */
/* /web/static/src/legacy/js/libs/underscore.js */
/* /web/static/src/legacy/js/libs/pdfjs.js */
/* /web/static/src/legacy/js/libs/zoomodoo.js */
/* /web/static/src/legacy/js/libs/jSignatureCustom.js */
/* /web/static/src/legacy/js/core/abstract_service.js */
/* /web/static/src/legacy/js/core/abstract_storage_service.js */
/* /web/static/src/legacy/js/core/ajax.js */
/* /web/static/src/legacy/js/core/browser_detection.js */
/* /web/static/src/legacy/js/core/bus.js */
/* /web/static/src/legacy/js/core/class.js */
/* /web/static/src/legacy/js/core/collections.js */
/* /web/static/src/legacy/js/core/concurrency.js */
/* /web/static/src/legacy/js/core/dialog.js */
/* /web/static/src/legacy/js/core/owl_dialog.js */
/* /web/static/src/legacy/js/core/popover.js */
/* /web/static/src/legacy/js/core/dom.js */
/* /web/static/src/legacy/js/core/local_storage.js */
/* /web/static/src/legacy/js/core/mixins.js */
/* /web/static/src/legacy/js/core/qweb.js */
/* /web/static/src/legacy/js/core/ram_storage.js */
/* /web/static/src/legacy/js/core/registry.js */
/* /web/static/src/legacy/js/core/rpc.js */
/* /web/static/src/legacy/js/core/service_mixins.js */
/* /web/static/src/legacy/js/core/session.js */
/* /web/static/src/legacy/js/core/session_storage.js */
/* /web/static/src/legacy/js/core/time.js */
/* /web/static/src/legacy/js/core/translation.js */
/* /web/static/src/legacy/js/core/utils.js */
/* /web/static/src/legacy/js/core/widget.js */
/* /web/static/src/legacy/js/services/ajax_service.js */
/* /web/static/src/legacy/js/services/config.js */
/* /web/static/src/legacy/js/services/core.js */
/* /web/static/src/legacy/js/services/local_storage_service.js */
/* /web/static/src/legacy/js/services/session_storage_service.js */
/* /web/static/src/legacy/js/common_env.js */
/* /web/static/src/legacy/js/widgets/name_and_signature.js */
/* /web/static/src/legacy/js/core/smooth_scroll_on_drag.js */
/* /web/static/src/legacy/js/widgets/colorpicker.js */
/* /web/static/src/legacy/js/widgets/translation_dialog.js */

19、bus 模块

注意哦,这些文件不是web模块下的,而是bus模块下的,bus模块是跟实时通讯有关的

复制代码
/* /bus/static/src/im_status_service.js */
/* /bus/static/src/multi_tab_service.js */
/* /bus/static/src/services/assets_watchdog_service.js */
/* /bus/static/src/services/bus_service.js */
/* /bus/static/src/services/legacy/make_bus_service_to_legacy_env.js */
/* /bus/static/src/services/legacy/make_multi_tab_to_legacy_env.js */
/* /bus/static/src/services/presence_service.js */
/* /bus/static/src/workers/websocket_worker.js */
/* /bus/static/src/workers/websocket_worker_utils.js */

20、web_tour

这个模块是干嘛的,看看chatgpt的回答

复制代码
在 Odoo 中,web_tour 模块是用于创建和执行网页导览(Web Tours)的模块。网页导览是一种自动化测试工具,用于模拟用户在网页应用程序中的操作流程,并验证应用程序的功能和用户界面。

web_tour 模块提供了一组用于定义和执行网页导览的类和方法。通过使用这些类和方法,你可以编写测试脚本,模拟用户在 Odoo 网页应用程序中的操作,例如点击按钮、填写表单、导航到不同的页面等。

使用 web_tour 模块,你可以创建自动化测试套件,以确保你的 Odoo 应用程序在不同的场景下正常工作。这对于开发人员和质量保证团队来说是非常有用的,因为它可以帮助他们自动化测试流程,减少手动测试的工作量,并提高应用程序的质量和稳定性。

需要注意的是,web_tour 模块是在 Odoo 的 Web 客户端中使用的,而不是在后端模型和控制器中。它主要用于测试和验证前端用户界面的功能。

/* /web_tour/static/src/js/running_tour_action_helper.js */
/* /web_tour/static/src/js/tip.js */
/* /web_tour/static/src/js/tour_manager.js */
/* /web_tour/static/src/js/tour_service.js */
/* /web_tour/static/src/js/tour_step_utils.js */
/* /web_tour/static/src/js/tour_utils.js */

21、web_editor

复制代码
在 Odoo 中,web_editor 模块是用于提供富文本编辑器功能的模块。它允许用户在 Odoo 的 Web 客户端中使用富文本编辑器来编辑和格式化文本内容。

web_editor 模块基于开源的富文本编辑器库,如 TinyMCE 或 Summernote,为用户提供了一组丰富的编辑工具和选项,例如字体样式、字体大小、文本颜色、段落格式、插入链接、插入图片等。用户可以使用这些工具来创建和编辑富文本内容,使其具有更好的可读性和视觉效果。

web_editor 模块广泛应用于 Odoo 的各个模块和功能中,例如网站建设、博客文章、产品描述、电子邮件模板等。它使用户能够以更直观和交互式的方式编辑文本内容,而无需了解 HTML 或 CSS 等技术。

通过使用 web_editor 模块,用户可以更轻松地创建和编辑富文本内容,提高内容的质量和可视化效果。这对于网站管理员、内容编辑人员和用户来说都是非常有用的,因为它提供了更好的用户体验和编辑效率。

/* /web_editor/static/lib/vkbeautify/vkbeautify.0.99.00.beta.js */
/* /web_editor/static/src/js/common/ace.js */
/* /web_editor/static/src/js/common/browser_extensions.js */
/* /web_editor/static/src/js/common/grid_layout_utils.js */
/* /web_editor/static/src/js/common/utils.js */
/* /web_editor/static/src/js/common/wysiwyg_utils.js */
/* /web_editor/static/src/js/editor/odoo-editor/src/utils/utils.js */
/* /web_editor/static/src/js/wysiwyg/fonts.js */

22、附录 common.js

收集的全部js文件,大概6万多行,压缩后是1.6M


复制代码
/* /web/static/src/legacy/js/promise_extension.js */
/* /web/static/src/boot.js */
/* /web/static/src/session.js */
/* /web/static/src/legacy/js/core/cookie_utils.js */
/* /web/static/lib/underscore/underscore.js */
/* /web/static/lib/underscore.string/lib/underscore.string.js */
/* /web/static/lib/moment/moment.js */
/* /web/static/lib/luxon/luxon.js */
/* /web/static/lib/owl/owl.js */
/* /web/static/lib/owl/odoo_module.js */
/* /web/static/src/owl2_compatibility/app.js */
/* /web/static/src/owl2_compatibility/event_target.js */
/* /web/static/src/legacy/js/component_extension.js */
/* /web/static/src/legacy/legacy_component.js */
/* /web/static/lib/jquery/jquery.js */
/* /web/static/lib/jquery.ui/jquery-ui.js */
/* /web/static/lib/jquery/jquery.browser.js */
/* /web/static/lib/jquery.blockUI/jquery.blockUI.js */
/* /web/static/lib/jquery.hotkeys/jquery.hotkeys.js */
/* /web/static/lib/jquery.placeholder/jquery.placeholder.js */
/* /web/static/lib/jquery.form/jquery.form.js */
/* /web/static/lib/jquery.ba-bbq/jquery.ba-bbq.js */
/* /web/static/lib/jquery.mjs.nestedSortable/jquery.mjs.nestedSortable.js */
/* /web/static/lib/popper/popper.js */
/* /web/static/lib/bootstrap/js/dist/dom/data.js */
/* /web/static/lib/bootstrap/js/dist/dom/event-handler.js */
/* /web/static/lib/bootstrap/js/dist/dom/manipulator.js */
/* /web/static/lib/bootstrap/js/dist/dom/selector-engine.js */
/* /web/static/lib/bootstrap/js/dist/base-component.js */
/* /web/static/lib/bootstrap/js/dist/alert.js */
/* /web/static/lib/bootstrap/js/dist/button.js */
/* /web/static/lib/bootstrap/js/dist/carousel.js */
/* /web/static/lib/bootstrap/js/dist/collapse.js */
/* /web/static/lib/bootstrap/js/dist/dropdown.js */
/* /web/static/lib/bootstrap/js/dist/modal.js */
/* /web/static/lib/bootstrap/js/dist/offcanvas.js */
/* /web/static/lib/bootstrap/js/dist/tooltip.js */
/* /web/static/lib/bootstrap/js/dist/popover.js */
/* /web/static/lib/bootstrap/js/dist/scrollspy.js */
/* /web/static/lib/bootstrap/js/dist/tab.js */
/* /web/static/lib/bootstrap/js/dist/toast.js */
/* /web/static/lib/tempusdominus/tempusdominus.js */
/* /web/static/lib/select2/select2.js */
/* /web/static/lib/clipboard/clipboard.js */
/* /web/static/lib/jSignature/jSignatureCustom.js */
/* /web/static/lib/qweb/qweb2.js */
/* /web/static/src/legacy/js/assets.js */
/* /web/static/src/legacy/js/libs/autocomplete.js */
/* /web/static/src/legacy/js/libs/bootstrap.js */
/* /web/static/src/legacy/js/libs/content-disposition.js */
/* /web/static/src/legacy/js/libs/download.js */
/* /web/static/src/legacy/js/libs/jquery.js */
/* /web/static/src/legacy/js/libs/moment.js */
/* /web/static/src/legacy/js/libs/underscore.js */
/* /web/static/src/legacy/js/libs/pdfjs.js */
/* /web/static/src/legacy/js/libs/zoomodoo.js */
/* /web/static/src/legacy/js/libs/jSignatureCustom.js */
/* /web/static/src/legacy/js/core/abstract_service.js */
/* /web/static/src/legacy/js/core/abstract_storage_service.js */
/* /web/static/src/legacy/js/core/ajax.js */
/* /web/static/src/legacy/js/core/browser_detection.js */
/* /web/static/src/legacy/js/core/bus.js */
/* /web/static/src/legacy/js/core/class.js */
/* /web/static/src/legacy/js/core/collections.js */
/* /web/static/src/legacy/js/core/concurrency.js */
/* /web/static/src/legacy/js/core/dialog.js */
/* /web/static/src/legacy/js/core/owl_dialog.js */
/* /web/static/src/legacy/js/core/popover.js */
/* /web/static/src/legacy/js/core/dom.js */
/* /web/static/src/legacy/js/core/local_storage.js */
/* /web/static/src/legacy/js/core/mixins.js */
/* /web/static/src/legacy/js/core/qweb.js */
/* /web/static/src/legacy/js/core/ram_storage.js */
/* /web/static/src/legacy/js/core/registry.js */
/* /web/static/src/legacy/js/core/rpc.js */
/* /web/static/src/legacy/js/core/service_mixins.js */
/* /web/static/src/legacy/js/core/session.js */
/* /web/static/src/legacy/js/core/session_storage.js */
/* /web/static/src/legacy/js/core/time.js */
/* /web/static/src/legacy/js/core/translation.js */
/* /web/static/src/legacy/js/core/utils.js */
/* /web/static/src/legacy/js/core/widget.js */
/* /web/static/src/legacy/js/services/ajax_service.js */
/* /web/static/src/legacy/js/services/config.js */
/* /web/static/src/legacy/js/services/core.js */
/* /web/static/src/legacy/js/services/local_storage_service.js */
/* /web/static/src/legacy/js/services/session_storage_service.js */
/* /web/static/src/legacy/js/common_env.js */
/* /web/static/src/legacy/js/widgets/name_and_signature.js */
/* /web/static/src/legacy/js/core/smooth_scroll_on_drag.js */
/* /web/static/src/legacy/js/widgets/colorpicker.js */
/* /web/static/src/legacy/js/widgets/translation_dialog.js */
/* /bus/static/src/im_status_service.js */
/* /bus/static/src/multi_tab_service.js */
/* /bus/static/src/services/assets_watchdog_service.js */
/* /bus/static/src/services/bus_service.js */
/* /bus/static/src/services/legacy/make_bus_service_to_legacy_env.js */
/* /bus/static/src/services/legacy/make_multi_tab_to_legacy_env.js */
/* /bus/static/src/services/presence_service.js */
/* /bus/static/src/workers/websocket_worker.js */
/* /bus/static/src/workers/websocket_worker_utils.js */
/* /web_tour/static/src/js/running_tour_action_helper.js */
/* /web_tour/static/src/js/tip.js */
/* /web_tour/static/src/js/tour_manager.js */
/* /web_tour/static/src/js/tour_service.js */
/* /web_tour/static/src/js/tour_step_utils.js */
/* /web_tour/static/src/js/tour_utils.js */
/* /web_editor/static/lib/vkbeautify/vkbeautify.0.99.00.beta.js */
/* /web_editor/static/src/js/common/ace.js */
/* /web_editor/static/src/js/common/browser_extensions.js */
/* /web_editor/static/src/js/common/grid_layout_utils.js */
/* /web_editor/static/src/js/common/utils.js */
/* /web_editor/static/src/js/common/wysiwyg_utils.js */
/* /web_editor/static/src/js/editor/odoo-editor/src/utils/utils.js */
/* /web_editor/static/src/js/wysiwyg/fonts.js */
/*******************************************
相关推荐
记得早睡~15 分钟前
leetcode51-N皇后
javascript·算法·leetcode·typescript
拉不动的猪2 小时前
vue自定义指令的几个注意点
前端·javascript·vue.js
yanyu-yaya2 小时前
react redux的学习,单个reducer
前端·javascript·react.js
加瓦点灯2 小时前
观察者模式:解耦对象间的依赖关系
开发语言·javascript·观察者模式
z_mazin3 小时前
Chrome开发者工具实战:调试三剑客
前端·javascript·chrome·网络爬虫
sen_shan4 小时前
Vue3+Vite+TypeScript+Element Plus开发-04.静态菜单设计
前端·javascript·typescript·vue3·element·element plus·vue 动态菜单
旧识君5 小时前
移动端1px终极解决方案:Sass混合宏工程化实践
开发语言·前端·javascript·前端框架·less·sass·scss
ElasticPDF-新国产PDF编辑器5 小时前
Angular use pdf.js and Elasticpdf tutorial
javascript·pdf·angular.js
Carlos_sam5 小时前
Openlayers:海量图形渲染之图片渲染
前端·javascript
你的人类朋友5 小时前
MQTT协议是用来做什么的?此协议常用的概念有哪些?
javascript·后端·node.js