V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  nekochyan  ›  全部回复第 1 页 / 共 12 页
回复总数  233
1  2  3  4  5  6  7  8  9  10 ... 12  
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 创建的主题 问与答 大家有过突然一夜未眠的经历吗
我晚上喝可乐就会这样,有一次喝太多第二天七八点才睡着
156 天前
回复了 Justin3go 创建的主题 问与答 你用的什么视频录制软件?
用 obs 推流录屏真的很爽,之前经常跟朋友 YY 聊天老是漏麦,obs 直接配置,不捕捉 YY 声音
168 天前
回复了 coldmonkeybit 创建的主题 健康 鼠标滚轮滚到食指关节很疼有什么办法
我换了 mac 的触摸板 3 年了,有明显好转
现在我用 JB 的唯一理由是他的 git 好用,但是我发现完全可以下载个免费 pycharm 当 git 工具使用,所以转向 vs code 了,只有使用需要使用 git 时才打开一下 pycharm
204 天前
回复了 sngxx 创建的主题 git 请教一个开发流程中 GIT 解决冲突的问题
我比较喜欢 feature 开发完成后,master rebase 到 feature ,然后 feature 再 merge 到 master ,冲突都在 feature 上解决了
226 天前
回复了 yuanyao 创建的主题 职场话题 八小时工作制不包括吃饭时间?
第一次见到晚餐回来还要继续正常上班的,难道不是下班才是去晚餐吗,当然加班另算
247 天前
回复了 felix9ia 创建的主题 Web Dev 应不应该把主键 id 暴露在 url 上?
我们有个项目是直接用 ID 异或一个较大的数给前端就行了,然后再异或回来
266 天前
回复了 IurNusRay 创建的主题 硬件 显卡坏了,准备买个二手的
如果真的喜欢玩游戏,为啥不买个好点的显卡呢
1  2  3  4  5  6  7  8  9  10 ... 12  
关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2974 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 41ms · UTC 12:21 · PVG 20:21 · LAX 05:21 · JFK 08:21
Developed with CodeLauncher
♥ Do have faith in what you're doing.