Skip to content

Commit 43485fb

Browse files
committed
Merge branch 'ssr-optimize' into dev
2 parents ebca266 + f061d80 commit 43485fb

40 files changed

+1274
-376
lines changed

Diff for: benchmarks/ssr/renderToString.js

+3-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,9 @@ console.log('--- renderToString --- ')
1111
const self = (global || root)
1212
self.s = self.performance.now()
1313

14-
renderToString(new Vue(gridComponent), () => {
14+
renderToString(new Vue(gridComponent), (err, res) => {
15+
if (err) throw err
16+
// console.log(res)
1517
console.log('Complete time: ' + (self.performance.now() - self.s).toFixed(2) + 'ms')
1618
console.log()
1719
})

Diff for: build/alias.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
const path = require('path')
22

33
module.exports = {
4-
vue: path.resolve(__dirname, '../src/platforms/web/runtime-with-compiler'),
4+
vue: path.resolve(__dirname, '../src/platforms/web/entry-runtime-with-compiler'),
55
compiler: path.resolve(__dirname, '../src/compiler'),
66
core: path.resolve(__dirname, '../src/core'),
77
shared: path.resolve(__dirname, '../src/shared'),

Diff for: build/config.js

+13-13
Original file line numberDiff line numberDiff line change
@@ -35,14 +35,14 @@ const resolve = p => {
3535
const builds = {
3636
// Runtime only (CommonJS). Used by bundlers e.g. Webpack & Browserify
3737
'web-runtime-cjs': {
38-
entry: resolve('web/runtime.js'),
38+
entry: resolve('web/entry-runtime.js'),
3939
dest: resolve('dist/vue.runtime.common.js'),
4040
format: 'cjs',
4141
banner
4242
},
4343
// Runtime+compiler CommonJS build (CommonJS)
4444
'web-full-cjs': {
45-
entry: resolve('web/runtime-with-compiler.js'),
45+
entry: resolve('web/entry-runtime-with-compiler.js'),
4646
dest: resolve('dist/vue.common.js'),
4747
format: 'cjs',
4848
alias: { he: './entity-decoder' },
@@ -51,38 +51,38 @@ const builds = {
5151
// Runtime only (ES Modules). Used by bundlers that support ES Modules,
5252
// e.g. Rollup & Webpack 2
5353
'web-runtime-esm': {
54-
entry: resolve('web/runtime.js'),
54+
entry: resolve('web/entry-runtime.js'),
5555
dest: resolve('dist/vue.runtime.esm.js'),
5656
format: 'es',
5757
banner
5858
},
5959
// Runtime+compiler CommonJS build (ES Modules)
6060
'web-full-esm': {
61-
entry: resolve('web/runtime-with-compiler.js'),
61+
entry: resolve('web/entry-runtime-with-compiler.js'),
6262
dest: resolve('dist/vue.esm.js'),
6363
format: 'es',
6464
alias: { he: './entity-decoder' },
6565
banner
6666
},
6767
// runtime-only build (Browser)
6868
'web-runtime-dev': {
69-
entry: resolve('web/runtime.js'),
69+
entry: resolve('web/entry-runtime.js'),
7070
dest: resolve('dist/vue.runtime.js'),
7171
format: 'umd',
7272
env: 'development',
7373
banner
7474
},
7575
// runtime-only production build (Browser)
7676
'web-runtime-prod': {
77-
entry: resolve('web/runtime.js'),
77+
entry: resolve('web/entry-runtime.js'),
7878
dest: resolve('dist/vue.runtime.min.js'),
7979
format: 'umd',
8080
env: 'production',
8181
banner
8282
},
8383
// Runtime+compiler development build (Browser)
8484
'web-full-dev': {
85-
entry: resolve('web/runtime-with-compiler.js'),
85+
entry: resolve('web/entry-runtime-with-compiler.js'),
8686
dest: resolve('dist/vue.js'),
8787
format: 'umd',
8888
env: 'development',
@@ -91,7 +91,7 @@ const builds = {
9191
},
9292
// Runtime+compiler production build (Browser)
9393
'web-full-prod': {
94-
entry: resolve('web/runtime-with-compiler.js'),
94+
entry: resolve('web/entry-runtime-with-compiler.js'),
9595
dest: resolve('dist/vue.min.js'),
9696
format: 'umd',
9797
env: 'production',
@@ -100,14 +100,14 @@ const builds = {
100100
},
101101
// Web compiler (CommonJS).
102102
'web-compiler': {
103-
entry: resolve('web/compiler.js'),
103+
entry: resolve('web/entry-compiler.js'),
104104
dest: resolve('packages/vue-template-compiler/build.js'),
105105
format: 'cjs',
106106
external: Object.keys(require('../packages/vue-template-compiler/package.json').dependencies)
107107
},
108108
// Web server renderer (CommonJS).
109109
'web-server-renderer': {
110-
entry: resolve('web/server-renderer.js'),
110+
entry: resolve('web/entry-server-renderer.js'),
111111
dest: resolve('packages/vue-server-renderer/build.js'),
112112
format: 'cjs',
113113
external: Object.keys(require('../packages/vue-server-renderer/package.json').dependencies)
@@ -127,22 +127,22 @@ const builds = {
127127
// Weex runtime factory
128128
'weex-factory': {
129129
weex: true,
130-
entry: resolve('weex/runtime-factory.js'),
130+
entry: resolve('weex/entry-runtime-factory.js'),
131131
dest: resolve('packages/weex-vue-framework/factory.js'),
132132
format: 'cjs',
133133
plugins: [weexFactoryPlugin]
134134
},
135135
// Weex runtime framework (CommonJS).
136136
'weex-framework': {
137137
weex: true,
138-
entry: resolve('weex/framework.js'),
138+
entry: resolve('weex/entry-framework.js'),
139139
dest: resolve('packages/weex-vue-framework/index.js'),
140140
format: 'cjs'
141141
},
142142
// Weex compiler (CommonJS). Used by Weex's Webpack loader.
143143
'weex-compiler': {
144144
weex: true,
145-
entry: resolve('weex/compiler.js'),
145+
entry: resolve('weex/entry-compiler.js'),
146146
dest: resolve('packages/weex-template-compiler/build.js'),
147147
format: 'cjs',
148148
external: Object.keys(require('../packages/weex-template-compiler/package.json').dependencies)

Diff for: flow/compiler.js

+25-19
Original file line numberDiff line numberDiff line change
@@ -16,22 +16,21 @@ declare type CompilerOptions = {
1616
shouldDecodeTags?: boolean;
1717
shouldDecodeNewlines?: boolean;
1818

19+
// for ssr optimization compiler
20+
scopeId?: string;
21+
1922
// runtime user-configurable
2023
delimiters?: [string, string]; // template delimiters
21-
}
24+
};
2225

2326
declare type CompiledResult = {
2427
ast: ?ASTElement;
2528
render: string;
2629
staticRenderFns: Array<string>;
30+
stringRenderFns?: Array<string>;
2731
errors?: Array<string>;
2832
tips?: Array<string>;
29-
}
30-
31-
declare type CompiledFunctionResult = {
32-
render: Function;
33-
staticRenderFns: Array<Function>;
34-
}
33+
};
3534

3635
declare type ModuleOptions = {
3736
preTransformNode: (el: ASTElement) => void;
@@ -40,29 +39,29 @@ declare type ModuleOptions = {
4039
genData: (el: ASTElement) => string; // generate extra data string for an element
4140
transformCode?: (el: ASTElement, code: string) => string; // further transform generated code for an element
4241
staticKeys?: Array<string>; // AST properties to be considered static
43-
}
42+
};
4443

45-
declare type ASTModifiers = { [key: string]: boolean }
46-
declare type ASTIfConditions = Array<{ exp: ?string; block: ASTElement }>
44+
declare type ASTModifiers = { [key: string]: boolean };
45+
declare type ASTIfConditions = Array<{ exp: ?string; block: ASTElement }>;
4746

4847
declare type ASTElementHandler = {
4948
value: string;
5049
modifiers: ?ASTModifiers;
51-
}
50+
};
5251

5352
declare type ASTElementHandlers = {
5453
[key: string]: ASTElementHandler | Array<ASTElementHandler>;
55-
}
54+
};
5655

5756
declare type ASTDirective = {
5857
name: string;
5958
rawName: string;
6059
value: string;
6160
arg: ?string;
6261
modifiers: ?ASTModifiers;
63-
}
62+
};
6463

65-
declare type ASTNode = ASTElement | ASTText | ASTExpression
64+
declare type ASTNode = ASTElement | ASTText | ASTExpression;
6665

6766
declare type ASTElement = {
6867
type: 1;
@@ -132,22 +131,29 @@ declare type ASTElement = {
132131
onceProcessed?: boolean;
133132
wrapData?: (code: string) => string;
134133

134+
// 2.4 ssr optimization
135+
ssrOptimizability?: number;
136+
135137
// weex specific
136138
appendAsTree?: boolean;
137-
}
139+
};
138140

139141
declare type ASTExpression = {
140142
type: 2;
141143
expression: string;
142144
text: string;
143145
static?: boolean;
144-
}
146+
// 2.4 ssr optimization
147+
ssrOptimizability?: number;
148+
};
145149

146150
declare type ASTText = {
147151
type: 3;
148152
text: string;
149153
static?: boolean;
150-
}
154+
// 2.4 ssr optimization
155+
ssrOptimizability?: number;
156+
};
151157

152158
// SFC-parser related declarations
153159

@@ -166,7 +172,7 @@ declare type SFCCustomBlock = {
166172
end?: number;
167173
src?: string;
168174
attrs: {[attribute:string]: string};
169-
}
175+
};
170176

171177
declare type SFCBlock = {
172178
type: string;
@@ -177,4 +183,4 @@ declare type SFCBlock = {
177183
src?: string;
178184
scoped?: boolean;
179185
module?: string | boolean;
180-
}
186+
};

Diff for: flow/component.js

+11-1
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,16 @@ declare interface Component {
108108
// resolve scoped slots
109109
_u: (scopedSlots: ScopedSlotsData, res?: Object) => { [key: string]: Function };
110110

111+
// SSR specific
112+
_ssrNode: Function;
113+
_ssrList: Function;
114+
_ssrEscape: Function;
115+
_ssrAttr: Function;
116+
_ssrAttrs: Function;
117+
_ssrDOMProps: Function;
118+
_ssrClass: Function;
119+
_ssrStyle: Function;
120+
111121
// allow dynamic method registration
112122
[key: string]: any
113-
}
123+
};

Diff for: flow/global-api.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -18,4 +18,4 @@ declare interface GlobalAPI {
1818

1919
// allow dynamic method registration
2020
[key: string]: any
21-
}
21+
};

Diff for: flow/options.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ declare type InternalComponentOptions = {
1010
_refElm: ?Node;
1111
render?: Function;
1212
staticRenderFns?: Array<Function>
13-
}
13+
};
1414

1515
declare type ComponentOptions = {
1616
// data
@@ -80,7 +80,7 @@ declare type ComponentOptions = {
8080
_base: Class<Component>;
8181
_parentElm: ?Node;
8282
_refElm: ?Node;
83-
}
83+
};
8484

8585
declare type PropOptions = {
8686
type: Function | Array<Function> | null;

Diff for: flow/ssr.js

+4-4
Original file line numberDiff line numberDiff line change
@@ -3,19 +3,19 @@ declare type ComponentWithCacheContext = {
33
bufferIndex: number;
44
buffer: Array<string>;
55
key: string;
6-
}
6+
};
77

88
declare type ElementContext = {
99
type: 'Element';
1010
children: Array<VNode>;
1111
rendered: number;
1212
endTag: string;
1313
total: number;
14-
}
14+
};
1515

1616
declare type ComponentContext = {
1717
type: 'Component';
1818
prevActive: Component;
19-
}
19+
};
2020

21-
declare type RenderState = ComponentContext | ComponentWithCacheContext | ElementContext
21+
declare type RenderState = ComponentContext | ComponentWithCacheContext | ElementContext;

Diff for: flow/vnode.js

+5-5
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,20 @@
1-
declare type VNodeChildren = Array<?VNode | string | VNodeChildren> | string
1+
declare type VNodeChildren = Array<?VNode | string | VNodeChildren> | string;
22

33
declare type VNodeComponentOptions = {
44
Ctor: Class<Component>;
55
propsData: ?Object;
66
listeners: ?Object;
77
children: ?Array<VNode>;
88
tag?: string;
9-
}
9+
};
1010

1111
declare type MountedComponentVNode = {
1212
context: Component;
1313
componentOptions: VNodeComponentOptions;
1414
componentInstance: Component;
1515
parent: VNode;
1616
data: VNodeData;
17-
}
17+
};
1818

1919
// interface for vnodes in update modules
2020
declare type VNodeWithData = {
@@ -29,7 +29,7 @@ declare type VNodeWithData = {
2929
parent?: VNodeWithData;
3030
componentInstance?: Component;
3131
isRootInsert: boolean;
32-
}
32+
};
3333

3434
declare interface VNodeData {
3535
key?: string | number;
@@ -61,7 +61,7 @@ declare interface VNodeData {
6161
value: any;
6262
callback: Function;
6363
};
64-
}
64+
};
6565

6666
declare type VNodeDirective = {
6767
name: string;

0 commit comments

Comments
 (0)