小编Max*_*kyi的帖子

在编译阶段完成的DOM操作只运行一次,并且总是传播 - 这意味着什么

我正在读这篇关于角度性能优化的文章,那里有以下段落:

Directive的编译函数在附加作用域之前运行,是运行任何DOM操作(例如绑定事件)的理想位置.从性能的角度来看,重要的是,在进行任何角度更改之前,传递给compile函数的元素和属性代表原始html模板.这在实践中意味着在这里完成的DOM操作将运行一次,并且总是传播.另一个经常被掩盖的重点是prelink和postlink之间的区别.简而言之,预链接从外部运行,而postlinks从内到外运行.因此,预链接提供了轻微的性能提升,因为它们阻止内部指令在父链接修改预链接中的范围时运行第二个摘要周期.但是,孩子DOM可能尚未推出.

我无法理解这两个部分以及如何使用它来提高性能:

这在实践中意味着在这里完成的DOM操作将运行一次,并且总是传播.

还有这个

prelinks提供了轻微的性能提升,因为它们阻止内部指令在父链接修改预链接中的范围时运行第二个摘要周期

如果有人能够对此表示赞赏,我将不胜感激.

angularjs angularjs-directive angularjs-compile

7
推荐指数
1
解决办法
1300
查看次数

什么是浮点数上溢和下溢

我觉得我不太了解overflowand的概念underflow。我问这个问题是为了澄清这一点。我需要在最基本的层面上理解它。让我们使用1字节的简化浮点表示-1位符号、3位指数和4位尾数:

0 000 0000
Run Code Online (Sandbox Code Playgroud)

我们可以存储的最大指数111_2=7减去K=2^2-1=3给出的偏差4,它是为Infinity和保留的NaN。max number 的指数是3,它110在偏移二进制之下。

所以最大数的位模式是:

0 110 1111 // positive
1 110 1111 // negative
Run Code Online (Sandbox Code Playgroud)

当指数为零时,该数字是次正规的并且具有隐式0而不是1。所以最小数的位模式是:

0 000 0001 // positive
1 000 0001 // negative
Run Code Online (Sandbox Code Playgroud)

我找到了单精度浮点的这些描述:

Negative numbers less than ?(2?2?23) × 2127 (negative overflow)
Negative numbers greater than ?2?149 (negative underflow)
Positive numbers less than …
Run Code Online (Sandbox Code Playgroud)

javascript floating-point ieee-754

7
推荐指数
1
解决办法
1万
查看次数

以下含义如下:()=> void = null

我正在看这两个函数声明:

function f1(chainFn: (fn: Function) => void = null) {

}

function f2(): (...args: any[]) => (cls: any) => any {

}
Run Code Online (Sandbox Code Playgroud)

我真的不明白以下部分的定义:

// function that accepts `fn` of Function type by returns what?
(fn: Function) => void = null

// function that accepts an array of arguments and returns a function that returns a result of `any` type?
(...args: any[]) => (cls: any) => any
Run Code Online (Sandbox Code Playgroud)

任何人都可以详细说明并提供具体实施的例子吗?

typescript

7
推荐指数
2
解决办法
4498
查看次数

如何在Angular中检索组件的元数据

Angular组件有装饰器:

@Component({ ... })
export class MyAngularComponent {
  @Input() myInputParam: MyType;
  @Input() myOtherInputParam: MyOtherType;
  @Output() myOutputParam: MyOtherOutputType;
}
Run Code Online (Sandbox Code Playgroud)

我有一个Angular库,如果我能以编程方式检索@Input()给定组件类(虽然属于库)中的 Angular的装饰器,可以避免很多代码重复(并减少bundle大小).

但我怀疑这种实现的可移植性.我已经读过某个地方,如果Angular应用程序是在启用了AoT的情况下构建的(并且只使用了Angular装饰器),则不需要Reflect polyfill(在运行时读取装饰器所需).所以我认为我不能只使用Reflect.*.Angular如何存储装饰器?是否有可靠,面向未来的方式来阅读它们?

缩小应该不是问题,因为它只用于读取库组件的装饰器,所以我可以控制它.

所以,如果这是可行的方式(或者不是,我仍然感兴趣),我怎么能读取那些装饰器?

angular-decorator angular2-decorators angular-compiler-cli angular

7
推荐指数
1
解决办法
2740
查看次数

即使我在Chrome调试工具中更改视口,为什么网站的宽度也相同?

我正在使用Chrome调试工具的Viewport模拟器.我发现奇怪的是,无论视口宽度如何,Chrome始终报告相同的宽度(以像素为单位),并且缩放和DeviceToPixelRation(DPR)都不会更改.h1设置width为的样式,100%没有其他代码.我希望视口宽度改变时宽度或DPR都会改变.为什么不发生?

在此输入图像描述

在此输入图像描述

这是代码:

<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        * {
            margin: 0;
            padding: 0;
        }

        h1 {
            width: 100%;
            background: blue
        }
    </style>
</head>
<body>
<h1>
    Some header text here
</h1>
Run Code Online (Sandbox Code Playgroud)

html css google-chrome-devtools

7
推荐指数
1
解决办法
312
查看次数

可以git合并两个文件忽略他们共同的祖先

例如,我有以下文件:

// first part
function() {
    var timer = 1;
}

// second part
function() {
    var timer = 2;
}

// third part
function() {
    var timer = 3;
}
Run Code Online (Sandbox Code Playgroud)

现在两个不同的分支改变它.我有变化:
在branch1:

// first part
function() {
    var timer = "changed in branch1";
}

// second part
function() {
    var timer = 2;
}

// third part
function() {
    var timer = 3;
}
Run Code Online (Sandbox Code Playgroud)

在branch2:

// first part
function() {
    var timer = 1;
}

// second part
function() …
Run Code Online (Sandbox Code Playgroud)

git

6
推荐指数
1
解决办法
627
查看次数

强制更新当前分支 - 如何?

我在my-backup树枝上.现在我做了git fetch origin my-backup并且origin/my-backup更新了,我发现它被迫推了.现在我需要更新我的本地my-backup分支以指向origin/my-backup分支.我确实 git branch -f my-backup origin/my-backup得到了警告:fatal: Cannot force update the current branch.强制更新当前分支到远程而不检查其他分支的最佳方法是什么?

git

6
推荐指数
1
解决办法
6231
查看次数

绑定到`undefined`而不是`null`有什么好处

我经常看到,当一个函数需要在没有特定上下文的情况下使用绑定参数进行调用时,undefined通常比null作为上下文的选择更受欢迎,如:

f.call(undefined, param1, param2)
Run Code Online (Sandbox Code Playgroud)

优先于:

f.call(null, param1, param2)
Run Code Online (Sandbox Code Playgroud)

我想知道这有什么特别的原因吗?

javascript

6
推荐指数
1
解决办法
456
查看次数

最终变量可能尚未初始化

我在一个方法中有这样的代码:

final TouchableSpan touchableSpan = new TouchableSpan() {

    @Override
    public void onClick(View widget) {
        this.setPressed(true);

        String extravar = touchableSpan.getMyVar();
    }
Run Code Online (Sandbox Code Playgroud)

在这一行,String extravar = touchableSpan.getMyVar();我得到一个警告,即变量touchableSpan可能尚未初始化.为什么?

当我添加final修饰符时出现此警告.在我之前variable is access from inner class, needs to be declared final.

java android

6
推荐指数
1
解决办法
627
查看次数

为什么不建议使用fstat

我正在阅读这里stat方法手册,它说:

在调用fs.open()之前使用fs.stat()检查文件是否存在,建议不要使用fs.readFile()或fs.writeFile().相反,用户代码应直接打开/读取/写入文件,并在文件不可用时处理引发的错误.

要检查文件是否存在而不事后对其进行操作,建议使用fs.access().

所以,我有两个问题:

  • 为什么使用错误处理程序是fs.stat()检查文件存在的首选方法?

  • 而且由于我可以fs.access()用来检查文件是否存在,是否使用error handler机制仍然是首选的方式来确保文件是打开的?

我想我找到了第二个问题的答案:

在调用fs.open()之前,使用fs.access()检查文件的可访问性,不建议使用fs.readFile()或fs.writeFile().这样做会引入竞争条件,因为其他进程可能会在两次调用之间更改文件的状态.相反,用户代码应该直接打开/读取/写入文件,并处理在文件无法访问时引发的错误.

因此,可能fs.open()阻止文件的其他进程,而fs.stat()fs.access()简单的请求信息和其他进程仍然可以修改/删除文件.

javascript node.js

6
推荐指数
1
解决办法
250
查看次数