Skip to content

脚本规范说明

客户端服务端脚本API和数据不互通,只能通过通讯模块传递信息。

通讯方式:【客户端】|【服务端】

服务端

服务端脚本使用CommonJS规范。导入和导出模块使用CommonJS语法,客户端脚本 ES6 风格的import无法在服务端脚本中使用。

module.exports 是 CommonJS 规范中用于导出模块内容的一种方式。当你使用 module.exports 时,你可以将对象、函数、类或其他任何类型的值赋给它,然后这些值就可以被其他通过 require() 函数导入该模块的JavaScript文件所访问。

导出

javascript
// 定义一个加法函数
function add(a, b) {
  return a + b;
}

// 定义一个减法函数
function subtract(a, b) {
  return a - b;
}

//定义一个变量
var a = 1;

// 使用 module.exports 导出这两个函数和变量
// 注意:我们通常导出一个对象,该对象包含我们想要导出的所有内容
module.exports = {add,subtract,a};

// 或者,如果你只想导出一个函数或值,可以直接这样做:
module.exports = add; // 这样只会导出 add 函数

注意几点:

  • module.exports实际上是一个对象,它默认是一个空对象{}。当你向module.exports赋值时,你实际上是在替换这个默认对象。
  • 如果你使用module.exports = someValue;的形式,那么整个模块就只会导出someValue。如果你想要导出多个内容,你需要将它们作为属性添加到module.exports对象上,如上面的例子所示。
  • 还有一个exports对象,它是module.exports的一个引用(即exports === module.exports在初始时是成立的)。但是,如果你重新给exports赋值,它就不会再是module.exports的引用了,这会导致你导出的内容不是你期望的。因此,推荐直接使用module.exports来避免混淆。

导入

javascript
// 导入 moduleA 模块
const moduleA = require('./moduleA.js');

// 现在你可以使用 moduleA 对象来调用 add 和 subtract 函数和变量了
console.log(moduleA.add(5, 3)); // 输出: 8
console.log(moduleA.subtract(5, 3)); // 输出: 2
console.log(moduleA.a); // 输出: 1

客户端

客户端脚本使用ES6模块化规范。导入和导出模块使用ES6语法,服务端脚本 Node.js/CommonJS 风格的require无法在客户端脚本中使用。

  • export default:每个模块只能有一个export default导出。它用于导出单个值(如函数、类、对象等),并且这个值在导入时可以使用任意名称。
  • export:每个模块可以有多个命名导出。每个导出都可以有自己的名称,并且在导入时需要使用花括号 {} 并指定相同的名称(或者使用 as 关键字进行别名处理)来接收。

导出

javascript
// 定义一个加法函数
function add(a, b) {
    return a + b;
}

// 定义一个减法函数
function subtract(a, b) {
    return a - b;
}

//定义一个变量
var a = 1;

export {add,subtract,a}

// 或者  
  
class MyClass {  
  // 类定义...  
}  
  
export default MyClass;

导入

javascript
// 导入 add 函数和a变量,add函数给它指定一个别名sum  
import {add as sum,a} from './moduleA';  

console.log(sum(2, 3)); // 输出: 5  
console.log(a); // 输出: 5  

// 或者导入 MyClass 类
import './moduleA';  

const instance = new MyClass();  
// 假设 MyClass 有一个方法 doSomething()  
instance.doSomething(); // 调用 MyClass 实例的方法