X Tutup
Skip to content

Commit 2b34c88

Browse files
committed
refactor(view_compiler): codegen DI and Queries
BREAKING CHANGE: - Renderer: * renderComponent method is removed form `Renderer`, only present on `RootRenderer` * Renderer.setDebugInfo is removed. Renderer.createElement / createText / createTemplateAnchor now take the DebugInfo directly. - Query semantics: * Queries don't work with dynamically loaded components. * e.g. for router-outlet: loaded components can't be queries via @ViewQuery, but router-outlet emits an event `activate` now that emits the activated component - Exception classes and the context inside changed (renamed fields) - DebugElement.attributes is an Object and not a Map in JS any more - ChangeDetectorGenConfig was renamed into CompilerConfig - AppViewManager.createEmbeddedViewInContainer / AppViewManager.createHostViewInContainer are removed, use the methods in ViewContainerRef instead - Change detection order changed: * 1. dirty check component inputs * 2. dirty check content children * 3. update render nodes Closes angular#6301 Closes angular#6567
1 parent 45f09ba commit 2b34c88

File tree

312 files changed

+14232
-16527
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

312 files changed

+14232
-16527
lines changed

gulpfile.js

Lines changed: 22 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -177,8 +177,8 @@ var PAYLOAD_TESTS_CONFIG = {
177177
return path.join(__dirname, CONFIG.dest.js.prod.es5, 'payload_tests', caseName,
178178
'ts/' + packaging);
179179
},
180-
systemjs: {sizeLimits: {'uncompressed': 870 * 1024, 'gzip level=9': 165 * 1024}},
181-
webpack: {sizeLimits: {'uncompressed': 550 * 1024, 'gzip level=9': 120 * 1024}}
180+
systemjs: {sizeLimits: {'uncompressed': 880 * 1024, 'gzip level=9': 170 * 1024}},
181+
webpack: {sizeLimits: {'uncompressed': 560 * 1024, 'gzip level=9': 130 * 1024}}
182182
}
183183
};
184184

@@ -640,7 +640,7 @@ gulp.task('buildRouter.dev', function() {
640640
gulp.task('test.unit.dart', function(done) {
641641
printModulesWarning();
642642
runSequence('build/tree.dart', 'build/pure-packages.dart', '!build/pubget.angular2.dart',
643-
'!build/change_detect.dart', '!build/remove-pub-symlinks', function(error) {
643+
'!build/remove-pub-symlinks', function(error) {
644644
var watch = require('./tools/build/watch');
645645

646646
// if initial build failed (likely due to build or formatting step) then exit
@@ -779,7 +779,7 @@ gulp.task('!checkAndReport.payload.js', function() {
779779

780780
gulp.task('watch.dart.dev', function(done) {
781781
runSequence('build/tree.dart', 'build/pure-packages.dart', '!build/pubget.angular2.dart',
782-
'!build/change_detect.dart', '!build/remove-pub-symlinks', function(error) {
782+
'!build/remove-pub-symlinks', function(error) {
783783
var watch = require('./tools/build/watch');
784784

785785
// if initial build failed (likely due to build or formatting step) then exit
@@ -789,7 +789,8 @@ gulp.task('watch.dart.dev', function(done) {
789789
return;
790790
}
791791

792-
watch(['modules/angular2/**'], {ignoreInitial: true}, ['!build/tree.dart']);
792+
watch(['modules/angular2/**', 'modules_dart/**'], {ignoreInitial: true},
793+
['!build/tree.dart', 'build/pure-packages.dart']);
793794
});
794795
});
795796

@@ -911,21 +912,20 @@ gulp.task('test.unit.cjs', ['build/clean.js', 'build.tools'], function(neverDone
911912
gulp.task('test.unit.dartvm', function(neverDone) {
912913
var watch = require('./tools/build/watch');
913914

914-
runSequence(
915-
'build/tree.dart', 'build/pure-packages.dart', '!build/pubget.angular2.dart',
916-
'!build/change_detect.dart', '!test.unit.dartvm/run', function(error) {
917-
// Watch for changes made in the TS and Dart code under "modules" and
918-
// run ts2dart and test change detector generator prior to rerunning the
919-
// tests.
920-
watch('modules/angular2/**', {ignoreInitial: true},
921-
['!build/tree.dart', '!build/change_detect.dart', '!test.unit.dartvm/run']);
922-
923-
// Watch for changes made in Dart code under "modules_dart", then copy it
924-
// to dist and run test change detector generator prior to retunning the
925-
// tests.
926-
watch('modules_dart/**', {ignoreInitial: true},
927-
['build/pure-packages.dart', '!build/change_detect.dart', '!test.unit.dartvm/run']);
928-
});
915+
runSequence('build/tree.dart', 'build/pure-packages.dart', '!build/pubget.angular2.dart',
916+
'!test.unit.dartvm/run', function(error) {
917+
// Watch for changes made in the TS and Dart code under "modules" and
918+
// run ts2dart and test change detector generator prior to rerunning the
919+
// tests.
920+
watch('modules/angular2/**', {ignoreInitial: true},
921+
['!build/tree.dart', '!test.unit.dartvm/run']);
922+
923+
// Watch for changes made in Dart code under "modules_dart", then copy it
924+
// to dist and run test change detector generator prior to retunning the
925+
// tests.
926+
watch('modules_dart/**', {ignoreInitial: true},
927+
['build/pure-packages.dart', '!test.unit.dartvm/run']);
928+
});
929929
});
930930

931931
gulp.task('!test.unit.dartvm/run',
@@ -1069,9 +1069,9 @@ gulp.task('build/pure-packages.dart/angular2', function() {
10691069

10701070
// Builds all Dart packages, but does not compile them
10711071
gulp.task('build/packages.dart', function(done) {
1072-
runSequence('lint_protos.dart', 'build/tree.dart', 'build/pure-packages.dart',
1072+
runSequence('lint_protos.dart', 'pubget.dart', 'build/tree.dart', 'build/pure-packages.dart',
10731073
// Run after 'build/tree.dart' because broccoli clears the dist/dart folder
1074-
'!build/pubget.angular2.dart', '!build/change_detect.dart', sequenceComplete(done));
1074+
'!build/pubget.angular2.dart', sequenceComplete(done));
10751075
});
10761076

10771077
// Builds and compiles all Dart packages
@@ -1467,34 +1467,6 @@ gulp.task('gen_protos.dart', function(done) {
14671467
done);
14681468
});
14691469

1470-
// change detection codegen
1471-
gulp.task('build.change_detect.dart', function(done) {
1472-
return runSequence('build/packages.dart', '!build/pubget.angular2.dart',
1473-
'!build/change_detect.dart', done);
1474-
});
1475-
1476-
gulp.task('!build/change_detect.dart', function(done) {
1477-
var fs = require('fs');
1478-
var spawn = require('child_process').spawn;
1479-
1480-
var changeDetectDir = path.join(CONFIG.dest.dart, 'angular2/test/core/change_detection/');
1481-
var srcDir = path.join(changeDetectDir, 'generator');
1482-
var destDir = path.join(changeDetectDir, 'generated');
1483-
1484-
var dartStream = fs.createWriteStream(path.join(destDir, 'change_detector_classes.dart'));
1485-
var genMain = path.join(srcDir, 'gen_change_detectors.dart');
1486-
var proc = spawn(DART_SDK.VM, [genMain], {stdio: ['ignore', 'pipe', 'inherit']});
1487-
proc.on('error', function(code) {
1488-
done(new Error('Failed while generating change detector classes. Please run manually: ' +
1489-
DART_SDK.VM + ' ' + dartArgs.join(' ')));
1490-
});
1491-
proc.on('close', function() {
1492-
dartStream.close();
1493-
done();
1494-
});
1495-
proc.stdout.pipe(dartStream);
1496-
});
1497-
14981470
// ------------
14991471

15001472
gulp.task('cleanup.builder', function() { return angularBuilder.cleanup(); });

modules/angular2/angular2.dart

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,4 +14,5 @@ export 'package:angular2/src/core/application_tokens.dart'
1414
export 'package:angular2/src/platform/dom/dom_tokens.dart';
1515
export 'package:angular2/src/platform/dom/dom_adapter.dart';
1616
export 'package:angular2/src/platform/dom/events/event_manager.dart';
17-
export 'package:angular2/src/compiler/url_resolver.dart';
17+
export 'package:angular2/src/compiler/compiler.dart' show UrlResolver, DirectiveResolver, ViewResolver;
18+

modules/angular2/compiler.ts

Lines changed: 32 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,35 @@
33
* @description
44
* Starting point to import all compiler APIs.
55
*/
6-
export * from './src/compiler/url_resolver';
7-
export * from './src/compiler/xhr';
8-
export * from './src/compiler/compiler';
6+
export {
7+
PLATFORM_DIRECTIVES,
8+
PLATFORM_PIPES,
9+
COMPILER_PROVIDERS,
10+
TEMPLATE_TRANSFORMS,
11+
CompilerConfig,
12+
RenderTypes,
13+
UrlResolver,
14+
DEFAULT_PACKAGE_URL_PROVIDER,
15+
createOfflineCompileUrlResolver,
16+
XHR,
17+
ViewResolver,
18+
DirectiveResolver,
19+
PipeResolver,
20+
SourceModule,
21+
NormalizedComponentWithViewDirectives,
22+
OfflineCompiler,
23+
CompileMetadataWithIdentifier,
24+
CompileMetadataWithType,
25+
CompileIdentifierMetadata,
26+
CompileDiDependencyMetadata,
27+
CompileProviderMetadata,
28+
CompileFactoryMetadata,
29+
CompileTokenMetadata,
30+
CompileTypeMetadata,
31+
CompileQueryMetadata,
32+
CompileTemplateMetadata,
33+
CompileDirectiveMetadata,
34+
CompilePipeMetadata
35+
} from 'angular2/src/compiler/compiler';
36+
37+
export * from 'angular2/src/compiler/template_ast';

modules/angular2/platform/testing/browser_static.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,11 @@
11
import {
22
APP_ID,
3-
DirectiveResolver,
43
NgZone,
54
Provider,
6-
ViewResolver,
75
PLATFORM_COMMON_PROVIDERS,
86
PLATFORM_INITIALIZER
97
} from 'angular2/core';
8+
import {DirectiveResolver, ViewResolver} from 'angular2/compiler';
109
import {BROWSER_APP_COMMON_PROVIDERS} from 'angular2/src/platform/browser_common';
1110
import {BrowserDomAdapter} from 'angular2/src/platform/browser/browser_adapter';
1211

modules/angular2/platform/testing/server.ts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
import {
22
APP_ID,
3-
DirectiveResolver,
43
NgZone,
54
Provider,
6-
ViewResolver,
75
PLATFORM_COMMON_PROVIDERS,
86
PLATFORM_INITIALIZER,
97
APPLICATION_COMMON_PROVIDERS,
108
Renderer
119
} from 'angular2/core';
10+
import {DirectiveResolver, ViewResolver} from 'angular2/compiler';
11+
1212
import {Parse5DomAdapter} from 'angular2/src/platform/server/parse5_adapter';
1313

1414
import {AnimationBuilder} from 'angular2/src/animate/animation_builder';
@@ -28,7 +28,7 @@ import {DOCUMENT} from 'angular2/src/platform/dom/dom_tokens';
2828
import {DOM} from 'angular2/src/platform/dom/dom_adapter';
2929
import {RootRenderer} from 'angular2/src/core/render/api';
3030
import {DomRootRenderer, DomRootRenderer_} from 'angular2/src/platform/dom/dom_renderer';
31-
import {DomSharedStylesHost} from 'angular2/src/platform/dom/shared_styles_host';
31+
import {DomSharedStylesHost, SharedStylesHost} from 'angular2/src/platform/dom/shared_styles_host';
3232

3333
import {
3434
EventManager,
@@ -78,6 +78,7 @@ export const TEST_SERVER_APPLICATION_PROVIDERS: Array<any /*Type | Provider | an
7878
new Provider(EVENT_MANAGER_PLUGINS, {useClass: DomEventsPlugin, multi: true}),
7979
new Provider(XHR, {useClass: XHR}),
8080
new Provider(APP_ID, {useValue: 'a'}),
81+
new Provider(SharedStylesHost, {useExisting: DomSharedStylesHost}),
8182
DomSharedStylesHost,
8283
ELEMENT_PROBE_PROVIDERS,
8384
new Provider(DirectiveResolver, {useClass: MockDirectiveResolver}),

modules/angular2/src/common/directives/ng_for.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -153,7 +153,7 @@ export class NgFor implements DoCheck {
153153
var tuple = tuples[i];
154154
// separate moved views from removed views.
155155
if (isPresent(tuple.record.currentIndex)) {
156-
tuple.view = this._viewContainer.detach(tuple.record.previousIndex);
156+
tuple.view = <EmbeddedViewRef>this._viewContainer.detach(tuple.record.previousIndex);
157157
movedTuples.push(tuple);
158158
} else {
159159
this._viewContainer.remove(tuple.record.previousIndex);

0 commit comments

Comments
 (0)
X Tutup