<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Ziv</title>
    <description>The latest articles on DEV Community by Ziv (@wewoor).</description>
    <link>https://dev.to/wewoor</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F542561%2F1398d4b5-b889-4682-b5a5-193f4fd887ec.jpeg</url>
      <title>DEV Community: Ziv</title>
      <link>https://dev.to/wewoor</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/wewoor"/>
    <language>en</language>
    <item>
      <title>We opened a lightweight Web IDE UI framework!</title>
      <dc:creator>Ziv</dc:creator>
      <pubDate>Wed, 22 Dec 2021 11:44:34 +0000</pubDate>
      <link>https://dev.to/wewoor/we-opened-a-lightweight-web-ide-ui-framework-2ank</link>
      <guid>https://dev.to/wewoor/we-opened-a-lightweight-web-ide-ui-framework-2ank</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--aHKFyppF--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/u0bx0o181g1ji25cn0q4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--aHKFyppF--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/u0bx0o181g1ji25cn0q4.png" alt="Molecule Logo" width="120" height="120"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;A lightweight Web IDE UI Framework&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;The &lt;a href="https://github.com/DTStack/molecule"&gt;Molecule&lt;/a&gt; is a lightweight Web IDE UI framework built with React.js and inspired by VS Code. We designed the Extension APIs similar to the VS Code to help developers develop the Web IDE System more efficiently. Molecule built-in the Monaco Editor, we provided extract APIs of the Keybinding and QuickAccess.&lt;/p&gt;

&lt;p&gt;Due to the Extension mechanism, the developers can decouple the business code from the IDE UI,  but to focus on the business iteration, part of IDE UI almost move to the isolated iteration. It is a better way to make the product can keep moving.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Kr8gI_vy--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/pwrucf61gv2bsxj5kd99.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Kr8gI_vy--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/pwrucf61gv2bsxj5kd99.png" alt="Workbench" width="880" height="502"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Motivation
&lt;/h2&gt;

&lt;p&gt;In &lt;a href="https://www.dtstack.com/dtinsight/"&gt;DTSTack&lt;/a&gt;, we have many Web applications, like Batch/Stream Task Development, Analysis, Data Source Management, Algorithm Development. The developers need to code, debugging in our platform, so the IDE is a frequent scene in our product.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--zMf-s_Mc--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jlhpjybgbxrrt7a23wk4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--zMf-s_Mc--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jlhpjybgbxrrt7a23wk4.png" alt="Early Web IDE Product Version" width="880" height="421"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Early Web IDE Product Version&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;This screenshot shows the early version of the IDE, and the product is simple yet. The IDE UI is based on React.js, Ant Design, and Codemirror so on technologies. Besides, due to the IDE Workbench applied in our multiple products,  we have to abstract a simple IDE UI React component to share with the other products.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--iKMuwK3C--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/k1hpg39c60jex0llvb79.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--iKMuwK3C--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/k1hpg39c60jex0llvb79.png" alt="Current Web IDE Product Version" width="880" height="502"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Current Web IDE Product Version&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;With the business growing and product iteration, the features in Workbench are more and more complex. As all you know, the product of interactive and visual upgrade every year, but the early Front end structure is so fat, extensible badly, can't support new incoming features and designs. UI designers are always confused why the cost of upgrading the frontend is so high.&lt;/p&gt;

&lt;p&gt;In the past two years, We researched the &lt;a href="https://github.com/c9"&gt;Cloud9 IDE&lt;/a&gt;, &lt;a href="https://github.com/microsoft/vscode"&gt;VS Code&lt;/a&gt;, &lt;a href="https://github.com/eclipse-theia/theia"&gt;Eclipse Theia&lt;/a&gt; solutions. These products have good UI abstraction, extensibility, and full features for IDE. But, so many features are useless for our product, and it's too hard to customize for our team. Another reason is our React.js code is also hard to integrate with these solutions.&lt;/p&gt;

&lt;p&gt;So, We want a solution, which has good UI abstraction, easy-to-customize UI, Color Theme, friendly for React.js applications. Finally, VS Code inspired us. The team tried to make the &lt;a href="https://github.com/DTStack/molecule"&gt;Molecule&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Core Features
&lt;/h2&gt;

&lt;p&gt;The Molecule wrote in Typescript and applied the React.js, Monaco Editor so on technologies, and the main features are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Built-in VS Code Workbench UI&lt;/li&gt;
&lt;li&gt;Compatible with the VS Code ColorTheme&lt;/li&gt;
&lt;li&gt;Customize the Workbench via React Component easily&lt;/li&gt;
&lt;li&gt;Built-in Monaco-Editor Command Palette, Keybinding features&lt;/li&gt;
&lt;li&gt;Support the i18n, built-in zhCN, and English&lt;/li&gt;
&lt;li&gt;Built-in Settings, support to edit and extend via the Extension&lt;/li&gt;
&lt;li&gt;Built-in basic Explorer, Search components and support extending via the Extension&lt;/li&gt;
&lt;li&gt;Typescript Ready&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s---J8d4nqe--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6mj5uvr442q858e57u3x.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s---J8d4nqe--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6mj5uvr442q858e57u3x.png" alt="Workbench Parts" width="880" height="502"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This picture is the default IDE Workbench of Molecule, basically, like Workbench, ColorTheme, QuickAccess, Keybinding, i18n, Settings, and so on features are easy to extend via the Extension API.&lt;/p&gt;

&lt;h2&gt;
  
  
  What are the differences of Molecule with other Web IDE Solutions?
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;React.js application friendly&lt;/li&gt;
&lt;li&gt;Built on React.js component and More powerful UI custom ability&lt;/li&gt;
&lt;li&gt;Compatible the VS Code so many ColorTheme extensions &lt;/li&gt;
&lt;li&gt;Only focusing on UI,  it's easy to understand to Front-end developers.&lt;/li&gt;
&lt;li&gt;Support to extend like File System, Version Control, LSP, DAP, Terminal, and so on features if you want&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  How to use it?
&lt;/h2&gt;

&lt;p&gt;Read the &lt;a href="https://dtstack.github.io/molecule/docs/quick-start"&gt;QuickStart&lt;/a&gt;, please.&lt;/p&gt;

&lt;h2&gt;
  
  
  TODO
&lt;/h2&gt;

&lt;p&gt;Molecule only released a  Beta version currently. The  APIs are not stable enough. Some concepts referred to from VS Code are over-designed. We are going to make the Extension API  is more powerful.  Keep optimizing the details of UI and ColorTheme,  developing a more rich layout system.&lt;/p&gt;

&lt;h2&gt;
  
  
  Finally
&lt;/h2&gt;

&lt;p&gt;Hoping our experience is helpful to you.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;GitHub: &lt;a href="https://github.com/DTStack/molecule"&gt;https://github.com/DTStack/molecule&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Website: &lt;a href="https://dtstack.github.io/molecule/en/"&gt;https://dtstack.github.io/molecule/en/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Preview: &lt;a href="https://dtstack.github.io/molecule-examples/#/"&gt;https://dtstack.github.io/molecule-examples/#/&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>javascript</category>
      <category>react</category>
      <category>webdev</category>
      <category>typescript</category>
    </item>
  </channel>
</rss>
