【odoo | JavaScript | ES6】浅谈前端导入(import)和导出(export)

概要

        前端开发中的导入(import)和导出(export)是指在JavaScript模块系统中引入和输出代码的机制。ES6(ECMAScript 2015)引入了这种模块化系统,使开发者可以更加高效地组织和管理代码。

导出

导出是指在一个模块中定义并暴露一些变量、函数、类或其他代码,使得这些代码可以在其他模块中被导入和使用。导出有两种主要方式:

命名导出(Named Export)
  • 使用 export 关键字,可以导出多个变量、函数或类。
  • 语法:
     
      
    1. // 导出变量

    2. export const myVariable = 42;

    3. // 导出函数

    4. export function myFunction() {

    5. console.log('Hello, world!');

    6. }

    7. // 导出类

    8. export class MyClass {

    9. constructor(name) {

    10. this.name = name;

    11. }

    12. }

  • odoo代码例子: 
    export class EmployeeProfileRecord extends Record {}
默认导出(Default Export)
  • 使用 export default 关键字,每个模块只能有一个默认导出。
  • 语法:
     
      
    1. // 导出变量

    2. const myVariable = 42;

    3. export default myVariable;

    4. // 导出函数

    5. export default function() {

    6. console.log('Hello, world!');

    7. }

    8. // 导出类

    9. export default class {

    10. constructor(name) {

    11. this.name = name;

    12. }

    13. }

  • odoo代码例子:
 
  1. const StandaloneM2OAvatarEmployee = Widget.extend(StandaloneFieldManagerMixin, {

  2. className: 'o_standalone_avatar_employee',

  3. });

  4. export default StandaloneM2OAvatarEmployee;

导入 

导入是指在一个模块中引入另一个模块中导出的代码。导入有多种方式,取决于导出的内容类型。

导入命名导出(Import Named Exports) 
  • 使用 import { ... } 语法导入命名导出。
  • 语法:
     
      
    1. import { myVariable, myFunction, MyClass } from './myModule';

    2. console.log(myVariable); // 42

    3. myFunction(); // 输出 'Hello, world!'

    4. const obj = new MyClass('John');

    5. console.log(obj.name); // 'John'

  • odoo代码例子: 
    import { Many2OneAvatarUserField, KanbanMany2OneAvatarUserField } from "@mail/views/fields/many2one_avatar_user_field/many2one_avatar_user_field";

导入默认导出(Import Default Export)
  • 使用 import ... from 语法导入默认导出。
  • 语法:
     
      
    1. import myVariable from './myModule';

    2. console.log(myVariable); // 42

    3. import myFunction from './myModule';

    4. myFunction(); // 输出 'Hello, world!'

    5. import MyClass from './myModule';

    6. const obj = new MyClass('John');

    7. console.log(obj.name); // 'John'

  •  odoo代码例子:
    import StandaloneM2OAvatarEmployee from '@hr/js/standalone_m2o_avatar_employee';
组合导入(Combining Imports)
  • 可以同时导入默认导出和命名导出。
  • 语法:
     
      
    1. import defaultExport, { namedExport1, namedExport2 } from './myModule';

    2. console.log(defaultExport);

    3. console.log(namedExport1);

    4. console.log(namedExport2);

导入所有导出(Import All Exports)
  • 使用 import * as 语法导入模块中的所有导出。
  • 语法:
     
      
    1. import * as myModule from './myModule';

    2. console.log(myModule.myVariable); // 42

    3. myModule.myFunction(); // 输出 'Hello, world!'

    4. const obj = new myModule.MyClass('John');

    5. console.log(obj.name); // 'John'

优势

  • 提高代码可维护性和可读性。
  • 避免命名冲突。
  • 支持代码重用。

注意点 

  • 命名导出:

    • 可以有多个。
    • 导入时需要使用大括号 {}
  • 默认导出:

    • 每个模块只能有一个。
    • 导入时不需要使用大括号 {}

小结

        多写多敲多思考,毕竟,知己知彼才能看懂源码。

  • 19
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值