模块化

跨文件(模块)import

Java只能import Class。Java的变量和函数不能脱离Class存在。File - Class - Var/Func

Python/JS/Go可以 import 变量。Class是可选的,封装逻辑的工具。File - Var/Func

Dagger:

Java Dagger @inject只有三种写法:类构造函数,类字段,类方法
1 写在构造函数上的@inject实现了两个功能,自动填充 [可注入类型] 参数,声明新 [可注入类型]
2 写在类字段或者方法上的@inject则只实现了,自动填充 [可注入类型] 字段/参数

Lambda & Dagger

1 最简单的lambda,就是CDK → Handler类(实现了RequestHandler接口)

2 使用 @Inject时,由于Handler类需要参数,改为暴露一个@Component中返回Handler的方法。[@LambdaHandler]

[x] [HandlerWrapper是自动生成的]3 如果不使用[ @LambdaHandler],只能CDK → HandlerWrapper类(实现RequestHandler)

HandlerWrapper将消息转发给component.handler。

!使用[ @LambdaHandler] 会自动生成HandlerWrapper,直接CDK→LambdaHandler就好。

handler:'com.amazon.offshoreitempartneradapterhandlerlambda.lambda.handler.ProcessHandlerWrapper::handleRequest',

JavaScript两种模块化方式:

CommonJS

// 导出
module.exports = [];
// 引入
const myModule = require('./myModule');

ES Modules (ESM):

// 导出
export function greet() {
}
// 引入
import { greet } from './myModule';