From fdfddbe9d529aef4865e07383b203d3c447b3e5c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=80=86=E8=91=B5?= Date: Sun, 26 Sep 2021 14:43:44 +0800 Subject: [PATCH 1/2] chore: migrate miniapp-renderer --- packages/miniapp-renderer/CHANGELOG.md | 33 ++++++++ packages/miniapp-renderer/README.md | 1 + packages/miniapp-renderer/package.json | 31 ++++++++ packages/miniapp-renderer/src/index.ts | 3 + .../miniapp-renderer/src/miniappRenderer.ts | 75 +++++++++++++++++++ packages/miniapp-renderer/tsconfig.json | 8 ++ 6 files changed, 151 insertions(+) create mode 100644 packages/miniapp-renderer/CHANGELOG.md create mode 100644 packages/miniapp-renderer/README.md create mode 100644 packages/miniapp-renderer/package.json create mode 100644 packages/miniapp-renderer/src/index.ts create mode 100644 packages/miniapp-renderer/src/miniappRenderer.ts create mode 100644 packages/miniapp-renderer/tsconfig.json diff --git a/packages/miniapp-renderer/CHANGELOG.md b/packages/miniapp-renderer/CHANGELOG.md new file mode 100644 index 00000000..426fc7a4 --- /dev/null +++ b/packages/miniapp-renderer/CHANGELOG.md @@ -0,0 +1,33 @@ +# Changelog + +## 0.1.15 + +- [Chore] use `pageSource` as the render unique path when `route.pageSource` existed + +## 0.1.14 + +- [Feat] support plugin situation without global getApp +- [Feat] Adjust the time of appending root to document.body + +## 0.1.13 + +- [Fix] __pagesRenderInfo in window will be replaced in subPakcages shareMemory mode + +## 0.1.12 + +- [Fix] miss default rootId + +## 0.1.11 + +- [Fix] miniapp global instance bind + +## 0.1.10 + +- [Chore] remove vendor check +## 0.1.9 + +- [Chore] compatible with the old version + +## 0.1.8 + +- [Feat] dispatch document modify when set document diff --git a/packages/miniapp-renderer/README.md b/packages/miniapp-renderer/README.md new file mode 100644 index 00000000..9c895607 --- /dev/null +++ b/packages/miniapp-renderer/README.md @@ -0,0 +1 @@ +# `miniapp-renderer` diff --git a/packages/miniapp-renderer/package.json b/packages/miniapp-renderer/package.json new file mode 100644 index 00000000..7d8d6afe --- /dev/null +++ b/packages/miniapp-renderer/package.json @@ -0,0 +1,31 @@ +{ + "name": "miniapp-renderer", + "version": "0.1.15", + "description": "", + "author": "Rax Team", + "homepage": "https://github.com/raxjs/miniapp#readme", + "license": "MIT", + "main": "lib/index.js", + "dependencies": { + "universal-env": "^3.0.0" + }, + "sideEffects": false, + "directories": { + "lib": "lib", + "test": "__tests__" + }, + "files": [ + "lib", + "!lib/**/*.map" + ], + "repository": { + "type": "http", + "url": "https://github.com/raxjs/miniapp/tree/master/packages/miniapp-renderer" + }, + "scripts": { + "test": "echo \"Error: run tests from root\" && exit 1" + }, + "bugs": { + "url": "https://github.com/raxjs/miniapp/issues" + } +} diff --git a/packages/miniapp-renderer/src/index.ts b/packages/miniapp-renderer/src/index.ts new file mode 100644 index 00000000..3d346b12 --- /dev/null +++ b/packages/miniapp-renderer/src/index.ts @@ -0,0 +1,3 @@ +import miniappRenderer from './miniappRenderer'; + +export default miniappRenderer; diff --git a/packages/miniapp-renderer/src/miniappRenderer.ts b/packages/miniapp-renderer/src/miniappRenderer.ts new file mode 100644 index 00000000..754cc03a --- /dev/null +++ b/packages/miniapp-renderer/src/miniappRenderer.ts @@ -0,0 +1,75 @@ +function miniappRenderer( + { appConfig = {} as any, createBaseApp, createHistory, staticConfig, pageProps, emitLifeCycles, ErrorBoundary }, + { mount, unmount, createElement, Component } +) { + const history = createHistory({ routes: staticConfig.routes }); + + const { runtime } = createBaseApp(appConfig); + const AppProvider = runtime?.composeAppProvider?.(); + + const { app = {} } = appConfig; + const { rootId = 'root', ErrorBoundaryFallback, onErrorBoundaryHander, onErrorBoundaryHandler, errorBoundary } = app; + + if (onErrorBoundaryHander) { + console.error('Please use onErrorBoundaryHandler instead of onErrorBoundaryHander'); + } + emitLifeCycles(); + class App extends Component { + public render() { + const { Page, ...otherProps } = this.props; + const PageComponent = createElement(Page, { + ...otherProps + }); + + let appInstance = PageComponent; + + if (AppProvider) { + appInstance = createElement(AppProvider, null, appInstance); + } + if (errorBoundary) { + appInstance = createElement(ErrorBoundary, { + Fallback: ErrorBoundaryFallback, + onError: onErrorBoundaryHander || onErrorBoundaryHandler, + }, appInstance); + } + return appInstance; + } + } + const pagesRenderInfo = staticConfig.routes.map(({ source, component, pageSource }: any) => { + return { + path: pageSource || source, + render() { + const PageComponent = component()(); + const rootEl = document.createElement('div'); + rootEl.setAttribute('id', rootId); + const appInstance = mount(createElement(App, { + history, + location: history.location, + ...pageProps, + Page: PageComponent + }), rootEl); + document.body.appendChild(rootEl); + + (document as any).__unmount = unmount(appInstance, rootEl); + }, + setDocument(value) { + // eslint-disable-next-line no-global-assign + document = value; + // getApp doesn't exist in plugin situation + // @ts-ignore + if (typeof getApp === 'function') { + // @ts-ignore + const MiniAppGlobalInstance = getApp(); + const dispatchDocumentModify = MiniAppGlobalInstance._dispatchDocumentModify; + if (typeof dispatchDocumentModify === 'function') { + dispatchDocumentModify.call(MiniAppGlobalInstance, value); + } + } + } + }; + }); + + (window as any).__pagesRenderInfo = ((window as any).__pagesRenderInfo || []).concat(pagesRenderInfo); +} + +export default miniappRenderer; diff --git a/packages/miniapp-renderer/tsconfig.json b/packages/miniapp-renderer/tsconfig.json new file mode 100644 index 00000000..1ba6ca74 --- /dev/null +++ b/packages/miniapp-renderer/tsconfig.json @@ -0,0 +1,8 @@ +{ + "extends": "../../tsconfig.settings.json", + "compilerOptions": { + "baseUrl": "./", + "rootDir": "src", + "outDir": "lib" + }, +} From 1ab44c8b6b0aba741389218663a0c182d3e9ba69 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=80=86=E8=91=B5?= Date: Sun, 26 Sep 2021 14:47:46 +0800 Subject: [PATCH 2/2] build: update tsconfig --- tsconfig.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tsconfig.json b/tsconfig.json index 9e839b87..bdc936f3 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -2,6 +2,7 @@ "files": [], "references": [ { "path": "packages/build-plugin-rax-miniapp-faas" }, - { "path": "packages/driver-miniapp" } + { "path": "packages/driver-miniapp" }, + { "path": "packages/miniapp-renderer" } ] }