From fcf6c32e7646d225049898b578976ca07b4bf0b8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=89=A7=E6=AF=85?= Date: Tue, 18 Aug 2020 17:21:17 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=F0=9F=8E=B8=20Rax=20=E5=87=BA=E7=A0=81?= =?UTF-8?q?=E6=94=AF=E6=8C=81=20constants=20=E5=B8=B8=E9=87=8F=E5=AE=9A?= =?UTF-8?q?=E4=B9=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../component/rax/containerInjectContext.ts | 13 +++- .../src/plugins/project/constants.ts | 65 +++++++++---------- .../expected/demo-project/src/constants.js | 3 + .../demo-project/src/pages/Home/index.jsx | 5 ++ .../expected/demo-project/src/constants.js | 3 + .../demo-project/src/pages/Home/index.jsx | 5 ++ .../expected/demo-project/src/constants.js | 3 + .../demo-project/src/pages/Detail/index.jsx | 5 ++ .../demo-project/src/pages/Home/index.jsx | 5 ++ .../demo-project/src/pages/List/index.jsx | 5 ++ .../expected/demo-project/src/constants.js | 3 + .../demo-project/src/pages/Home/index.jsx | 5 ++ 12 files changed, 86 insertions(+), 34 deletions(-) create mode 100644 packages/code-generator/test-cases/rax-app/demo1/expected/demo-project/src/constants.js create mode 100644 packages/code-generator/test-cases/rax-app/demo2/expected/demo-project/src/constants.js create mode 100644 packages/code-generator/test-cases/rax-app/demo3/expected/demo-project/src/constants.js create mode 100644 packages/code-generator/test-cases/rax-app/demo4/expected/demo-project/src/constants.js diff --git a/packages/code-generator/src/plugins/component/rax/containerInjectContext.ts b/packages/code-generator/src/plugins/component/rax/containerInjectContext.ts index 228d7dad5..26fc15e36 100644 --- a/packages/code-generator/src/plugins/component/rax/containerInjectContext.ts +++ b/packages/code-generator/src/plugins/component/rax/containerInjectContext.ts @@ -1,4 +1,4 @@ -import { CLASS_DEFINE_CHUNK_NAME } from '../../../const/generator'; +import { CLASS_DEFINE_CHUNK_NAME, COMMON_CHUNK_NAME } from '../../../const/generator'; import { BuilderComponentPlugin, @@ -24,6 +24,14 @@ const pluginFactory: BuilderComponentPluginFactory = (config?) => ...pre, }; + next.chunks.push({ + type: ChunkType.STRING, + fileType: cfg.fileType, + name: COMMON_CHUNK_NAME.InternalDepsImport, + content: `import __$$constants from '../../constants';`, + linkAfter: [COMMON_CHUNK_NAME.ExternalDepsImport], + }); + next.chunks.push({ type: ChunkType.STRING, fileType: cfg.fileType, @@ -67,6 +75,9 @@ const pluginFactory: BuilderComponentPluginFactory = (config?) => get props() { return self.props; }, + get constants() { + return __$$constants; + }, ...this._methods, }; diff --git a/packages/code-generator/src/plugins/project/constants.ts b/packages/code-generator/src/plugins/project/constants.ts index cf798686b..4f41c9480 100644 --- a/packages/code-generator/src/plugins/project/constants.ts +++ b/packages/code-generator/src/plugins/project/constants.ts @@ -1,5 +1,5 @@ import { COMMON_CHUNK_NAME } from '../../const/generator'; -import { generateCompositeType } from '../../utils/compositeType'; +import { generateUnknownType } from '../../utils/compositeType'; import { BuilderComponentPlugin, BuilderComponentPluginFactory, @@ -16,40 +16,39 @@ const pluginFactory: BuilderComponentPluginFactory = () => { }; const ir = next.ir as IProjectInfo; - if (ir.constants) { - const [, constantStr] = generateCompositeType(ir.constants); - next.chunks.push({ - type: ChunkType.STRING, - fileType: FileType.JS, - name: COMMON_CHUNK_NAME.FileVarDefine, - content: ` - const constantConfig = ${constantStr}; - `, - linkAfter: [ - COMMON_CHUNK_NAME.ExternalDepsImport, - COMMON_CHUNK_NAME.InternalDepsImport, - COMMON_CHUNK_NAME.ImportAliasDefine, - ], - }); + const constantStr = generateUnknownType(ir.constants || {}); - next.chunks.push({ - type: ChunkType.STRING, - fileType: FileType.JS, - name: COMMON_CHUNK_NAME.FileExport, - content: ` - export default constantConfig; - `, - linkAfter: [ - COMMON_CHUNK_NAME.ExternalDepsImport, - COMMON_CHUNK_NAME.InternalDepsImport, - COMMON_CHUNK_NAME.ImportAliasDefine, - COMMON_CHUNK_NAME.FileVarDefine, - COMMON_CHUNK_NAME.FileUtilDefine, - COMMON_CHUNK_NAME.FileMainContent, - ], - }); - } + next.chunks.push({ + type: ChunkType.STRING, + fileType: FileType.JS, + name: COMMON_CHUNK_NAME.FileVarDefine, + content: ` + const __$$constants = (${constantStr}); + `, + linkAfter: [ + COMMON_CHUNK_NAME.ExternalDepsImport, + COMMON_CHUNK_NAME.InternalDepsImport, + COMMON_CHUNK_NAME.ImportAliasDefine, + ], + }); + + next.chunks.push({ + type: ChunkType.STRING, + fileType: FileType.JS, + name: COMMON_CHUNK_NAME.FileExport, + content: ` + export default __$$constants; + `, + linkAfter: [ + COMMON_CHUNK_NAME.ExternalDepsImport, + COMMON_CHUNK_NAME.InternalDepsImport, + COMMON_CHUNK_NAME.ImportAliasDefine, + COMMON_CHUNK_NAME.FileVarDefine, + COMMON_CHUNK_NAME.FileUtilDefine, + COMMON_CHUNK_NAME.FileMainContent, + ], + }); return next; }; diff --git a/packages/code-generator/test-cases/rax-app/demo1/expected/demo-project/src/constants.js b/packages/code-generator/test-cases/rax-app/demo1/expected/demo-project/src/constants.js new file mode 100644 index 000000000..ea766c9da --- /dev/null +++ b/packages/code-generator/test-cases/rax-app/demo1/expected/demo-project/src/constants.js @@ -0,0 +1,3 @@ +const __$$constants = {}; + +export default __$$constants; diff --git a/packages/code-generator/test-cases/rax-app/demo1/expected/demo-project/src/pages/Home/index.jsx b/packages/code-generator/test-cases/rax-app/demo1/expected/demo-project/src/pages/Home/index.jsx index 10070aa94..fce1c34a9 100644 --- a/packages/code-generator/test-cases/rax-app/demo1/expected/demo-project/src/pages/Home/index.jsx +++ b/packages/code-generator/test-cases/rax-app/demo1/expected/demo-project/src/pages/Home/index.jsx @@ -11,6 +11,8 @@ import { create as __$$createDataSourceEngine } from '@ali/lowcode-datasource-en import { isMiniApp as __$$isMiniApp } from 'universal-env'; +import __$$constants from '../../constants'; + import __$$projectUtils from '../../utils'; import './index.css'; @@ -69,6 +71,9 @@ class Home$$Page extends Component { get props() { return self.props; }, + get constants() { + return __$$constants; + }, ...this._methods, }; diff --git a/packages/code-generator/test-cases/rax-app/demo2/expected/demo-project/src/constants.js b/packages/code-generator/test-cases/rax-app/demo2/expected/demo-project/src/constants.js new file mode 100644 index 000000000..ea766c9da --- /dev/null +++ b/packages/code-generator/test-cases/rax-app/demo2/expected/demo-project/src/constants.js @@ -0,0 +1,3 @@ +const __$$constants = {}; + +export default __$$constants; diff --git a/packages/code-generator/test-cases/rax-app/demo2/expected/demo-project/src/pages/Home/index.jsx b/packages/code-generator/test-cases/rax-app/demo2/expected/demo-project/src/pages/Home/index.jsx index bfe1af5e2..8b5352869 100644 --- a/packages/code-generator/test-cases/rax-app/demo2/expected/demo-project/src/pages/Home/index.jsx +++ b/packages/code-generator/test-cases/rax-app/demo2/expected/demo-project/src/pages/Home/index.jsx @@ -13,6 +13,8 @@ import { create as __$$createDataSourceEngine } from '@ali/lowcode-datasource-en import { isMiniApp as __$$isMiniApp } from 'universal-env'; +import __$$constants from '../../constants'; + import __$$projectUtils from '../../utils'; import './index.css'; @@ -162,6 +164,9 @@ class Home$$Page extends Component { get props() { return self.props; }, + get constants() { + return __$$constants; + }, ...this._methods, }; diff --git a/packages/code-generator/test-cases/rax-app/demo3/expected/demo-project/src/constants.js b/packages/code-generator/test-cases/rax-app/demo3/expected/demo-project/src/constants.js new file mode 100644 index 000000000..ea766c9da --- /dev/null +++ b/packages/code-generator/test-cases/rax-app/demo3/expected/demo-project/src/constants.js @@ -0,0 +1,3 @@ +const __$$constants = {}; + +export default __$$constants; diff --git a/packages/code-generator/test-cases/rax-app/demo3/expected/demo-project/src/pages/Detail/index.jsx b/packages/code-generator/test-cases/rax-app/demo3/expected/demo-project/src/pages/Detail/index.jsx index 9fcf44663..1e104c597 100644 --- a/packages/code-generator/test-cases/rax-app/demo3/expected/demo-project/src/pages/Detail/index.jsx +++ b/packages/code-generator/test-cases/rax-app/demo3/expected/demo-project/src/pages/Detail/index.jsx @@ -15,6 +15,8 @@ import { create as __$$createDataSourceEngine } from '@ali/lowcode-datasource-en import { isMiniApp as __$$isMiniApp } from 'universal-env'; +import __$$constants from '../../constants'; + import __$$projectUtils from '../../utils'; import './index.css'; @@ -80,6 +82,9 @@ class Detail$$Page extends Component { get props() { return self.props; }, + get constants() { + return __$$constants; + }, ...this._methods, }; diff --git a/packages/code-generator/test-cases/rax-app/demo3/expected/demo-project/src/pages/Home/index.jsx b/packages/code-generator/test-cases/rax-app/demo3/expected/demo-project/src/pages/Home/index.jsx index 380ba614f..cb2bd3bab 100644 --- a/packages/code-generator/test-cases/rax-app/demo3/expected/demo-project/src/pages/Home/index.jsx +++ b/packages/code-generator/test-cases/rax-app/demo3/expected/demo-project/src/pages/Home/index.jsx @@ -15,6 +15,8 @@ import { create as __$$createDataSourceEngine } from '@ali/lowcode-datasource-en import { isMiniApp as __$$isMiniApp } from 'universal-env'; +import __$$constants from '../../constants'; + import __$$projectUtils from '../../utils'; import './index.css'; @@ -80,6 +82,9 @@ class Home$$Page extends Component { get props() { return self.props; }, + get constants() { + return __$$constants; + }, ...this._methods, }; diff --git a/packages/code-generator/test-cases/rax-app/demo3/expected/demo-project/src/pages/List/index.jsx b/packages/code-generator/test-cases/rax-app/demo3/expected/demo-project/src/pages/List/index.jsx index bb654b05b..bd95523fb 100644 --- a/packages/code-generator/test-cases/rax-app/demo3/expected/demo-project/src/pages/List/index.jsx +++ b/packages/code-generator/test-cases/rax-app/demo3/expected/demo-project/src/pages/List/index.jsx @@ -15,6 +15,8 @@ import { create as __$$createDataSourceEngine } from '@ali/lowcode-datasource-en import { isMiniApp as __$$isMiniApp } from 'universal-env'; +import __$$constants from '../../constants'; + import __$$projectUtils from '../../utils'; import './index.css'; @@ -83,6 +85,9 @@ class List$$Page extends Component { get props() { return self.props; }, + get constants() { + return __$$constants; + }, ...this._methods, }; diff --git a/packages/code-generator/test-cases/rax-app/demo4/expected/demo-project/src/constants.js b/packages/code-generator/test-cases/rax-app/demo4/expected/demo-project/src/constants.js new file mode 100644 index 000000000..ea766c9da --- /dev/null +++ b/packages/code-generator/test-cases/rax-app/demo4/expected/demo-project/src/constants.js @@ -0,0 +1,3 @@ +const __$$constants = {}; + +export default __$$constants; diff --git a/packages/code-generator/test-cases/rax-app/demo4/expected/demo-project/src/pages/Home/index.jsx b/packages/code-generator/test-cases/rax-app/demo4/expected/demo-project/src/pages/Home/index.jsx index 873a01400..287c12ad2 100644 --- a/packages/code-generator/test-cases/rax-app/demo4/expected/demo-project/src/pages/Home/index.jsx +++ b/packages/code-generator/test-cases/rax-app/demo4/expected/demo-project/src/pages/Home/index.jsx @@ -15,6 +15,8 @@ import { create as __$$createDataSourceEngine } from '@ali/lowcode-datasource-en import { isMiniApp as __$$isMiniApp } from 'universal-env'; +import __$$constants from '../../constants'; + import __$$projectUtils from '../../utils'; import './index.css'; @@ -77,6 +79,9 @@ class Home$$Page extends Component { get props() { return self.props; }, + get constants() { + return __$$constants; + }, ...this._methods, };