@luzhaoqi/test 0.0.54 → 0.0.55
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +59 -19
- package/package.json +17 -5
- package/src/index.js +38 -0
- package/src/vue-plugin.js +39 -0
- package/test/basic.test.js +17 -0
- package/index.js +0 -23
- package/test.js +0 -13
package/README.md
CHANGED
|
@@ -1,34 +1,74 @@
|
|
|
1
|
-
#
|
|
1
|
+
# @luzhaoqi/test
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Vue 数学运算插件,提供加法和减法功能。
|
|
4
4
|
|
|
5
5
|
## 安装
|
|
6
6
|
|
|
7
7
|
```bash
|
|
8
|
-
npm install
|
|
8
|
+
npm install @luzhaoqi/test
|
|
9
9
|
```
|
|
10
10
|
|
|
11
|
-
##
|
|
11
|
+
## 普通使用
|
|
12
12
|
|
|
13
13
|
```javascript
|
|
14
|
-
const
|
|
15
|
-
|
|
16
|
-
//
|
|
17
|
-
console.log(
|
|
18
|
-
console.log(sum(10, -5, 3.5)); // 8.5
|
|
19
|
-
console.log(sum()); // 0
|
|
20
|
-
|
|
21
|
-
// 错误处理
|
|
22
|
-
try {
|
|
23
|
-
sum('a', 2);
|
|
24
|
-
} catch (e) {
|
|
25
|
-
console.error(e.message); // "所有参数必须是有效数字"
|
|
26
|
-
}
|
|
14
|
+
const { add, subtract } = require('@luzhaoqi/test');
|
|
15
|
+
|
|
16
|
+
console.log(add(1, 2, 3)); // 6
|
|
17
|
+
console.log(subtract(5, 3)); // 2
|
|
27
18
|
```
|
|
28
19
|
|
|
29
|
-
##
|
|
20
|
+
## Vue 插件使用
|
|
21
|
+
|
|
22
|
+
### 全局安装
|
|
23
|
+
|
|
24
|
+
```javascript
|
|
25
|
+
import Vue from 'vue';
|
|
26
|
+
import VueMathOps from '@luzhaoqi/test/src/vue-plugin';
|
|
27
|
+
|
|
28
|
+
Vue.use(VueMathOps);
|
|
29
|
+
```
|
|
30
30
|
|
|
31
|
-
###
|
|
31
|
+
### 使用方式
|
|
32
|
+
|
|
33
|
+
1. 全局方法:
|
|
34
|
+
```javascript
|
|
35
|
+
Vue.add(1, 2, 3); // 6
|
|
36
|
+
Vue.subtract(5, 3); // 2
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
2. 实例方法:
|
|
40
|
+
```javascript
|
|
41
|
+
this.$add(1, 2, 3); // 6
|
|
42
|
+
this.$subtract(5, 3); // 2
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
3. 过滤器:
|
|
46
|
+
```html
|
|
47
|
+
<div>{{ [1, 2, 3] | add }}</div>
|
|
48
|
+
<!-- 渲染为: 6 -->
|
|
49
|
+
|
|
50
|
+
<div>{{ [5, 3] | subtract }}</div>
|
|
51
|
+
<!-- 渲染为: 2 -->
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
4. 指令:
|
|
55
|
+
```html
|
|
56
|
+
<div v-add="[1, 2, 3]"></div>
|
|
57
|
+
<!-- 渲染为: 6 -->
|
|
58
|
+
|
|
59
|
+
<div v-subtract="[5, 3]"></div>
|
|
60
|
+
<!-- 渲染为: 2 -->
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
## API 文档
|
|
64
|
+
|
|
65
|
+
### `add(...numbers)`
|
|
32
66
|
- `...numbers`: 要相加的数字(一个或多个)
|
|
33
67
|
- 返回: 所有数字的和
|
|
34
68
|
- 抛出: 如果任何参数不是数字,则抛出 TypeError
|
|
69
|
+
|
|
70
|
+
### `subtract(a, b)`
|
|
71
|
+
- `a`: 被减数
|
|
72
|
+
- `b`: 减数
|
|
73
|
+
- 返回: a - b 的结果
|
|
74
|
+
- 抛出: 如果参数不是数字,则抛出 TypeError
|
package/package.json
CHANGED
|
@@ -1,14 +1,26 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@luzhaoqi/test",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.55",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "A simple math library with sum function",
|
|
6
|
-
"main": "index.js",
|
|
6
|
+
"main": "src/index.js",
|
|
7
|
+
"module": "src/vue-plugin.js",
|
|
7
8
|
"scripts": {
|
|
8
|
-
"test": "
|
|
9
|
+
"test": "jest",
|
|
9
10
|
"pub": "npm publish --access public"
|
|
10
11
|
},
|
|
11
|
-
"keywords": [
|
|
12
|
+
"keywords": [
|
|
13
|
+
"math",
|
|
14
|
+
"sum",
|
|
15
|
+
"addition",
|
|
16
|
+
"calculator"
|
|
17
|
+
],
|
|
12
18
|
"author": "lzq",
|
|
13
|
-
"license": "MIT"
|
|
19
|
+
"license": "MIT",
|
|
20
|
+
"peerDependencies": {
|
|
21
|
+
"vue": "^2.6.0 || ^3.0.0"
|
|
22
|
+
},
|
|
23
|
+
"devDependencies": {
|
|
24
|
+
"jest": "^27.0.6"
|
|
25
|
+
}
|
|
14
26
|
}
|
package/src/index.js
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 加法函数
|
|
3
|
+
* @param {...number} numbers - 要相加的数字
|
|
4
|
+
* @returns {number} 和
|
|
5
|
+
* @throws {TypeError} 如果参数不是数字
|
|
6
|
+
*/
|
|
7
|
+
function add(...numbers) {
|
|
8
|
+
validateNumbers(numbers);
|
|
9
|
+
return numbers.reduce((total, num) => total + num, 0);
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* 减法函数
|
|
14
|
+
* @param {number} a - 被减数
|
|
15
|
+
* @param {number} b - 减数
|
|
16
|
+
* @returns {number} 差
|
|
17
|
+
* @throws {TypeError} 如果参数不是数字
|
|
18
|
+
*/
|
|
19
|
+
function subtract(a, b) {
|
|
20
|
+
validateNumbers([a, b]);
|
|
21
|
+
return a - b;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* 验证数字
|
|
26
|
+
* @param {Array} numbers - 要验证的数字数组
|
|
27
|
+
* @throws {TypeError} 如果任何参数不是数字
|
|
28
|
+
*/
|
|
29
|
+
function validateNumbers(numbers) {
|
|
30
|
+
if (!numbers.every(num => typeof num === 'number' && !isNaN(num))) {
|
|
31
|
+
throw new TypeError('所有参数必须是有效数字');
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
module.exports = {
|
|
36
|
+
add,
|
|
37
|
+
subtract
|
|
38
|
+
};
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
const { add, subtract } = require('./index');
|
|
2
|
+
|
|
3
|
+
const VueMathOpsPlugin = {
|
|
4
|
+
install(Vue, options) {
|
|
5
|
+
// 添加全局方法
|
|
6
|
+
Vue.add = add;
|
|
7
|
+
Vue.subtract = subtract;
|
|
8
|
+
|
|
9
|
+
// 添加实例方法
|
|
10
|
+
Vue.prototype.$add = add;
|
|
11
|
+
Vue.prototype.$subtract = subtract;
|
|
12
|
+
|
|
13
|
+
// 添加全局过滤器
|
|
14
|
+
Vue.filter('add', function(numbers) {
|
|
15
|
+
return add(...numbers);
|
|
16
|
+
});
|
|
17
|
+
|
|
18
|
+
Vue.filter('subtract', function(numbers) {
|
|
19
|
+
return subtract(...numbers);
|
|
20
|
+
});
|
|
21
|
+
|
|
22
|
+
// 添加指令
|
|
23
|
+
Vue.directive('add', {
|
|
24
|
+
bind(el, binding) {
|
|
25
|
+
el.textContent = add(...binding.value);
|
|
26
|
+
}
|
|
27
|
+
});
|
|
28
|
+
|
|
29
|
+
Vue.directive('subtract', {
|
|
30
|
+
bind(el, binding) {
|
|
31
|
+
if (binding.value.length === 2) {
|
|
32
|
+
el.textContent = subtract(...binding.value);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
module.exports = VueMathOpsPlugin;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
const { add, subtract } = require('../src/index');
|
|
2
|
+
|
|
3
|
+
test('add function', () => {
|
|
4
|
+
expect(add(1, 2, 3)).toBe(6);
|
|
5
|
+
expect(add(10, -5, 3.5)).toBe(8.5);
|
|
6
|
+
expect(add()).toBe(0);
|
|
7
|
+
});
|
|
8
|
+
|
|
9
|
+
test('subtract function', () => {
|
|
10
|
+
expect(subtract(5, 3)).toBe(2);
|
|
11
|
+
expect(subtract(10, -5)).toBe(15);
|
|
12
|
+
});
|
|
13
|
+
|
|
14
|
+
test('error handling', () => {
|
|
15
|
+
expect(() => add('a', 2)).toThrow(TypeError);
|
|
16
|
+
expect(() => subtract('a', 2)).toThrow(TypeError);
|
|
17
|
+
});
|
package/index.js
DELETED
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* 计算数字之和
|
|
3
|
-
* @param {...number} numbers - 要相加的数字
|
|
4
|
-
* @returns {number} 所有数字的和
|
|
5
|
-
* @throws {TypeError} 如果参数不是数字
|
|
6
|
-
* @example
|
|
7
|
-
* sum(1, 2, 3) // 返回 6
|
|
8
|
-
* sum(10, -5, 3.5) // 返回 8.5
|
|
9
|
-
*/
|
|
10
|
-
function sum(...numbers) {
|
|
11
|
-
if (numbers.length === 0) {
|
|
12
|
-
return 0;
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
// 验证所有参数都是数字
|
|
16
|
-
if (!numbers.every(num => typeof num === 'number' && !isNaN(num))) {
|
|
17
|
-
throw new TypeError('所有参数必须是有效数字');
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
return numbers.reduce((total, num) => total + num, 0);
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
module.exports = sum;
|
package/test.js
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
const sum = require('./index');
|
|
2
|
-
|
|
3
|
-
// 基本测试
|
|
4
|
-
console.log('sum(1, 2, 3) =', sum(1, 2, 3)); // 应该输出 6
|
|
5
|
-
console.log('sum(10, -5, 3.5) =', sum(10, -5, 3.5)); // 应该输出 8.5
|
|
6
|
-
console.log('sum() =', sum()); // 应该输出 0
|
|
7
|
-
|
|
8
|
-
// 错误处理测试
|
|
9
|
-
try {
|
|
10
|
-
console.log('sum("a", 2) =', sum('a', 2));
|
|
11
|
-
} catch (e) {
|
|
12
|
-
console.error('错误:', e.message); // 应该输出 "所有参数必须是有效数字"
|
|
13
|
-
}
|