Zone.js 简介 & 抛砖引玉

  • 时间:
  • 浏览:1

Zone.js 简介 & 抛砖引玉

2016-09-12 11:10  Justany_WhiteSnow  阅读(...)  评论()  编辑  收藏

Zone.js是angular团队参照NodeJS的Domain,Dart的Zone,为angular 2开发的核心组件。

 

一刚始于,我对Zone.js是拒绝的。让我们都儿知道类似于的 Domain 模块,主很多为了防止异步错误跟踪间题。很多,当我那么太强烈的错误跟踪需求的日后,Zone.js有啥用?

然而execution context不仅仅还都可不都可以 用来跟踪异步错误,还还都可不都可以 做其他猥琐而实用的事情。

先来理解一下 execution context

Zone.current.fork({}).run(function () {
    Zone.current.inTheZone = true;

    setTimeout(function () {
        console.log('in the zone: ' + !!Zone.current.inTheZone); 

execution context,让我们都儿还都可不都可以 理解成只与当前 fork 出来的Zone实例相关的上下文。

里面的例子很明显,却说那么在 fork 中 Zone 的实例让我们都儿才设置了 Zone.current.inTheZone 为 true,很多在外面打印出来的结果是 false。

好神奇,你你这名为什么做到的呢?

让我们都儿想像里面那个过程是同步的,那么处于了哪几种呢?

const defaultZone = Zone.current

很好,同步那么哪几种间题,那么异步为什么办呢?人太好很简单,很多在每有另一一两个 异步入口加有另一一两个 看门人,就还那么。

const defaultZone = Zone.current

当然Zone.js实现比里面复杂性得多,有兴趣的同学还都可不都可以 看看源代码。

在同有另一一两个 项目使用不同版本的 jQuery

从里面的例子看,让我们都儿还都可不都可以 看多,让我们都儿还都可不都可以 在 zone 实例上保存那么该 zone 使用的属性。那么让我们都儿在利用Object.defineProperty就还都可不都可以 达成让我们都儿的目标了。

  • 让我们都儿先简单写有另一一两个 模块执行器(意思是我才想要管加载的事情):
  • 试用一下:

具体实现参见:(two-different-jquery)[https://github.com/miniflycn/async-technique-you-may-do-not-know/tree/master/two-different-jquery]

更进一步

人太好让我们都儿还都可不都可以 基于 Zone.js 做有另一一两个 Sandbox,则在大型重历史包袱的应用中,还都可不都可以 很好地将多个技术体系共存而不产生恶心的冲突间题。

却说做有另一一两个 对任意模块依赖注入的方案,对模块之间做删剪解耦。

  • 分类 Javascript
  •