Angularjs   发布时间:2022-04-20  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Angular Compiler选项大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在寻找列出 here的一些Angular Compiler选项的解释:

> useDebug – 打开调试
> useJit – 不清楚(仅在one place使用)
> defaultEncapsulation – 设置认样式封装
>提供者 – 不是很清楚(与ngModule装饰器是否相同?)
> missingTranslation – 策略如果缺少翻译密钥该怎么办
> enableLegacyTemplate – 支持模板标记(已弃用)

解决方法

useJit

使用COdegen还是解释模式.

Codegen是认模式,因此我们可以在浏览器开发工具中看到输出.在此模式下,angular将在编译期间收集的所有语句转换为具有浏览器内存中可执行代码文件.

我知道使用此选项的三个地方

>模块工厂生成https://github.com/angular/angular/blob/4.3.x/packages/compiler/src/jit/compiler.ts#L146

NG:///AppModule/module.ngfactory.js
>组件工厂生成https://github.com/angular/angular/blob/4.3.x/packages/compiler/src/jit/compiler.ts#L282

NG:///AppModule/Component_Host.ngfactory.js

NG:///AppModule/Component.ngfactory.js.
> styleUrls代码生成https://github.com/angular/angular/blob/4.3.x/packages/compiler/src/jit/compiler.ts#L307

NG:///css/0app/app.css.ngstyle.js

解释模式意味着角度将像解释器一样工作.将直接执行先前步骤(词法分析,解析,语义分析,优化)中生成的语句. Angular不会像在codegen模式中那样将代码转换为组件和模块ngfactories.相反,角度使用工厂的特殊包装,即

function _declareFn(
    varNames: String[],statements: o.Statement[],ctx: _ExecutionContext,visitor: StatemenTinterpreter): Function {
  return (...args: anY[]) => _executeFunctionStatements(varNames,args,statements,ctx,visitor);
}

然后它会在每次必要时执行这些包装器.(例如,当你处理事件时,当angular运行updateDirectives,updateRenderer等时)每次使用StatementVisitor来遍历所有语句.

最初解释模式也用于DART https://github.com/angular/angular/commit/2b34c88b69af8b0031fdb7006327bb8260e23dda#diff-ba3d6dc88c6e1cef871391a7843a614eR167但现在这种模式几乎不使用AFAIK.

供应商

如果我们有两个具有相同令牌的提供者,则第二个提供者“获胜”.

因此,提供商选项是覆盖COMPILER_PROVIDERS的一项很棒的功能

比如我们可以

1)自定义DomElementscheR_349_11845@a

> Add custom elements and attributes to compiler schema

2)使用特定的DirectiveResolver覆盖模板

> Using DirectiveResolver to alter @Component metadata

3)覆盖resourceLoader

> https://github.com/angular/angular/issues/13286

4)覆盖Parser,TemplateParser以可视化编译器的工作

> https://alexzuza.github.io/enjoy-ng-parser/

等等…

我们不能对NgModule提供程序做同样的事情,因为编译器使用专用注入器(下图中的JitCompiler注入器)https://github.com/angular/angular/blob/4.3.x/packages/compiler/src/jit/compiler_factory.ts#L115,编译发生在https://github.com/angular/angular/blob/4.3.x/packages/core/src/application_ref.ts#L326-L329 @NgModule提供程序解析之前https://github.com/angular/angular/blob/4.3.x/packages/core/src/application_ref.ts#L297

假设我们有app:

@H_998_39@my-app level1 level2 level3

然后依赖解析算法将如下所示:

Angular Compiler选项

如果我们对所有级别https://plnkr.co/edit/AYExeiYRSQ4H8LiQEgKo?p=preview使用延迟加载

@H_998_39@my-app router-outlet level1 router-outlet level2 router-outlet level3

它将转变为

Angular Compiler选项

为了简化,我在图中省略了路由器出口喷油器.

有关更多详细信息,请参阅设计文档:

> https://docs.google.com/document/d/1OEUIwc-s69l1o97K0wBd_-Lth5BBxir1KuCRWklTlI4

大佬总结

以上是大佬教程为你收集整理的Angular Compiler选项全部内容,希望文章能够帮你解决Angular Compiler选项所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。