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这个全局变量,并且定了它的几个对象。

/* /web/static/src/boot.js */

2、session.js 和 cookie_utils.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 */
/*******************************************

你可能感兴趣的:(odoo16前端框架分析,javascript,odoo)