Skip to content

Instantly share code, notes, and snippets.

一波不是一波 riskers

Block or report user

Report or block riskers

Hide content and notifications from this user.

Learn more about blocking users

Contact Support about this user’s behavior.

Learn more about reporting abuse

Report abuse
View GitHub Profile
@riskers
riskers / readme.md
Last active Nov 28, 2019
check node_modules and yarn.lock match
View readme.md

yarn.lock 与 node_modules 保持一致

  • yarn add xxx 添加新的 package,同时更新 package.jsonyarn.lock
  • yarn upgrade xxx 更新 package,同时更新 package.jsonyarn.lock

这样操作过后,我们把 yarn.lock push 到代码仓库中

node_modules 与 yarn.lock 保持一致

团队使用 Yarn 来管理模块依赖,这样只能保证大家的 yarn.lock 是一致的,但不能保证大家的 node_modules 是一致的(因为 node_modules 并不在版本库里)。要是有人升级了模块,别人拿到了新的 yarn.lock ,但是本地的 node_modules 里的模块仍然是旧的。

@riskers
riskers / README.md
Last active Nov 28, 2019
从 prettier 看前端工程化的进展
View README.md

prettier 是更强大的 editorconfig ,读取根目录的 .editorconfig.prettierrc 去执行格式化代码的命令。


从之前的 editorconfig + ESLint + husky 来组成的前端代码风格的实践因为 TypeScript 的到来,前端的工程体系又加入了 TSLint 。

而 TSLint 远远不如 ESLint,很多 ESLint 上有的比如 = 两边的空格数量在 TSLint 上是不检查的。这时候 prettier 又出来了,它仅仅做 Lint 里代码风格检查的那一部分,至于代码质量检查它是不管的:

TSLint 已经被废弃,因为 ESLint 支持 TypeScript 了

@riskers
riskers / README.md
Last active Nov 28, 2019
前后端分离的开始、部署方式
View README.md

simple

  • 开发: devServer || CORS
  • 部署: nginx

web -> nginx -> Java


@riskers
riskers / es6.md
Last active Nov 28, 2019
JavaScript 异步编程
View es6.md

Promise

基本结构

// 创造 Promise 实例

//Promise构造函数接受一个函数作为参数,该函数的两个参数分别是resolve和reject。
var promise = new Promise(function(resolve,reject){	
	//... some code
@riskers
riskers / README.md
Last active Oct 24, 2019
在 VSCode 中飞快使用 Typescript
View README.md

VSCode 中写 TS 使用的快捷键

我已经习惯使用 IDEA 写 Java,所以在 VSCode 里写 Typescript 也想要 rename 、go to defined 这些功能。这些功能在最开始写 JavaScript 的时候还真的没用过,每次都是全局搜索,很 low ~

基本参考这篇文章 https://johnpapa.net/refactoring-with-visual-studio-code/ 然后按照自己的习惯改改快捷键就行了。

常用功能有(快捷键是我自己设置的):

  • format: cmd + shift + l
@riskers
riskers / main.md
Last active Oct 14, 2019
关于 websocket 心跳的一些记录
View main.md

长连接为什么要保持心跳?

websocket心跳是为了让 client 告诉 server 『我还活着,没有掉线』而存在的,否则 server 可能会断掉连接。

国内移动无线网络运营商在链路上一段时间内没有数据通讯后, 会淘汰NAT表中的对应项, 造成链路中断。而国内的运营商一般NAT超时的时间为5分钟,所以通常我们心跳设置的时间间隔为3-5分钟。

一般是 client send ping ,server 返回 pong 保持心跳。

var heartCheck = {
@riskers
riskers / Column.dart
Last active Sep 21, 2019
Flutter Widget Code
View Column.dart
import 'package:flutter/material.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
// TODO: implement build
return MaterialApp(
title: 'Fultter',
@riskers
riskers / application in react.md
Last active Sep 20, 2019
throttle and debounce
View application in react.md

重点是把同步的和要 debounce/throttle 的异步函数分开,并且在 constructor 阶段就把 debounce/throttle 部分做好。

import debounce from 'lodash/debounce'

class T extends React.Component {
  constructor(props) {
    super(props)
    this.deOnChange = debounce(this.deOnChange, 300)
  }
@riskers
riskers / CAS vs oAuth.md
Last active Sep 9, 2019
cookie-session vs JWT vs oauth vs CAS
View CAS vs oAuth.md

都可以做 SSO

  • CAS: 多个系统只需登录一次,无需重复登录
  • oAuth: 第三方系统访问主系统资源,用户无需将在主系统的账号告知第三方,只需通过主系统的授权,第三方就可使用主系统的资源(如:APP1需使用微信支付,微信支付会提示用户是否授权,用户授权后,APP1就可使用微信支付功能了)
@riskers
riskers / immutablejs.md
Last active Apr 23, 2019
reselect 和 immutablejs 学习说明
View immutablejs.md

在 reducer 中,都是返回一个新对象,否则组件是不会更新 ui 的。而返回新对象,可以:

  • Object.assign:比较 hack,每次新生成一个对象
  • ...state
  • immutable.js
You can’t perform that action at this time.