跳到主要内容

npm 运行命令传入参数

· 阅读需 1 分钟
Hanasaki
阿巴阿巴阿巴

写 Github Action 的 配置文件时遇到个问题,想把 secret 密钥在执行 npm run xxx 的时候传进来,并在nodejs程序中用到这个变量。

方法

package.json 部分

  "scripts": {
"action": "node ./src/action.js"
}

action.js

let username, password
username = process.argv[process.argv.indexOf('--username')+1] // 用户名在 --username 后面
password = process.argv[process.argv.indexOf('--password')+1] // 密码在 --password 后面
console.log(username + ' ' + password) // 输出传入的参数

rollup插件执行的先后顺序优先级

· 阅读需 2 分钟
Hanasaki
阿巴阿巴阿巴

官方文档写道:

请注意,大多数情况下@rollup/plugin-commonjs应该在其他插件转化你的模块之前进行,这是为了防止其他插件的更改导致对 CommonJS 的检测被破坏。这个规则的一个例外是 Babel 插件,如果你正在使用它,那么把它放在 commonjs 插件之前。

迷惑的问题来了,如果output中写了好几个输出配置,应该在output中的每一个plugins里把commonjs插件执行放在第一个吗,还是写在外面的plugins里写在第一个?

React 事件绑定/this绑定的几种方式

· 阅读需 4 分钟
Hanasaki
阿巴阿巴阿巴

MDN中 Function.prototype.bind()

bind() 方法创建一个新的函数,在 bind() 被调用时,这个新函数的 this 被指定为 bind() 的第一个参数,而其余参数将作为新函数的参数,供调用时使用。

先引入一个例子:

const module = {
x: 42,
getX: function() {
return this.x;
}
};

let unboundGetX = module.getX;
console.log(unboundGetX()); // 该函数在全局范围内被调用
// 输出: undefined

unboundGetX = unboundGetX.bind(module);
console.log(unboundGetX());
// 输出: 42

vue获取proxy对象中的原始对象

· 阅读需 1 分钟
Hanasaki
阿巴阿巴阿巴

在使用vuex时,由于state是响应式的,用它获取对象值输出也是proxy对象。例如:

无论是Vuex还是使用的Composition API 的reactive(),vue中的响应式对象可使用toRaw()方法获取原始对象。

// 导入toRaw函数
import { toRaw } from '@vue/reactivity'
// 该函数返回转换后的对象
const crystal = toRaw(store.state.mapping.crystal)
// 输出可以看到已经不是proxy对象了
console.log(crystal[0])