<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Frontend on Time Friend</title><link>https://time-friend.com/en/tags/frontend/</link><description>Recent content in Frontend on Time Friend</description><generator>Hugo</generator><language>en-GB</language><lastBuildDate>Wed, 29 Jul 2026 15:15:07 +0800</lastBuildDate><atom:link href="https://time-friend.com/en/tags/frontend/index.xml" rel="self" type="application/rss+xml"/><item><title>Recommended Order for Developing Taro Multi-Platform Applications</title><link>https://time-friend.com/en/archive/recommended-order-for-developing-taro-multi-platform-applications/</link><pubDate>Wed, 16 Dec 2020 22:17:36 +0000</pubDate><guid>https://time-friend.com/en/archive/recommended-order-for-developing-taro-multi-platform-applications/</guid><description>&lt;h2 id="developing-taro-multi-platform-applications-with-minimal-cost"&gt;Developing Taro Multi-Platform Applications with Minimal Cost&lt;/h2&gt;
&lt;p&gt;All mini-programs, quick apps, React Native apps, etc. in our company are now being developed using Taro.&lt;/p&gt;
&lt;p&gt;If you only need to support one platform, developing with Taro is no problem at all.&lt;/p&gt;
&lt;p&gt;However, if you want to develop once and have it run normally on all platforms, you need to pay attention to many details.&lt;/p&gt;
&lt;p&gt;Each platform has its own challenges.&lt;/p&gt;
&lt;h2 id="development-difficulty-ranking"&gt;Development Difficulty Ranking&lt;/h2&gt;
&lt;p&gt;Huawei Quick App &amp;gt; Quick App &amp;gt; React Native &amp;gt; Swan Mini-Program &amp;gt; WeChat Mini-Program &amp;gt; H5&lt;/p&gt;</description></item><item><title>How to Optimize Bundle Size for Quick Apps Developed with Taro</title><link>https://time-friend.com/en/archive/how-to-optimize-bundle-size-for-quick-apps-developed-with-taro/</link><pubDate>Tue, 15 Dec 2020 22:17:36 +0000</pubDate><guid>https://time-friend.com/en/archive/how-to-optimize-bundle-size-for-quick-apps-developed-with-taro/</guid><description>&lt;h2 id="quick-app-duplicate-bundling-issue"&gt;Quick App Duplicate Bundling Issue&lt;/h2&gt;
&lt;p&gt;When developing quick apps with Taro, there&amp;rsquo;s one issue that absolutely cannot be ignored: bundle size.&lt;/p&gt;
&lt;p&gt;Due to the bundling characteristics of quick apps (below version 1080), if a third-party library is repeatedly used across multiple pages, that library&amp;rsquo;s code will be bundled into each page, causing the same code to exist in multiple pages.&lt;/p&gt;
&lt;p&gt;Because quick app version 1080 is not yet widely deployed. If you rashly upgrade your quick app&amp;rsquo;s minimum platform version to 1080,
you will lose a large number of users on lower versions.&lt;/p&gt;</description></item><item><title>Making Taro UI Support React Native</title><link>https://time-friend.com/en/archive/making-taro-ui-support-react-native/</link><pubDate>Thu, 27 Aug 2020 22:17:36 +0000</pubDate><guid>https://time-friend.com/en/archive/making-taro-ui-support-react-native/</guid><description>&lt;h2 id="the-dilemma-of-taro-ui-not-supporting-rn"&gt;The Dilemma of Taro UI Not Supporting RN&lt;/h2&gt;
&lt;p&gt;Taro UI documentation mentioned early on that it might support RN, but it&amp;rsquo;s been over a year, and due to manpower issues in the Taro UI team, it hasn&amp;rsquo;t been compatible with RN yet.&lt;/p&gt;
&lt;p&gt;Business is urgent, we can&amp;rsquo;t wait for that day. Do it yourself and you&amp;rsquo;ll have everything you need.&lt;/p&gt;
&lt;h2 id="problems-with-traditional-taro-component-packaging-on-rn"&gt;Problems with Traditional Taro Component Packaging on RN&lt;/h2&gt;
&lt;p&gt;Generally, after a component library is packaged, the dist/index.js file will look like this.&lt;/p&gt;</description></item><item><title>Taro Cross-Platform Development - Multi-Business Module Management React Native (Final)</title><link>https://time-friend.com/en/archive/multi-business-module-management-react-native-final/</link><pubDate>Tue, 25 Aug 2020 22:17:36 +0000</pubDate><guid>https://time-friend.com/en/archive/multi-business-module-management-react-native-final/</guid><description>&lt;h2 id="react-native-hot-update-solution"&gt;React Native Hot Update Solution&lt;/h2&gt;
&lt;p&gt;RN business is becoming increasingly large, and more teams are collaborating. RN&amp;rsquo;s dynamic capabilities must be put on the agenda.
For RN hot updates, the first problem is code splitting.&lt;/p&gt;
&lt;p&gt;RN&amp;rsquo;s base library is very large, plus we depend on many third-party libraries. This code must be separated during code splitting.
Business packages should be relatively pure, containing only business code. This ensures business packages are smaller, ensuring speed during hot updates.&lt;/p&gt;</description></item><item><title>Taro Cross-Platform Development - Multi-Business Module Management React Native (Part 2)</title><link>https://time-friend.com/en/archive/multi-business-module-management-react-native-part-2/</link><pubDate>Sun, 23 Aug 2020 22:17:36 +0000</pubDate><guid>https://time-friend.com/en/archive/multi-business-module-management-react-native-part-2/</guid><description>&lt;h2 id="implement-a-simple-module-management-tool-to-solve-the-problem-of-slow-npm-pulling-of-business-modules"&gt;Implement a Simple Module Management Tool to Solve the Problem of Slow npm Pulling of Business Modules&lt;/h2&gt;
&lt;p&gt;Using npm to pull git repositories, the speed is actually acceptable.
The main slowness is during &lt;code&gt;postinstall&lt;/code&gt; when npm pulls git repositories, it needs to rebuild project code. Another point is that business modules also have dependencies, and npm install also needs to pull the same dependencies again.&lt;/p&gt;
&lt;p&gt;These two steps can actually be omitted. The solution is to implement a simple module management tool to replace npm&amp;rsquo;s handling of loading business modules.&lt;/p&gt;</description></item><item><title>Taro Cross-Platform Development - Multi-Business Module Management React Native (Part 1)</title><link>https://time-friend.com/en/archive/multi-business-module-management-react-native-part-1/</link><pubDate>Fri, 21 Aug 2020 22:17:36 +0000</pubDate><guid>https://time-friend.com/en/archive/multi-business-module-management-react-native-part-1/</guid><description>&lt;h2 id="how-can-native-rn-projects-and-taro-coexist"&gt;How Can Native RN Projects and Taro Coexist?&lt;/h2&gt;
&lt;p&gt;Our team started practicing native React Native projects early on, for a long time,&lt;/p&gt;
&lt;p&gt;All business modules were developed and maintained in one project. Over time, this project became a behemoth.&lt;/p&gt;
&lt;p&gt;Plus later we introduced RN projects based on Taro development. To ensure native and Taro RN coexistence,&lt;/p&gt;
&lt;p&gt;Whether it&amp;rsquo;s native RN projects or Taro projects, the main export index file format in package.json files is consistent.&lt;/p&gt;</description></item><item><title>Taro Cross-Platform Development - Dependency Management Issues</title><link>https://time-friend.com/en/archive/dependency-management-issues/</link><pubDate>Thu, 20 Aug 2020 22:17:36 +0000</pubDate><guid>https://time-friend.com/en/archive/dependency-management-issues/</guid><description>&lt;p&gt;Currently, the platforms we reach through Taro include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;WeChat Mini Program&lt;/li&gt;
&lt;li&gt;QQ Mini Program&lt;/li&gt;
&lt;li&gt;Baidu Mini Program&lt;/li&gt;
&lt;li&gt;React Native&lt;/li&gt;
&lt;li&gt;H5&lt;/li&gt;
&lt;li&gt;Quick App&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;To quickly allow business to reach all platforms, each of our business modules is independent.&lt;/p&gt;
&lt;p&gt;They are compatible with different platforms according to business needs, and then assembled into a complete project during build time.&lt;/p&gt;
&lt;p&gt;To meet the above needs and enable flexible development, each business module can be independently developed and run, without depending on the main project.&lt;/p&gt;</description></item><item><title>Taro Cross-Platform Development - Thoughts and Measures on the New Era of Cross-Platform Development</title><link>https://time-friend.com/en/archive/thoughts-and-measures-on-new-era-of-cross-platform-development/</link><pubDate>Tue, 16 Jun 2020 22:17:36 +0000</pubDate><guid>https://time-friend.com/en/archive/thoughts-and-measures-on-new-era-of-cross-platform-development/</guid><description>&lt;h2 id="new-era"&gt;New Era&lt;/h2&gt;
&lt;p&gt;The emergence of cross-platform frameworks has transitioned front-end browser compatibility to a new era of client platform compatibility.&lt;/p&gt;
&lt;p&gt;For startups, this type of framework can quickly test and reduce human and time costs.&lt;/p&gt;
&lt;h2 id="why-choose-taro"&gt;Why Choose Taro&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;It&amp;rsquo;s not that Taro solution is particularly excellent. At the current time point, all current cross-platform frameworks are still in the improvement stage. The most complete platforms might be mini programs and H5.&lt;/p&gt;</description></item><item><title>Micro-Frontend Advanced 4 - Cross-Framework Shared Components (Widgetization)</title><link>https://time-friend.com/en/archive/micro-frontend-advanced-4-cross-framework-shared-components-widgetization/</link><pubDate>Sat, 22 Jun 2019 22:17:36 +0000</pubDate><guid>https://time-friend.com/en/archive/micro-frontend-advanced-4-cross-framework-shared-components-widgetization/</guid><description>&lt;p&gt;In micro-frontend, we can let sub-modules use different framework technology stacks according to our business needs. Although reaching this step is already very beautiful, is this the end of micro-frontend?&lt;/p&gt;
&lt;p&gt;The answer is no, micro-frontend boundaries can be further broadened.&lt;/p&gt;
&lt;p&gt;The previous micro-frontend article &lt;a href="https://time-friend.com/archive/qh7x5i5szfh/"&gt;https://time-friend.com/archive/qh7x5i5szfh/&lt;/a&gt; introduced how to call React components between sub-modules with the same technology stack.&lt;/p&gt;
&lt;p&gt;What we&amp;rsquo;re talking about today is how sub-modules between different technology stacks call components from different technology stacks.&lt;/p&gt;</description></item><item><title>Micro-Frontend Advanced 3 - Cross-Module Shared Components</title><link>https://time-friend.com/en/archive/micro-frontend-advanced-3-cross-module-shared-components/</link><pubDate>Sun, 12 May 2019 22:17:36 +0000</pubDate><guid>https://time-friend.com/en/archive/micro-frontend-advanced-3-cross-module-shared-components/</guid><description>&lt;p&gt;After front-end microservices, we face a problem: duplicate code between modules cannot be reused.&lt;/p&gt;
&lt;p&gt;If we use npm to manage our duplicate code, we&amp;rsquo;ll have additional costs maintaining npm packages.
Updating npm package versions in sub-modules is also very troublesome.
There&amp;rsquo;s no optimization in js file size either.&lt;/p&gt;
&lt;h1 id="component-sharing"&gt;Component Sharing&lt;/h1&gt;
&lt;p&gt;Today let&amp;rsquo;s talk about how to use one component simultaneously in multiple modules.&lt;/p&gt;
&lt;h2 id="approach"&gt;Approach&lt;/h2&gt;
&lt;p&gt;Manage public components in base module, encapsulate components as dynamic components, so when packaging we can split this component into a separate file.
When other sub-modules need this component, dynamically get it from Base module.&lt;/p&gt;</description></item><item><title>Micro-Frontend Advanced 2 - Local Development Guide</title><link>https://time-friend.com/en/archive/micro-frontend-advanced-2-local-development-guide/</link><pubDate>Mon, 22 Apr 2019 22:17:36 +0000</pubDate><guid>https://time-friend.com/en/archive/micro-frontend-advanced-2-local-development-guide/</guid><description>&lt;p&gt;After building our microservices front-end application using &lt;code&gt;single-spa&lt;/code&gt;, there&amp;rsquo;s actually a problem that will always trouble us,
That is how to develop effectively? How to be as simple and easy to use as our usual front-end application development.
Today using umi sub-module as an example, hoping to give everyone an idea&lt;/p&gt;
&lt;p&gt;Today I&amp;rsquo;ll introduce one method, hoping it helps everyone.&lt;/p&gt;
&lt;h2 id="module-loader"&gt;Module Loader&lt;/h2&gt;
&lt;p&gt;Do you remember my previous module loader, &lt;a href="https://time-friend.com/archive/1a60cede/"&gt;https://time-friend.com/archive/1a60cede/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;We just need to encapsulate the original module loader into an npm package.&lt;/p&gt;</description></item><item><title>Micro-Frontend Advanced 1 - Umi-Based Submodule Solution</title><link>https://time-friend.com/en/archive/micro-frontend-advanced-1-umi-based-submodule-solution/</link><pubDate>Sat, 13 Apr 2019 22:17:36 +0000</pubDate><guid>https://time-friend.com/en/archive/micro-frontend-advanced-1-umi-based-submodule-solution/</guid><description>&lt;p&gt;It&amp;rsquo;s been more than half a year since the first article about front-end microservices. Many people are interested.&lt;/p&gt;
&lt;p&gt;Today let&amp;rsquo;s talk about how we build a more complete front-end microservices sub-module based on umi.&lt;/p&gt;
&lt;p&gt;If you&amp;rsquo;re using front-end technology stacks other than React,
Many of my handling methods can also be applied to other technology stacks.&lt;/p&gt;
&lt;p&gt;Hope it helps you too.&lt;/p&gt;
&lt;h1 id="excellent-umi-framework"&gt;Excellent umi Framework&lt;/h1&gt;
&lt;p&gt;In front-end mid-backend projects, front-end microservices needs are relatively strong.&lt;/p&gt;</description></item><item><title>Single-SPA Micro Frontend Demo Collection</title><link>https://time-friend.com/en/archive/single-spa-demo-guide/</link><pubDate>Wed, 31 Oct 2018 00:00:00 +0000</pubDate><guid>https://time-friend.com/en/archive/single-spa-demo-guide/</guid><description>&lt;p&gt;Here are the single-spa micro frontend demos that can be found on GitHub:&lt;/p&gt;
&lt;h2 id="single-spa-examples"&gt;&lt;a href="https://github.com/CanopyTax/single-spa-examples"&gt;single-spa-examples&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;This is the official single-spa example. Here is the &lt;a href="http://single-spa.surge.sh"&gt;online demo&lt;/a&gt;.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="simple-single-spa-webpack-example"&gt;&lt;a href="https://github.com/joeldenning/simple-single-spa-webpack-example"&gt;simple-single-spa-webpack-example&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;This is a usage example built with webpack. The webpack version might be a bit old, but the concept is the same.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="single-spa-angular-cli-examples"&gt;&lt;a href="https://github.com/PlaceMe-SAS/single-spa-angular-cli-examples"&gt;single-spa-angular-cli-examples&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;An Angular example based on angular-cli, suitable for Angular 2.0+ versions.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="single-spa-es5-angularjs"&gt;&lt;a href="https://github.com/joeldenning/single-spa-es5-angularjs"&gt;single-spa-es5-angularjs&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;An AngularJS example, i.e., AngularJS 1.x version.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="single-spa-portal-example"&gt;&lt;a href="https://github.com/me-12/single-spa-portal-example"&gt;single-spa-portal-example&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;This is already a very complete multi-tech-stack use case, integrating multiple tech stacks with inter-module communication ideas. Very worth studying.&lt;/p&gt;</description></item><item><title>Micro Frontend Solution 8 - Secondary Build</title><link>https://time-friend.com/en/archive/micro-frontend-solution-8-secondary-build/</link><pubDate>Fri, 07 Sep 2018 01:00:00 +0000</pubDate><guid>https://time-friend.com/en/archive/micro-frontend-solution-8-secondary-build/</guid><description>&lt;h1 id="secondary-build"&gt;Secondary Build&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;Further optimize our micro frontend performance&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;In a micro frontend architecture, each module outputs fixed files, such as the previously mentioned:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Project config file&lt;/li&gt;
&lt;li&gt;Store.js file&lt;/li&gt;
&lt;li&gt;main.js render entry file&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;These three are the necessary files for each module in a micro frontend architecture.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;When the module loader starts the entire project, it must load all modules&amp;rsquo; config files and Store.js files.
In a previous article, we discussed &lt;code&gt;config automation&lt;/code&gt;, which is essentially a simple form of secondary build.
Although each module&amp;rsquo;s config file is not very large, each file is loaded and is necessary for project startup.
Each file takes one HTTP request, and each file&amp;rsquo;s blocking affects the project&amp;rsquo;s startup time.&lt;/p&gt;</description></item><item><title>Micro Frontend Solution 7 - Static Data Sharing</title><link>https://time-friend.com/en/archive/micro-frontend-solution-7-static-data/</link><pubDate>Thu, 06 Sep 2018 01:00:00 +0000</pubDate><guid>https://time-friend.com/en/archive/micro-frontend-solution-7-static-data/</guid><description>&lt;p&gt;From the previous introductions, I believe you now have a relatively complete understanding of micro frontends.
Below are some tips and handling methods I&amp;rsquo;ve developed during my work.&lt;/p&gt;
&lt;h1 id="dynamic-entry"&gt;Dynamic Entry&lt;/h1&gt;
&lt;p&gt;When a new submodule is mounted to the project, a new entry point in the UI is needed to access the submodule&amp;rsquo;s UI.
Such an entry point needs to be generated dynamically.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://static.alili.tech/images/micro/base-demo.jpg" alt=""&gt;&lt;/p&gt;
&lt;p&gt;For example: the menu on the left side of the image should not be hardcoded. It should be automatically generated based on the data provided by each module.&lt;/p&gt;</description></item><item><title>Micro Frontend Solution 6 - Build &amp; Deploy</title><link>https://time-friend.com/en/archive/micro-frontend-solution-6-build-deploy/</link><pubDate>Wed, 05 Sep 2018 01:00:00 +0000</pubDate><guid>https://time-friend.com/en/archive/micro-frontend-solution-6-build-deploy/</guid><description>&lt;h1 id="micro-frontend-build"&gt;Micro Frontend Build&lt;/h1&gt;
&lt;p&gt;There are some things to note when bundling micro frontend projects.
Take webpack as an example:&lt;/p&gt;
&lt;h2 id="amd-modules"&gt;AMD Modules&lt;/h2&gt;
&lt;p&gt;In previous articles, we mentioned that our loader is based on System.js.
So the final bundle of our micro frontend modules must conform to module specifications.
We use the &lt;code&gt;AMD module&lt;/code&gt; specification to build our modules.&lt;/p&gt;
&lt;h2 id="specify-base-path"&gt;Specify Base Path&lt;/h2&gt;
&lt;p&gt;Since the module loader calls the module entry file after bundling,
To clearly manage each module and correctly load all our module resources,
we specify a &lt;code&gt;publicPath&lt;/code&gt; for all module resources.&lt;/p&gt;</description></item><item><title>Micro Frontend Solution 5 - Route Distribution</title><link>https://time-friend.com/en/archive/micro-frontend-solution-5-route-distribution/</link><pubDate>Tue, 04 Sep 2018 01:00:00 +0000</pubDate><guid>https://time-friend.com/en/archive/micro-frontend-solution-5-route-distribution/</guid><description>&lt;h1 id="route-distributed-micro-frontend"&gt;Route-Distributed Micro Frontend&lt;/h1&gt;
&lt;h2 id="from-application-distributing-routes-to-routes-distributing-applications"&gt;From Application Distributing Routes to Routes Distributing Applications&lt;/h2&gt;
&lt;p&gt;There is no better way to explain micro frontend routing than this sentence.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Route-distributed micro frontend distributes different business functions to different, independent front-end applications through routing. This can usually be achieved through reverse proxy on an HTTP server, or through the routing that comes with the application framework.
Currently, route-distributed micro frontend architecture is probably the most adopted and easiest &amp;ldquo;micro frontend&amp;rdquo; solution. However, this approach looks more like a聚合 of multiple front-end applications, i.e., we just piece together these different front-end applications to make them look like a complete whole. But they are not — every time a user goes from App A to App B, they often need to refresh the page. — Quoted from phodal &lt;a href="https://microfrontend.cn"&gt;The Matters of Micro Frontends&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Micro Frontend Solution 4 - Message Bus</title><link>https://time-friend.com/en/archive/micro-frontend-solution-4-message-bus/</link><pubDate>Mon, 03 Sep 2018 01:00:00 +0000</pubDate><guid>https://time-friend.com/en/archive/micro-frontend-solution-4-message-bus/</guid><description>&lt;blockquote&gt;
&lt;p&gt;The main function of the micro frontend message bus is to bridge communication between modules.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h1 id="black-box"&gt;Black Box&lt;/h1&gt;
&lt;h2 id="problem-1"&gt;Problem 1:&lt;/h2&gt;
&lt;p&gt;After applying microservices architecture, each individual module becomes a black box.
What happens inside, what state changes, other modules have no way of knowing.
For example, when &lt;code&gt;Module A&lt;/code&gt; wants to perform an action based on a certain internal state of &lt;code&gt;Module B&lt;/code&gt;, there is no way for black boxes to communicate. This is a major problem.&lt;/p&gt;</description></item><item><title>Micro Frontend Solution 3 - Module Loader</title><link>https://time-friend.com/en/archive/micro-frontend-solution-3-module-loader/</link><pubDate>Mon, 03 Sep 2018 00:00:00 +0000</pubDate><guid>https://time-friend.com/en/archive/micro-frontend-solution-3-module-loader/</guid><description>&lt;p&gt;The micro frontend module loader handles three main responsibilities:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Loading project configuration files&lt;/li&gt;
&lt;li&gt;Loading module API files (used by the message bus, covered later)&lt;/li&gt;
&lt;li&gt;Loading module entry files&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;These are three essential parts for every module.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h1 id="configuration-file"&gt;Configuration File&lt;/h1&gt;
&lt;p&gt;In our micro frontend practice, each module has an external configuration file used when registering with Single-SPA.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-js" data-lang="js"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;name&amp;#34;&lt;/span&gt;&lt;span style="color:#f92672"&gt;:&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;name&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;path&amp;#34;&lt;/span&gt;&lt;span style="color:#f92672"&gt;:&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;/project&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;prefix&amp;#34;&lt;/span&gt;&lt;span style="color:#f92672"&gt;:&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;/module-prefix/&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;main&amp;#34;&lt;/span&gt;&lt;span style="color:#f92672"&gt;:&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;/module-prefix/main.js&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;store&amp;#34;&lt;/span&gt;&lt;span style="color:#f92672"&gt;:&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;/module-prefix/store.js&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;base&amp;#34;&lt;/span&gt;&lt;span style="color:#f92672"&gt;:&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;When a module supports multiple URL prefixes, the path can be an array:&lt;/p&gt;</description></item><item><title>Micro Frontend Solution 2 - Single-SPA</title><link>https://time-friend.com/en/archive/micro-frontend-solution-2-single-spa/</link><pubDate>Sun, 02 Sep 2018 22:17:36 +0000</pubDate><guid>https://time-friend.com/en/archive/micro-frontend-solution-2-single-spa/</guid><description>&lt;h1 id="technology-selection"&gt;Technology Selection&lt;/h1&gt;
&lt;p&gt;After extensive research, we chose &lt;a href="https://single-spa.js.org/"&gt;Single-SPA&lt;/a&gt; as the foundation for our frontend microservices solution.&lt;/p&gt;
&lt;video style="width:100%" src="https://static.alili.tech/data/video/Single-Spa%20Intro.mp4" controls="controls"&gt;
Your browser does not support video.
&lt;/video&gt;
&lt;h1 id="single-spa"&gt;Single-SPA&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;A JavaScript frontend solution for frontend microservices&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;With Single-SPA, you can:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Use multiple frameworks (React, Vue, AngularJS, Angular, Ember, etc.) on the same page without refreshing.&lt;/li&gt;
&lt;li&gt;Write new code with modern frameworks without refactoring existing code.&lt;/li&gt;
&lt;li&gt;Load each module on demand for better performance.&lt;/li&gt;
&lt;li&gt;Run each independent module separately.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Demo: &lt;a href="https://single-spa.surge.sh/"&gt;https://single-spa.surge.sh/&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Micro Frontend Solution 1 - Thinking</title><link>https://time-friend.com/en/archive/micro-frontend-solution-1-thinking/</link><pubDate>Sat, 01 Sep 2018 22:17:36 +0000</pubDate><guid>https://time-friend.com/en/archive/micro-frontend-solution-1-thinking/</guid><description>&lt;blockquote&gt;
&lt;p&gt;In recent years, microservices architecture has become hugely popular in the backend development community, considered the future direction of IT software architecture. How can we apply the principles of backend microservices to build modern frontend applications?
Here I provide a frontend microservices solution that can actually be implemented in production.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;img src="https://user-gold-cdn.xitu.io/2017/12/27/16098869b848027e?imageView2/0/w/1280/h/960/format/webp/ignore-error/1" alt=""&gt;&lt;/p&gt;
&lt;h1 id="comparison-of-backend-and-frontend-microservices"&gt;Comparison of Backend and Frontend Microservices&lt;/h1&gt;
&lt;h2 id="advantages-of-backend-microservices"&gt;Advantages of Backend Microservices:&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Controlled Complexity&lt;/strong&gt;: Small size, low complexity. Each microservice can be fully managed by a small development team, making it easy to maintain high maintainability and development efficiency.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Independent Deployment&lt;/strong&gt;: Since microservices run in separate processes, each can be deployed independently.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Flexible Technology Choices&lt;/strong&gt;: In a microservices architecture, technology selection is decentralized. Each team can freely choose the most suitable tech stack based on their service needs and industry trends.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Fault Isolation&lt;/strong&gt;: When a component fails, in a single-process traditional architecture, the fault is likely to spread within the process, causing global unavailability.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Scalability&lt;/strong&gt;: Monolithic applications can also scale horizontally, but it requires replicating the entire application to different nodes.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="advantages-of-frontend-microservices"&gt;Advantages of Frontend Microservices:&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Controlled Complexity&lt;/strong&gt;: Each UI business module is developed by an independent frontend team, preventing code bloat, maintaining fast compilation during development, and keeping complexity low for easy maintenance.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Independent Deployment&lt;/strong&gt;: Each module can be deployed independently, down to a single component&amp;rsquo;s UI, without affecting other modules.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Flexible Technology Choices&lt;/strong&gt;: The most attractive advantage — you can use any frontend tech stack available today, including future ones, within the same project.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Fault Isolation&lt;/strong&gt;: A single module failure does not affect the entire application.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Scalability&lt;/strong&gt;: Each service can be independently scaled horizontally to meet business needs without unnecessary resource consumption.&lt;/li&gt;
&lt;/ol&gt;
&lt;h1 id="when-do-we-need-frontend-microservices"&gt;When Do We Need Frontend Microservices?&lt;/h1&gt;
&lt;ol&gt;
&lt;li&gt;The project&amp;rsquo;s tech stack is outdated, developers with relevant skills are scarce, feature expansion is difficult, and refactoring or maintenance costs are high.&lt;/li&gt;
&lt;li&gt;The project is too large, code compilation is slow, the development experience is poor, and a higher-level decoupling solution is needed.&lt;/li&gt;
&lt;li&gt;A single tech stack cannot meet your business requirements.&lt;/li&gt;
&lt;/ol&gt;
&lt;h1 id="problems-and-challenges"&gt;Problems and Challenges&lt;/h1&gt;
&lt;p&gt;We will face the following issues:&lt;/p&gt;</description></item></channel></rss>