nekochyan 最近的时间轴更新
nekochyan

nekochyan

V2EX 第 472934 号会员,加入于 2020-02-28 10:12:29 +08:00
今日活跃度排名 17960
nekochyan 最近回复了
3 天前
回复了 nvyao 创建的主题 音乐 为啥我听不出来无损音乐和普通的区别?
如果你听 ASMR 的话,声音开到 80%以上会有点区别,普通会有点刺耳; 50%以下听音乐我反正是没听出啥区别
10 天前
回复了 foxkiller 创建的主题 生活 从另一个视角来看罗 vs 西贝
本质就是预制菜还卖得那么贵,你看蜜雪冰城大家骂吗,媒体批评大家还帮着维护
10 天前
回复了 zzzbbb 创建的主题 问与答 拉黑罗技!
我也是 g304 ,不到 1 年滚轮键老是往下滚着滚着会突然又回弹一下
42 天前
回复了 llej 创建的主题 程序员 如何实现模块化加载的前端和后端代码?
听起来意思是依赖注入,其他模块想用另一个模块都通过基座包去获取;我们项目大概是这么实现的:每个模块是一个文件夹,文件夹下只可引用基座包,里面调用基座包注入自身模块,这样剪切文件夹就实现了新增和移除模块

至于强类型支持就需要 ts 的类型体操了,可以写一个模块生成器实现在依赖注入,声明其注入的一定是某个类型

下面是我们项目的简单示例

模块生成器文件:

// 声明所有模块都是 TypeModules 类型
declare global {
interface TypeModules { }
}


class _coreModule {
static instance: _coreModule;
moduleMap: { [key: string]: any } = {};
static initInstance(): _coreModule {
return _coreModule.instance = new _coreModule();
}
setModule<T extends keyof TypeModules>(name: T, module: TypeModules[T]) {
this.moduleMap[name] = module;
}
getModule<T extends keyof TypeModules>(name: T): TypeModules[T] {
return this.moduleMap[name] as TypeModules[T];
}
}
export const coreModule = _coreModule.initInstance();


/**
* @desc: 模块生成器
* @param {T} name 模块名称
* @param {new () => TypeModules[T]} moduleClass 模块类
* @return {TypeModules[T]} 模块实例
*/
export function ModuleGenerate<T extends keyof TypeModules>(name: T, moduleClass: new () => TypeModules[T]): TypeModules[T] {
// eg:具体的实现; coreModule 保存注入依赖
const instance = new moduleClass();
coreModule.setModule(name, instance);
return instance;
}



测试文件:
declare global {
interface TypeModules {
/**
* @desc: [模块] 测试模块
*/
testData: TestDataClass
}
}

export class TestDataClass {
// 具体实现
}

// 注入
const testData = ModuleGenerate('testData', TestDataClass);


其他 文件或模块中

// testData 类型就是 TestDataClass ,完全不需要引入 测试模块的文件,但当测试模块删除时,这段代码编译时会报错
let testData = coreModule.getModule('testData');
43 天前
回复了 Joomaen 创建的主题 macOS macOS 26 public beta 系统数据 100 多 G
我的 MacOs40G ,系统数据 150G ,清理都清理不掉
49 天前
回复了 xiafuxin 创建的主题 问与答 V2 怎么输入 emoji,谁教教我,谢谢
这个不应该是输入法的事吗,每个输入法有不同的快捷键🤔
据我所知国内小游戏基本都是 cocos 开发,基本说明问题了
99 天前
回复了 pweng286 创建的主题 分享发现 平板长时间不充电电池饿死了
赶紧给我的小米 6 充一充,看了看三月没开机还有 45%电
100 天前
回复了 tedaz 创建的主题 问与答 大家有过突然一夜未眠的经历吗
我晚上喝可乐就会这样,有一次喝太多第二天七八点才睡着
关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3187 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 14ms · UTC 10:50 · PVG 18:50 · LAX 03:50 · JFK 06:50
Developed with CodeLauncher
♥ Do have faith in what you're doing.