search
HomeDevelopment ToolsVSCodeScaffolding also comes in plug-in form! vscode implements scaffolding plug-in

Scaffolding also comes in plug-in form! The following article will introduce to you the vscode plug-in visual production and management scaffolding and principle analysis. I hope it will be helpful to everyone!

Scaffolding also comes in plug-in form! vscode implements scaffolding plug-in

When it comes to scaffolding, you may think of various xxx-cli. This article introduces another way: implemented in the form of vscode plug-in to provide web visual operations , as shown below:

Scaffolding also comes in plug-in form! vscode implements scaffolding plug-in

#The following describes how to install and use it, as well as the implementation principle.

Install and use

vscode to install the lowcode plug-in. This plug-in is an efficiency tool. Scaffolding is only one of its functions. You can view more functionsDocumentation, this episode only talks about scaffolding. [Recommended learning: "vscode introductory tutorial"]

After the plug-in is installed, open the scaffolding interface. The steps are as follows:

Scaffolding also comes in plug-in form! vscode implements scaffolding plug-in

##Okay Use the shared scaffolding directly, check the option and create it directly:

Scaffolding also comes in plug-in form! vscode implements scaffolding plug-in

Create the scaffolding

In the root directory of the template project Create the

lowcode.scaffold.config.json file, and add the .ejs suffix to the file that needs to be dynamically replaced.

ejs syntax:

https://ejs.bootcss.com/

Scaffolding also comes in plug-in form! vscode implements scaffolding plug-in

Configuration##A complete

lowcode.scaffold.config.json

Configuration: <pre class='brush:php;toolbar:false;'>{ &quot;formSchema&quot;: { &quot;schema&quot;: { &quot;type&quot;: &quot;object&quot;, &quot;ui:displayType&quot;: &quot;row&quot;, &quot;ui:showDescIcon&quot;: true, &quot;properties&quot;: { &quot;port&quot;: { &quot;title&quot;: &quot;监听端口&quot;, &quot;type&quot;: &quot;string&quot;, &quot;props&quot;: {}, &quot;default&quot;: &quot;3000&quot; }, &quot;https&quot;: { &quot;title&quot;: &quot;https&quot;, &quot;type&quot;: &quot;boolean&quot;, &quot;ui:widget&quot;: &quot;switch&quot; }, &quot;lint&quot;: { &quot;title&quot;: &quot;eslint + prettier&quot;, &quot;type&quot;: &quot;boolean&quot;, &quot;ui:widget&quot;: &quot;switch&quot;, &quot;default&quot;: true }, &quot;noREADME&quot;: { &quot;title&quot;: &quot;移除README文件&quot;, &quot;type&quot;: &quot;boolean&quot;, &quot;ui:widget&quot;: &quot;switch&quot;, &quot;ui:width&quot;: &quot;100%&quot;, &quot;ui:labelWidth&quot;: 0, &quot;ui:hidden&quot;: &quot;{{rootValue.emptyREADME === true}}&quot;, &quot;default&quot;: false }, &quot;emptyREADME&quot;: { &quot;title&quot;: &quot;空README文件&quot;, &quot;type&quot;: &quot;boolean&quot;, &quot;ui:widget&quot;: &quot;switch&quot;, &quot;ui:hidden&quot;: &quot;{{rootValue.noREADME === true}}&quot; } }, &quot;labelWidth&quot;: 120, &quot;displayType&quot;: &quot;row&quot; }, &quot;formData&quot;: { &quot;port&quot;: 3000, &quot;https&quot;: false, &quot;lint&quot;: true, &quot;noREADME&quot;: false, &quot;emptyREADME&quot;: false } }, &quot;excludeCompile&quot;: [&quot;codeTemplate/&quot;, &quot;materials/&quot;], &quot;conditionFiles&quot;: { &quot;noREADME&quot;: { &quot;value&quot;: true, &quot;exclude&quot;: [&quot;README.md.ejs&quot;] }, &quot;lint&quot;: { &quot;value&quot;: false, &quot;exclude&quot;: [&quot;.eslintrc.js&quot;, &quot;.prettierrc.js&quot;] } } }</pre>

formSchema

:

formSchema.schema

is the schema exported by x-render form designer. The form interface will be built based on the schema. formSchema.formData is the default for the form. Data

Scaffolding also comes in plug-in form! vscode implements scaffolding plug-in#When creating a project, the form data will be passed into the ejs template for compilation.

excludeCompile

: Configure folders or files that do not need to be compiled by ejs.

conditionFiles

: Based on the value of the form item, delete certain folders or files when creating the project, such as: <pre class='brush:php;toolbar:false;'>&quot;conditionFiles&quot;: { &quot;noREADME&quot;: { &quot;value&quot;: true, &quot;exclude&quot;: [&quot;README.md.ejs&quot;] }, &quot;lint&quot;: { &quot;value&quot;: false, &quot;exclude&quot;: [&quot;.eslintrc.js&quot;, &quot;.prettierrc.js&quot;] } }</pre>when

lint

When the value of this form item is false, the configured folders or files ".eslintrc.js" and ".prettierrc.js" will be excluded from the created project.

Local debugging scaffolding

Scaffolding also comes in plug-in form! vscode implements scaffolding plug-in

##Reference project

https://github.com/lowcode-scaffold/lowcode-mock

Publish the scaffolding

Submit the scaffolding to the git repository, please note that it is open Public access to the project.

Use scaffolding

Use the git warehouse address directly

##Note Use clone address to support specified branches, such as Scaffolding also comes in plug-in form! vscode implements scaffolding plug-in-b master https://github.com/lowcode-scaffold/lowcode-mock.git

, internal private warehouses can also use

Scaffolding also comes in plug-in form! vscode implements scaffolding plug-inShare to template list to quickly create

Modify

warehouseScaffolding also comes in plug-in form! vscode implements scaffolding plug-in Contents in

index.json

, submit PR.

实现原理

  • 打开 webview 的时候从 cdn 拉取记录了脚手架列表的 json 文件,渲染列表视图。

  • 点击某个脚手架,将脚手架的 git 仓库地址传到插件后台,插件后台根据 git 地址下载模版到临时工作目录,并且读取 lowcode.scaffold.config.json 文件中的 formSchema 返回给 webview。

export const downloadScaffoldFromGit = (remote: string) => {
  fs.removeSync(tempDir.scaffold);
  execa.sync('git', ['clone', ...remote.split(' '), tempDir.scaffold]);
  fs.removeSync(path.join(tempDir.scaffold, '.git'));
  if (
    fs.existsSync(path.join(tempDir.scaffold, 'lowcode.scaffold.config.json'))
  ) {
    return fs.readJSONSync(
      path.join(tempDir.scaffold, 'lowcode.scaffold.config.json'),
    );
  }
  return {};
};
  • webview 拿到 formSchema 后弹框渲染动态表单,点提交后将动态表单数据以及生成目录等信息传给插件后台。

  • 插件后台拿到表单数据后,到临时目录中根据 conditionFiles 配置删除掉不需要的文件。然后根据表单数据编译所有 ejs 文件,最后将所有文件拷贝到生成目录。

export const compileScaffold = async (model: any, createDir: string) => {
  if (
    fs.existsSync(path.join(tempDir.scaffold, &#39;lowcode.scaffold.config.json&#39;))
  ) {
    const config = fs.readJSONSync(
      path.join(tempDir.scaffold, &#39;lowcode.scaffold.config.json&#39;),
    );
    const excludeCompile: string[] = config.excludeCompile || [];
    if (config.conditionFiles) {
      Object.keys(model).map((key) => {
        if (
          config.conditionFiles[key] &&
          config.conditionFiles[key].value === model[key] &&
          Array.isArray(config.conditionFiles[key].exclude)
        ) {
          config.conditionFiles[key].exclude.map((exclude: string) => {
            fs.removeSync(path.join(tempDir.scaffold, exclude));
          });
        }
      });
    }
    await renderEjsTemplates(model, tempDir.scaffold, excludeCompile);
    fs.removeSync(path.join(tempDir.scaffold, &#39;lowcode.scaffold.config.json&#39;));
  }
  fs.copySync(tempDir.scaffold, createDir);
};

本地调试时,就是在步骤 2 中将选择的文件夹内容或者当前 vscode 打开的项目内容拷贝到临时工作目录。

Scaffolding also comes in plug-in form! vscode implements scaffolding plug-in

下集再说插件其他功能,插件源码:https://github.com/lowcoding/lowcode-vscode

原文地址:https://juejin.cn/post/7080787567192309797

作者:若邪

更多关于VSCode的相关知识,请访问:vscode教程!!

The above is the detailed content of Scaffolding also comes in plug-in form! vscode implements scaffolding plug-in. For more information, please follow other related articles on the PHP Chinese website!

Statement
This article is reproduced at:掘金社区. If there is any infringement, please contact admin@php.cn delete
Visual Studio: Exploring Pricing and Licensing OptionsVisual Studio: Exploring Pricing and Licensing OptionsApr 13, 2025 am 12:03 AM

Visual Studio is available in three versions: Community Free Edition is for individuals and small teams, Professional Paid Edition is for professional developers and small and medium teams, and Enterprise Ultimate Edition is for large enterprises and complex projects.

Visual Studio's Value: Weighing the Cost Against Its BenefitsVisual Studio's Value: Weighing the Cost Against Its BenefitsApr 12, 2025 am 12:06 AM

VisualStudio is highly valuable in .NET development because it is powerful and comprehensive. Despite the high cost and resource consumption, the efficiency improvement and development experience it brings is significant. Community is ideal for individual developers and small teams; large enterprises are suitable for Professional or Enterprise.

Visual Studio's Availability: Which Editions Are Free?Visual Studio's Availability: Which Editions Are Free?Apr 10, 2025 am 09:44 AM

Free versions of VisualStudio include VisualStudioCommunity and VisualStudioCode. 1. VisualStudioCommunity is suitable for individual developers, open source projects and small teams. It is powerful and suitable for individual projects and learning programming. 2. VisualStudioCode is a lightweight code editor that supports multiple programming languages ​​and extensions. It has a fast startup speed and low resource usage, making it suitable for developers who need flexibility and scalability.

How to install Visual Studio for Windows 8?How to install Visual Studio for Windows 8?Apr 09, 2025 am 12:19 AM

The steps to install VisualStudio on Windows 8 are as follows: 1. Download the VisualStudioCommunity2019 installation package from the official Microsoft website. 2. Run the installer and select the required components. 3. It can be used after installation is completed. Be careful to select Windows 8-compatible components and make sure there is sufficient disk space and administrator rights.

Can my computer run VS Code?Can my computer run VS Code?Apr 08, 2025 am 12:16 AM

VSCode can run on most modern computers as long as the basic system requirements are met: 1. Operating system: Windows 7 and above, macOS 10.9 and above, Linux; 2. Processor: 1.6GHz or faster; 3. Memory: at least 2GB RAM (4GB or higher recommended); 4. Storage space: at least 200MB of available space. By optimizing settings and reducing extended usage, you can get a smooth user experience on low-configuration computers.

How do I make a program compatible with Windows 8?How do I make a program compatible with Windows 8?Apr 07, 2025 am 12:09 AM

To make the program run smoothly on Windows 8, the following steps are required: 1. Use compatibility mode, detect and enable this mode through code. 2. Adjust API calls and select the appropriate API according to the Windows version. 3. Perform performance optimization, try to avoid using compatibility mode, optimize API calls and use general controls.

Does VS Code work on Windows 8?Does VS Code work on Windows 8?Apr 06, 2025 am 12:13 AM

Yes,VSCodeiscompatiblewithWindows8.1)DownloadtheinstallerfromtheVSCodewebsiteandensurethelatest.NETFrameworkisinstalled.2)Installextensionsusingthecommandline,notingsomemayloadslower.3)Manageperformancebyclosingunnecessaryextensions,usinglightweightt

What is the difference between VS Code and Visual Studio?What is the difference between VS Code and Visual Studio?Apr 05, 2025 am 12:07 AM

VSCode is a lightweight code editor suitable for multiple languages ​​and extensions; VisualStudio is a powerful IDE mainly used for .NET development. 1.VSCode is based on Electron, supports cross-platform, and uses the Monaco editor. 2. VisualStudio uses Microsoft's independent technology stack to integrate debugging and compiler. 3.VSCode is suitable for simple tasks, and VisualStudio is suitable for large projects.

See all articles

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Article

R.E.P.O. Energy Crystals Explained and What They Do (Yellow Crystal)
3 weeks agoBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Best Graphic Settings
3 weeks agoBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. How to Fix Audio if You Can't Hear Anyone
3 weeks agoBy尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: How To Unlock Everything In MyRise
4 weeks agoBy尊渡假赌尊渡假赌尊渡假赌

Hot Tools

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

mPDF

mPDF

mPDF is a PHP library that can generate PDF files from UTF-8 encoded HTML. The original author, Ian Back, wrote mPDF to output PDF files "on the fly" from his website and handle different languages. It is slower than original scripts like HTML2FPDF and produces larger files when using Unicode fonts, but supports CSS styles etc. and has a lot of enhancements. Supports almost all languages, including RTL (Arabic and Hebrew) and CJK (Chinese, Japanese and Korean). Supports nested block-level elements (such as P, DIV),

DVWA

DVWA

Damn Vulnerable Web App (DVWA) is a PHP/MySQL web application that is very vulnerable. Its main goals are to be an aid for security professionals to test their skills and tools in a legal environment, to help web developers better understand the process of securing web applications, and to help teachers/students teach/learn in a classroom environment Web application security. The goal of DVWA is to practice some of the most common web vulnerabilities through a simple and straightforward interface, with varying degrees of difficulty. Please note that this software

Dreamweaver Mac version

Dreamweaver Mac version

Visual web development tools

SecLists

SecLists

SecLists is the ultimate security tester's companion. It is a collection of various types of lists that are frequently used during security assessments, all in one place. SecLists helps make security testing more efficient and productive by conveniently providing all the lists a security tester might need. List types include usernames, passwords, URLs, fuzzing payloads, sensitive data patterns, web shells, and more. The tester can simply pull this repository onto a new test machine and he will have access to every type of list he needs.