CMeUp

记录一些学习心得,QQ:1139723651.

滚动嵌套

1
-webkit-overflow-scrolling: touch;

这个属性专用于 ios 开启滚动回弹及持续滚动效果(安卓自带)。
当存在嵌套的滚动时,需要给每个 div 都加上这个属性,否则内部的滚动结束后无法传递到外部滚动容器。

在滚动的时候动态设置滚动容器的 overflow

注意,如果在滚动的时候去动态设置滚动容器的 overflow,会导致强烈的抖动。因此,应该在滚动结束后再动态设置 overflow 属性。

对 img 设置 filter: blur

ios 上时常出现渲染失败,表现为图片呲了。解决方法:添加 transform: translateZ (0); 强行交由 GPU 处理。

路由过渡时动画与 ios 边缘操作装车

IOS 边缘操作,了解一下,比如:屏幕左侧右滑,返回上一页;右侧左滑,前进一页。

官网

关于

Electron 通过将 Chromium 和 Node.js 合并到同一个运行时环境中,并将其打包为 Mac,Windows 和 Linux 系统下的应用来实现这一目的。

辅助功能

1
2
3
npm install --save-dev devtron

require('devtron').install();

Electron 应用结构

主进程和渲染器进程

Electron 运行 package.json 的 main 脚本的进程被称为主进程。 在主进程中运行的脚本通过创建 web 页面来展示用户界面。 一个 Electron 应用总是有且只有一个主进程。

由于 Electron 使用了 Chromium 来展示 web 页面,所以 Chromium 的多进程架构也被使用到。 每个 Electron 中的 web 页面运行在它自己的渲染进程中。
在普通的浏览器中,web 页面通常在一个沙盒环境中运行,不被允许去接触原生的资源。 然而 Electron 的用户在 Node.js 的 API 支持下可以在页面中和操作系统进行一些底层交互。

阅读全文 »

require.cache#
Added in: v0.3.0

Modules are cached in this object when they are required. By deleting a key value from this object, the next require will reload the module. Note that this does not apply to native addons, for which reloading will result in an error.

Adding or replacing entries is also possible. This cache is checked before native modules and if a name matching a native module is added to the cache, no require call is going to receive the native module anymore. Use with care!

今天遇到一个小问题:

1
2
3
4
let id: number = 0;
const arr: number[] = [];
arr[id] = ++id;
console.log(arr); // ?

当时我以为是:[undefined, 1],而实际是 [1]。
理解原理就是查看文档:

The production AssignmentExpression : LeftHandSideExpression = AssignmentExpression is evaluated as follows:

  1. Let lref be the result of evaluating LeftHandSideExpression.
  2. Let rref be the result of evaluating AssignmentExpression.
  3. Let rval be GetValue(rref).
  4. Throw a SyntaxError exception if the following conditions are all true:
  • Type(lref) is Reference is true
  • IsStrictReference(lref) is true
  • Type(GetBase(lref)) is Environment Record
  • GetReferencedName(lref) is either “eval” or “arguments”
  1. Call PutValue(lref, rval).
  2. Return rval.

其实不用看后面,前面就说了,先求左值,再求右值。。

type 属于别名,和 interface 在很多地方一致,除了:

  1. interface 方式可以实现接口的 extends 和 implements , 而 type alias 则不行。
  2. interface 可以实现接口的 merge ,但 type alias 则不行。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
interface C {
a: string;
}
interface C {
b: number; // 这里会 merge 在一起
}
const obj:C = {
a: '',
}; // Error: Type '{ a: string; }' is not assignable to type 'C'. Property 'b' is missing in type '{ a: string; }'.

type C = {
a: string;
}
// Error: Duplicate identifier 'C'.
type C = {
b: number;
}
0%