We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
本文为博客迁移过来,原文链接: 实现简易EventBus:2021-7-11
最近在看一个文章,里面写到event,然后就想试一下,于是就写了一个简单的事件模块。
正好最近的工作一直都在就项目上写代码,很久没有接触ts,干脆以 Events 为例,用ts编写,jest单测,rollup打包编译。
Events
npm init -y npm i rollup rollup/plugin-typescript -D
创建rollup配置
// rollup.config.js import typescript from '@rollup/plugin-typescript' export default { input: 'src/index.ts', output: { dir: 'dist', format: 'cjs' }, plugins: [typescript()] }
新建 tsconfig.json 用于ts配置
tsconfig.json
{ "compilerOptions": { "declaration": true, "declarationDir": "./dist" }, "include": ["src"] }
现在最流行的应该就是jest,而且各方面支持也不错,event只是一个简单的小库,不涉及ui界面还好一些。
有ts的话用 ts-jest初始化,或者也可以直接用 jest --init
ts-jest
jest --init
npm install --save-dev jest typescript ts-jest @types/jest npx ts-jest config:init 或 npx jest --init
最后得到一份 jest.config.js
jest.config.js
module.exports = { collectCoverage: true, coverageDirectory: "coverage", coverageProvider: "v8", preset: 'ts-jest', testEnvironment: "node", }
编写单元测试
describe('添加监听函数', () => { test('on函数', () => { const ee = new EventEmiter() const fn = jest.fn() ee.on('test', () => { fn() }) ee.emit('test') expect(fn.mock.calls.length).toBe(1) }) })
TDD特别适合这种翻译的项目,已经知道API和函数入参、出参等,写好各种测试用例,然后边写边跑测试用例...
比如看到Event.emit绑定的上下文是this
那可以先在测试文件里面写上测试用例,后面再根据这个测试用例去写代码,跑通了意味着代码功能实现。
// index.test.ts test('this 指向', (done) => { const ee = new EventEmitter() ee.on('test', function() { expect(this).toEqual(ee) done() }) ee.emit('test') })
{ "main": "./dist/index.js", "types": "./dist/index.d.ts", "scripts": { "build": "npm test && rollup --config ./rollup.config.js", "watch": "rollup --config ./rollup.config.js --watch", "test": "jest" }, }
如果有需要发布到npm的,可以加一个 github action去发布。具体可以看 https://jsonz1993.github.io/npm-with-github-action/
仓库地址: https://github.com/jsonz1993/Events
The text was updated successfully, but these errors were encountered:
No branches or pull requests
最近在看一个文章,里面写到event,然后就想试一下,于是就写了一个简单的事件模块。
正好最近的工作一直都在就项目上写代码,很久没有接触ts,干脆以
Events
为例,用ts编写,jest单测,rollup打包编译。初始化项目与安装rollup与rollup插件
创建rollup配置
新建
tsconfig.json
用于ts配置单元测试
现在最流行的应该就是jest,而且各方面支持也不错,event只是一个简单的小库,不涉及ui界面还好一些。
有ts的话用
ts-jest
初始化,或者也可以直接用jest --init
最后得到一份
jest.config.js
编写单元测试
coding...
TDD特别适合这种翻译的项目,已经知道API和函数入参、出参等,写好各种测试用例,然后边写边跑测试用例...
比如看到Event.emit绑定的上下文是this
那可以先在测试文件里面写上测试用例,后面再根据这个测试用例去写代码,跑通了意味着代码功能实现。
修改package.json
如果有需要发布到npm的,可以加一个 github action去发布。具体可以看 https://jsonz1993.github.io/npm-with-github-action/
仓库地址: https://github.com/jsonz1993/Events
The text was updated successfully, but these errors were encountered: