工作日常记录 2017-09-20

本文介绍了使用Webpack和Babel打包Node程序时需要注意的环境配置,以及如何利用RxJS的merge方法来合并多个不相关的Observable流。

工作收获日志 2017-09-20


描述:

工作任务没有多少的时候记录的日志, 随便看看各种node,rxjs之类的内容,随手记录一下遇到的有用的东西,内容之间没有必然的关联。

  1. 使用webpack配合babel来进行打包生成node程序的时候,注意一定要在webpack的config里面指定编译的目标环境为node, 否则编译的时候一些node环境下必须的环境变量无法访问导致错误,如:

    // With 'target' attribute unassigned, 
    // These following code will have problem.
    console.log(`stdin: ${typeof process.stdin}`);
    // Output is `stdin: undefined`
    
    // In webpack.config.js, add following configuration:
    module.exports = {
        // other configs..
        target: 'node',
        // other configs
    };
    
    // After this configuration, you can use following code:
    process.stdin.addListener(
        'data', value => console.log(`input: ${value}`)
    );
    
    // Then in console:
    this is a input phase \n
    // You will receive:
    input: this is a input phase
    
  2. RxJS 的merge方法

    从RxJS的官网上可以知道,这个operator的方法是把几个相互之间没有关系的Observable(假设为a,b,c)合并,生成一个新的Observable流(假设为Combine)。a,b,c任意一个Observable产生了数据都会传递给Combine,之后再传递给订阅了Combine的subscribe函数来进行对应的处理。
    一个简单的例子

    // import necessary libs.
    // Note in Node import is not supported.
    // You need to introduce webpack and babel es2015
    // to compile the following code 
    import Rx from 'rxjs';
    import Events from 'events';
    
    // Here we have two Observable created by timer
    const timer1 = Rx.Observable
    .timer(0, 1000).mapTo({ value: 'input from timer1' });
    const timer2 = Rx.Observable
    .timer(0, 4000).mapTo({ value: 'input from timer2' });
    
    // Here we create a new observable that will be triggered
    // Whenevent we input something on the console
    const inputEmitter = new Events.EventEmitter();
    
    // Register system input
    process.stdin.addListener(
        'data', value => inputEmitter.emit('input', { value })
    );
    
    // Create Observable from event
    const input = Rx.Observable.fromEvent(
        inputEmitter, 'input'
    );
    
    // Create a new Observable stream that merge them
    Rx.Observable.merge(timer1, timer2, input)
    .subscribe(e => console.log(`trigger: ${e.value}`));
    

    webpack编译运行后结果如下

        // After 1 second
        trigger:  input from timer1
        // After another 3 second
        trigger: input from timer2
        // Then we input a string from CLI
        this is a test input
        // Then we immediately have
        trigger: this is a test input
    
AI智能图表创作平台,轻松对话绘图 Next AI Draw.io 是一款融合大语言模型与 draw.io 的创新型图表绘制平台。无需掌握复杂的绘图规则,只需通过自然语言输入,即可完成图表构建、修改与增强,帮助开发者和可视化创作者大幅提升效率。无论你是想绘制 AWS 架构图、GCP 拓扑,还是一个带有动画连接器的系统结构图,这款工具都能通过智能对话快速呈现。 核心亮点 LLM驱动的图表构建 通过 Chat 接口与 AI 对话,快速生成符合语义的图表,轻松支持 draw.io XML 格式解析。 图像识别与复制增强 上传一张已有图表或架构草图,AI 自动识别结构并重建图表,可进一步优化样式或内容。 图表版本管理 内置图表历史记录系统,支持版本切换与回滚,便于团队协作与修改回溯。 交互式绘图对话体验 内置对话界面,可边聊边画图,所见即所得,轻松优化图表结构与排版。 多云架构模板一键生成 支持 AWS、GCP、Azure 架构图自动生成,适配图标库,适合开发、运维、架构师使用。 GCP架构图 动画连接器 支持为图表元素添加动态连接器,提升图表交互性与演示感。 技术架构与支持 Next.js:提供稳定高性能的前端体验 Vercel AI SDK:整合流式对话与多模型支持 react-drawio:实现图表编辑与可视化渲染 多模型接入:支持 OpenAI、Anthropic、Google、Azure、DeepSeek、Ollama 等主流 AI API claude-sonnet-4-5 专项训练:在 AWS 架构图任务上表现优异
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值