-
Notifications
You must be signed in to change notification settings - Fork 1.2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Style isolation for demo previewer #7
Projects
Milestone
Comments
ShadowDOM 看上去最完美,但是遇到了一个很现实的问题。当有个modal弹框的时候,组件react弹窗append到了body下。假如样式表已经处理好了塞到了shadowdom里,那么很遗憾,弹框没样式了。。。这与最初用shadowdom隔离样式的想法是违背的。 实在想不到既可以隔离样式,又可以处理这种情况的办法 |
Wxh16144
added a commit
to Wxh16144-forks/dumi
that referenced
this issue
Aug 21, 2023
# This is the 1st commit message: feat: add global loading logic # This is the commit message umijs#2: chore: update # This is the commit message umijs#3: feat: add Loading Skeleton # This is the commit message umijs#4: feat: update # This is the commit message umijs#5: chore: update Loading # This is the commit message umijs#6: chore: update pnpm-lock.yaml # This is the commit message umijs#7: chore: fix lock file # This is the commit message umijs#8: Revert "chore: fix lock file" This reverts commit 73dee02. # This is the commit message umijs#9: Revert "chore: update pnpm-lock.yaml" This reverts commit 3f6f579. # This is the commit message umijs#10: chore: fix lock file # This is the commit message umijs#11: chore: update logic # This is the commit message umijs#12: chore(deps): bump umi@4.0.54 # This is the commit message umijs#13: Revert "chore(deps): bump umi@4.0.54" This reverts commit 011ecf9. # This is the commit message umijs#14: fix: fix path error on windows platform # This is the commit message umijs#15: chore(deps): bump umi@4.0.54 # This is the commit message umijs#16: chore: revert @umi/lint 4.0.54 => 4.0.53 Because there is breaking change # This is the commit message umijs#17: chore(deps): upgrade umi@4.0.55 # This is the commit message umijs#18: chore: update type # This is the commit message umijs#19: chore: update Loading # This is the commit message umijs#20: refactor: site template ignore dist dir (umijs#1518) add /dist > .gitignore # This is the commit message umijs#21: refactor: improve content padding when disable footer (umijs#1517) * chore(theme): improve the default theme style * chore: update Content style * chore: update # This is the commit message umijs#22: refactor: make chunk name clean for theme routes (umijs#1513) fix: special links not working bug in markdown (umijs#1524) * fix: absolute links and schema links lost bug in markdown * refactor: update relative link condition * refactor: update relative link condition for data url * Update src/loaders/markdown/transformer/rehypeLink.ts * Update src/loaders/markdown/transformer/rehypeLink.ts * refactor: new way to handle special links fix: workaround for helmet lost in ssr since umi@4.0.54 (umijs#1525) * fix: helmet lost in ssr since umi@4.0.53 * refactor: patch helmet for version range * style: update fix: react types is missing in react template (umijs#1526) build: release 2.1.15 Revert "Merge branch 'master' into wuxh/feat-1463" This reverts commit 6b344d9, reversing changes made to bfef009.
PeachScript
added a commit
that referenced
this issue
Jan 4, 2024
* feat: add global loading logic # This is the 1st commit message: feat: add global loading logic # This is the commit message #2: chore: update # This is the commit message #3: feat: add Loading Skeleton # This is the commit message #4: feat: update # This is the commit message #5: chore: update Loading # This is the commit message #6: chore: update pnpm-lock.yaml # This is the commit message #7: chore: fix lock file # This is the commit message #8: Revert "chore: fix lock file" This reverts commit 73dee02. # This is the commit message #9: Revert "chore: update pnpm-lock.yaml" This reverts commit 3f6f579. # This is the commit message #10: chore: fix lock file # This is the commit message #11: chore: update logic # This is the commit message #12: chore(deps): bump umi@4.0.54 # This is the commit message #13: Revert "chore(deps): bump umi@4.0.54" This reverts commit 011ecf9. # This is the commit message #14: fix: fix path error on windows platform # This is the commit message #15: chore(deps): bump umi@4.0.54 # This is the commit message #16: chore: revert @umi/lint 4.0.54 => 4.0.53 Because there is breaking change # This is the commit message #17: chore(deps): upgrade umi@4.0.55 # This is the commit message #18: chore: update type # This is the commit message #19: chore: update Loading # This is the commit message #20: refactor: site template ignore dist dir (#1518) add /dist > .gitignore # This is the commit message #21: refactor: improve content padding when disable footer (#1517) * chore(theme): improve the default theme style * chore: update Content style * chore: update # This is the commit message #22: refactor: make chunk name clean for theme routes (#1513) fix: special links not working bug in markdown (#1524) * fix: absolute links and schema links lost bug in markdown * refactor: update relative link condition * refactor: update relative link condition for data url * Update src/loaders/markdown/transformer/rehypeLink.ts * Update src/loaders/markdown/transformer/rehypeLink.ts * refactor: new way to handle special links fix: workaround for helmet lost in ssr since umi@4.0.54 (#1525) * fix: helmet lost in ssr since umi@4.0.53 * refactor: patch helmet for version range * style: update fix: react types is missing in react template (#1526) build: release 2.1.15 Revert "Merge branch 'master' into wuxh/feat-1463" This reverts commit 6b344d9, reversing changes made to bfef009. * chore: update * chore: update lock file * docs: update dingtalk qrcode * fix: conventional 2-level nav lost in localized routes (#1951) * chore: bump @babel/traverse from 7.22.8 to 7.23.2 (#1947) Bumps [@babel/traverse](https://github.com/babel/babel/tree/HEAD/packages/babel-traverse) from 7.22.8 to 7.23.2. - [Release notes](https://github.com/babel/babel/releases) - [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md) - [Commits](https://github.com/babel/babel/commits/v7.23.2/packages/babel-traverse) --- updated-dependencies: - dependency-name: "@babel/traverse" dependency-type: indirect ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build: release 2.2.14 * docs: correct spelling of code sandbox * fix: unexpected transformation of colon symbol (#1962) Co-authored-by: liangjun.chen <liangjun.chen@yunqutech.com> * chore: bump browserify-sign from 4.2.1 to 4.2.2 (#1954) Bumps [browserify-sign](https://github.com/crypto-browserify/browserify-sign) from 4.2.1 to 4.2.2. - [Changelog](https://github.com/browserify/browserify-sign/blob/main/CHANGELOG.md) - [Commits](browserify/browserify-sign@v4.2.1...v4.2.2) --- updated-dependencies: - dependency-name: browserify-sign dependency-type: indirect ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * fix: color select disappeared unexpectedly on simulator (#1976) * fix: wrong search scroll position of 1-level heading in current page (#1978) * fix: fixed the hash was cleared and did not scroll to the corresponding position * feat: 调整搜索逻辑,如果目标链接是本页 & !hash,则滚动到顶部 * fix: api table does not respect ignore flag (#1981) * build: release 2.2.15 * fix: handle unexpected oneof and allof for api metadata (#1982) * refactor: cache dir config can control compile fs cache location (#1984) * refactor: use async way to parse theme modules (#1983) * build: release 2.2.16 * chore: revert change * Revert "chore: revert change" This reverts commit 6eeac57. * chore: remove * feat: add loadcomp logic * chore: making the simple complicated is commonplace * Revert "Revert "chore: revert change"" This reverts commit fee192f. * chore: ? * chore: clean code * chore: update lock file * chore: update * chore: update style --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: PeachScript <scdzwyxst@gmail.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Optimistic-Chen <64662582+DBSDs@users.noreply.github.com> Co-authored-by: liangjun.chen <liangjun.chen@yunqutech.com> Co-authored-by: binyellow <571704908@qq.com> Co-authored-by: 阿平 <xierenyuan@qq.com>
PeachScript
added a commit
that referenced
this issue
Apr 26, 2024
* refactor: extract inline plugin templates as independent files (#1874) * refactor: mv to tmpl * refactor: more info * refactor: to template * docs: add customize page * refactor: to contant * chore: revert config * chore: rm tmpl * chore: dir path * chore: clean up * feat: split markdown meta loader (#1875) * feat: split mdLoader type * feat: split mdLoader * chore: code optimize * fix: use winPath * chore: update getter * refactor: extract runtime tpl (#1883) * refactor: load text data from self in markdown loader (#1881) * refactor: provider `useDemoData` which is given by `getDemoById` (#1876) * chore: all pass to lazy * chore: match route * chore: meta demos * chore: support getDemoById * chore: split code * chore: back of it * chore: getDemoById * chore: support demo sus * chore: all demos * chore: demo extract * chore: clean up * chore: clean up * chore: rm fallback * refactor: remove full demos from context (#1885) * chore: rm demos * chore: update lock file * chore: rm texts (#1886) * refactor: useRouteMeta & useTabMeta with getRouteMetaById (#1888) * refactor: useRouteMeta & useTabMeta * fix: route meta * refactor: fix sidebar * chore: code clean * refactor: useRouteMeta fully use getRouteMetaById (#1889) * fix: useRouteMeta fully use getRouteMetaById * refactor: runtime get frontmatter directly * refactor: use sync frontmatter * refactor: better frontmatter code (#1892) * refactor: better frontmatter code * fix: render loop * refactor: clean up meta (#1894) * refactor: clean up meta * chore: clean up * feat: Make searchable again (#1898) * chore: search data * chore: fill content * chore: fix loading * chore: support loading state * feat: merge chunk & optimize meta loading (#1906) * feat: use new loader for search * feat: search support tsx * feat: split meta chunk * feat: load meta on hover * chore: code clena * perf: loadSearchData on focus & show loading only once (#1915) * fix: demo should export html file (#1931) * fix: demo should export html file * chore: code clean * feat: support live demo (#1905) * feat: support live code * feat: split live plugin * feat: enabled by live config * feat: add error catcher * docs: add docs * docs: add docs * feat: update single file logic * docs: rm docs * feat: put Live Components into theme-default slots * feat: update regexp & fix enable logic * feat: make LiveEditor derivate Editor * feat: enhance live regexp (#1946) * refactor: optimize async route meta solution (#1974) * refactor: optimize async route meta solution * refactor: simplify markdown loader rules * refactor: correct async tab meta load logic * refactor: page suspense add fallback * feat: add default loading skeleton (#1512) * feat: add global loading logic # This is the 1st commit message: feat: add global loading logic # This is the commit message #2: chore: update # This is the commit message #3: feat: add Loading Skeleton # This is the commit message #4: feat: update # This is the commit message #5: chore: update Loading # This is the commit message #6: chore: update pnpm-lock.yaml # This is the commit message #7: chore: fix lock file # This is the commit message #8: Revert "chore: fix lock file" This reverts commit 73dee02. # This is the commit message #9: Revert "chore: update pnpm-lock.yaml" This reverts commit 3f6f579. # This is the commit message #10: chore: fix lock file # This is the commit message #11: chore: update logic # This is the commit message #12: chore(deps): bump umi@4.0.54 # This is the commit message #13: Revert "chore(deps): bump umi@4.0.54" This reverts commit 011ecf9. # This is the commit message #14: fix: fix path error on windows platform # This is the commit message #15: chore(deps): bump umi@4.0.54 # This is the commit message #16: chore: revert @umi/lint 4.0.54 => 4.0.53 Because there is breaking change # This is the commit message #17: chore(deps): upgrade umi@4.0.55 # This is the commit message #18: chore: update type # This is the commit message #19: chore: update Loading # This is the commit message #20: refactor: site template ignore dist dir (#1518) add /dist > .gitignore # This is the commit message #21: refactor: improve content padding when disable footer (#1517) * chore(theme): improve the default theme style * chore: update Content style * chore: update # This is the commit message #22: refactor: make chunk name clean for theme routes (#1513) fix: special links not working bug in markdown (#1524) * fix: absolute links and schema links lost bug in markdown * refactor: update relative link condition * refactor: update relative link condition for data url * Update src/loaders/markdown/transformer/rehypeLink.ts * Update src/loaders/markdown/transformer/rehypeLink.ts * refactor: new way to handle special links fix: workaround for helmet lost in ssr since umi@4.0.54 (#1525) * fix: helmet lost in ssr since umi@4.0.53 * refactor: patch helmet for version range * style: update fix: react types is missing in react template (#1526) build: release 2.1.15 Revert "Merge branch 'master' into wuxh/feat-1463" This reverts commit 6b344d9, reversing changes made to bfef009. * chore: update * chore: update lock file * docs: update dingtalk qrcode * fix: conventional 2-level nav lost in localized routes (#1951) * chore: bump @babel/traverse from 7.22.8 to 7.23.2 (#1947) Bumps [@babel/traverse](https://github.com/babel/babel/tree/HEAD/packages/babel-traverse) from 7.22.8 to 7.23.2. - [Release notes](https://github.com/babel/babel/releases) - [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md) - [Commits](https://github.com/babel/babel/commits/v7.23.2/packages/babel-traverse) --- updated-dependencies: - dependency-name: "@babel/traverse" dependency-type: indirect ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build: release 2.2.14 * docs: correct spelling of code sandbox * fix: unexpected transformation of colon symbol (#1962) Co-authored-by: liangjun.chen <liangjun.chen@yunqutech.com> * chore: bump browserify-sign from 4.2.1 to 4.2.2 (#1954) Bumps [browserify-sign](https://github.com/crypto-browserify/browserify-sign) from 4.2.1 to 4.2.2. - [Changelog](https://github.com/browserify/browserify-sign/blob/main/CHANGELOG.md) - [Commits](browserify/browserify-sign@v4.2.1...v4.2.2) --- updated-dependencies: - dependency-name: browserify-sign dependency-type: indirect ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * fix: color select disappeared unexpectedly on simulator (#1976) * fix: wrong search scroll position of 1-level heading in current page (#1978) * fix: fixed the hash was cleared and did not scroll to the corresponding position * feat: 调整搜索逻辑,如果目标链接是本页 & !hash,则滚动到顶部 * fix: api table does not respect ignore flag (#1981) * build: release 2.2.15 * fix: handle unexpected oneof and allof for api metadata (#1982) * refactor: cache dir config can control compile fs cache location (#1984) * refactor: use async way to parse theme modules (#1983) * build: release 2.2.16 * chore: revert change * Revert "chore: revert change" This reverts commit 6eeac57. * chore: remove * feat: add loadcomp logic * chore: making the simple complicated is commonplace * Revert "Revert "chore: revert change"" This reverts commit fee192f. * chore: ? * chore: clean code * chore: update lock file * chore: update * chore: update style --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: PeachScript <scdzwyxst@gmail.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Optimistic-Chen <64662582+DBSDs@users.noreply.github.com> Co-authored-by: liangjun.chen <liangjun.chen@yunqutech.com> Co-authored-by: binyellow <571704908@qq.com> Co-authored-by: 阿平 <xierenyuan@qq.com> * refactor: optimize live demo feature in v2.3 (#1992) * refactor: clean up compile-time logic * feat: emit demo context in loader * refactor: clean up runtime api and slots * feat: add SourceCodeEditor slot * feat: add useLiveDemo api * refactor: rewrite live demo feature with useLiveDemo * feat: live demo support iframe mode * refactor: constants for browser runtime * fix: multi-instance problem and styles of live demo feature (#2001) * refactor: improve naming of useLiveDemo api * refactor: restore live config temporarily * fix: live demo error styles for compact demo * fix: wrong npm dependency meta in runtime * fix: multiple instance problem from demo context * refactor: avoid breaking change for useRouteMeta api (#2002) * refactor: avoid empty tabs from useRouteMeta * refactor: version check include prerelease * feat: live demo support custom tech stack (#2012) * feat: live demo support custom tech stack * feat: add live loading status for demo previewer * feat: useLiveDemo support iframe demo (#2013) * feat: useLiveDemo support iframe demo * refactor: exclude demo entry file from context * perf: skip outdated tasks for useLiveDemo * fix: unexpected suspense from useRouteMeta (#2019) * fix: unexpected suspense from useRouteMeta * refactor: remove use from useRouteMeta * feat: tech stack supports declare runtime plugin (#2020) * fix: overflow for source code editor (#2014) * fix: source code should wrap * fix: code scroll * chore: optimize * chore: code opt * chore: code clean * fix: code editor scroll bar should be draggable (#2023) * feat: support vue tech stack (#1922) * feat: add vue tech stack support * docs: techstack related how to use vue and how to add techstack support plugin * feat: add external api parser support 1. Add interfaces to allow dumi to integrate with an external api parser 2. Add dumi-vue-meta package, which can extract metadata from vue. 3. Add API tables support for dumi-plugin-vue * docs: api table support related * feat: add an option for changing tsconfig path Add the `tsconfigPath` option in `parserOptions` to allow user to customize tsconfig * refactor: give watcher creation rights to BaseAtomAssetsParser * docs: Update README.md * fix: type of function signature parameter needs to be string * refactor: code structure adjustment * fix: babel-plugin-iife type error * chore: use umi prebundled babel dependencies prebundle `@vue/babel-plugin-jsx` * feat: add onBlockLoad method for IDumiTechStack Provide a method for parsing custom files of frontend frameworks. * refactor: replace `babel-plugin-iife` with` transformDemoCode` * refactor: consolidate runtime related APIs into `IDumiTechStack` remove `useTechStackRuntimeApi` * feat: add createApiParser * fix: createApiParser * docs: techstack related * refactor: add bundle-utils * fix: support html2sketch * fix: html comments FrontMatter * feat: incorporate live demo into the techstack * fix: iframe mode * fix: issue introduced by @vue/babel-plugin-jsx vuejs/babel-plugin-jsx#687 * refactor: new design of techstack runtime options * fix: live demo loading * feat: check vue version * refactor: flatten options of preset-vue * refactor: remove id * docs: preset-vue and techstack * refactor: remove id of IDemoData * fix: demo error * fix: shoud pass id to useRenderer * fix: unexpected return type of useRouteMeta * refactor: improve vue tech stack support (#2036) * chore: update eslintignore * refactor: merge bundler-utils to tech-stack-utils * refactor: turn useRenderer to internal api * refactor: clean type definitions * refactor: export parser apis from tech-stack-utils * refactor: remove useless demo data from loader * build: clear build config for dumi-vue-meta * test: update test case * test: update case for parser * fix: unnecessary trailing line break for read-only source code (#2033) * fix: trim * fix: 兼容LiveDemo情况 --------- Co-authored-by: Peach <scdzwyxst@gmail.com> * fix: demo editor style and live re-render for mobile theme (#2025) * fix: theme-mobile sorce code editor style * feat: move Tooltip to slots * refactor: make tooltip as internal component * chore: clear diff for pnpm-lock.yaml * fix: mobile live demo --------- Co-authored-by: PeachScript <scdzwyxst@gmail.com> * feat: add defineTechStack api (#2042) * feat: add createTechStack api * refactor: change to defineTechStack, restore built-in ReactTechStack * refactor: remain consistent with the original interface --------- Co-authored-by: Peach <scdzwyxst@gmail.com> * feat: support code group container (#2059) * feat: markdown support CodeGroup feat: 基本实现 chore: update docs chore: style chore: update chore: update demo chore: update logic feat: update logic chore: update docs chore: remove chore: update chore: clean diff chore: update feat: update logic test: update test Revert "test: update test" This reverts commit 994414e. test: add unit test * chore: fix ts lint * chore: update code-group style * chore: update * test: update unit test * Update src/loaders/markdown/transformer/remarkContainer.ts Co-authored-by: Peach <scdzwyxst@gmail.com> * chore: update logic * chore: remove ts type * feat: updata tabs comp * chore: unified naming --------- Co-authored-by: Peach <scdzwyxst@gmail.com> * docs: describe for vue tech stack (#2050) * docs: vue related * docs: update defineTechStack * feat: improve api parser and json schema for vue (#2051) * feat: add functional component/generic component support * feat: add more typedoc/jsdoc tags version control and release related tags * fix: expose outside props * feat: add externalSymbolLinkMap support * fix: readme * fix: tests run on windows * feat: add source reference for interface, type alias, type params * fix: vue demo * fix: dynamic git revision * fix: tests on windows * refactor: remove version * feat: use dumi built-in function to generate source links * fix: multi-instance bug and unhandled error for live demo feature (#2078) * fix: external resolve and skip server render handle for liveDemo * fix: 依赖不再使用绝对路径 * fix: delete external * feat: optimize the error prompts and editing experience of vue demo (#2065) * feat: optimize the error prompts and editing experience of vue demo * refactor: use preflight option * refactor: optimize userRenderer * docs: vue supplement explanation (#2079) --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: 二货爱吃白萝卜 <smith3816@gmail.com> Co-authored-by: MadCcc <1075746765@qq.com> Co-authored-by: 红 <wxh1220@gmail.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Optimistic-Chen <64662582+DBSDs@users.noreply.github.com> Co-authored-by: liangjun.chen <liangjun.chen@yunqutech.com> Co-authored-by: binyellow <571704908@qq.com> Co-authored-by: 阿平 <xierenyuan@qq.com> Co-authored-by: eternal~fire <jeffwcx@icloud.com> Co-authored-by: Zhou Bill <735051883@qq.com> Co-authored-by: Jinbao1001 <nodewebli@gmail.com>
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
背景
文档的外部壳和内嵌 demo 的样式表会进行合并且同时在一个 runtime 中被渲染,这意味着,倘若文档外部的壳中有部分全局样式,则会污染到内嵌 demo 的样式,导致开发者在预览阶段看到的效果和生产使用时未必一致,后果十分严重。
备选方案
隔离无非 3 种方案:
iframe 天然隔离
从 Web 层面上来说它似乎就是最佳实践,但在开发 & 使用体验上它却是比较糟糕的:
ShadowDOM 特性隔离
这是最开始想优先考虑的方案,但在请教 @ikobe 后了解到这里的水非常深。
当一个节点成为 ShadowDOM 后,它的样式表需要手动注入到自己的节点下,这里需要经历编译 demo -> 分析 demo 所引用的全部样式表 -> 编译样式表 -> 存储样式表(也可以字符串变量存在组件中)-> 在运行时插入样式表,目前 webpack 提供的构建钩子中,虽然有能分析到依赖的钩子,但已经处于无法修改构建产物的阶段,如果要继续往这条没人走过的路上走,可能会非常黑,而且不利于后期维护。目前思考下来有如下两个方向还存有突破的可能性:
为 demo 规避污染源,主动隔离
这是现在 ant.design、Docz 等采用的方案。
原理十分简单,规范外部文档壳样式的编写及应用方式,不写全局样式,对局部样式做大容器的包裹,比如对 markdown 的样式区域用
.markdown
的 className 包裹,这样 demo 区域的样式就不会受到污染。但也存在一些弊端:最终结论
分析下来,从工程角度上讲,最完美的方案肯定是 ShadowDOM;从 ROI 的角度上讲,最适合的方案肯定是主动隔离;至于 iframe,则让它去吧。
考虑到目前 father-doc 正处于 0-1 的阶段,先有可用于生产的产品乃是第一优先级的事,所以在这一阶段中,最终决定采用主动隔离的方案,后续的迭代中再去调研 ShadowDOM 的方式。
The text was updated successfully, but these errors were encountered: