Skip to content

AOT编译兼容性问题 #113

Closed
Closed
@jackjoy

Description

@jackjoy

还没有开始使用jigsaw,但我翻看了一些代码,以我有限的经验来看,jigsaw目前的代码应该是与AOT编译不兼容的,如果我的结论没有错的话,这个问题还是需要尽早解决的。

Activity

rdkmaster

rdkmaster commented on Jul 23, 2017

@rdkmaster
Owner

能说具体一点不?这方面我们确实可能还有问题

jackjoy

jackjoy commented on Jul 23, 2017

@jackjoy
Author

就是使用AOT编译模式时ng build -prod --aot会报错(我没实际试过,但看代码应该会是这样)。有一条最简单的规则是模板中出现的组件属性和方法必须是public的,不能是private的。

rdkmaster

rdkmaster commented on Jul 23, 2017

@rdkmaster
Owner

哦,这个我们有全部修改过了。一开始我们也是以为模板是用到的所有变量都必须是public,实际上不是,有的可以是private的,具体哪些可以是private暂时没搞清楚。

你看jigsaw代码中,所以的 _$ 开头的变量,都是在模板中用到,且不得不定义成public的

jackjoy

jackjoy commented on Jul 23, 2017

@jackjoy
Author

以我的理解,非AOT编译方式可以是私有的,编译没有问题。但如果是Aot编译方式,必须是public的,我粗看了下,有些模板中还有私有变量,如tab.html。因为电脑不在身边没法实际去试,但感觉去做AOT编译会有问题。
angular/angular#12981
https://stackoverflow.com/questions/39378643/angular-2-ahead-of-time-compiler-must-i-make-all-class-properties-public

rdkmaster

rdkmaster commented on Jul 23, 2017

@rdkmaster
Owner

我明天找人看看这个事情,测试一下

jackjoy

jackjoy commented on Jul 23, 2017

@jackjoy
Author

这篇文章有详细的解释以及如何利用getter和setter来保证封装的良好实现。
http://blog.mgechev.com/2016/08/14/ahead-of-time-compilation-angular-offline-precompilation/#the-context-property

rdkmaster

rdkmaster commented on Jul 23, 2017

@rdkmaster
Owner

想起来,我们的CI流程里,有一个流程是将jigsaw主工程的被测demo和jigdaw-seed工程融合后,执行 ng build --prod 以aot方式编译后,再执行我们的e2e测试用例,所以你这个issue说的问题应该是不存在的。详见.travis.yml#L38,现在被注释掉是一个误操作,等 PR #111 会修复这个问题

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

      Development

      No branches or pull requests

        Participants

        @jackjoy@rdkmaster

        Issue actions

          AOT编译兼容性问题 · Issue #113 · rdkmaster/jigsaw