前端工程化 构造简单的微信小程序开发脚手架工具

前端技术栈---看完这篇就够了 html5、css3、JavaScript、nodejs、TypeScript、前端构建(webpack、gulp、grunt)、chrome DevTools、前端适配、单元测试、自动化测试、http协议、前端通信、工程化(模块化、组件化、规范化、自动化)、浏览器(渲染机制、v8原理)、前端性能优化、前端安全、多端应用(微信公众号、小程序、ReactNative、Flutter、Electron) Js高级: 1.数据类型和内存空间 2.执行上下文 3.变量对象 4.作用域和作用域链 5.闭包 6.thi 阅读详情

这篇博客要说的脚手架工具我以前发布到npm上了,是generator-wxfile的1.1.1版本,后面可能还会继续有版本更新,所以要测试功能的话要下载对应的版本
对最新的版本有什么意见的话欢迎在评论中提出(σ′▽‵)′▽‵)σ

基本功能

在我的另一篇文章前端工程化 发布一个自动生成微信开发文件的npm包中,我使用yeoman实现了重复文件的生成,而在这里我使用plop来实现这个功能,使用yeoman来将一开始的文件拉到本地,要完成的有以下几个功能

  1. 询问用户构建的项目名,默认为文件夹名,写入project.config.json文件中
  2. 询问用户构建时使用的APPID,这里的APPID只是写入project.config.json文件
  3. 询问用户构建项目时默认的页面的文件名,构建相应的文件夹和文件,在app.json中写入相应的路由
  4. 询问用户是否启用plop来快速构建重复文件,是的话就将plopfile.js和模板文件加入到项目中
  5. 通过plop工具将重复文件写入pages文件夹中,在app.json中写入相应的路由

文件目录

基本的文件目录和前端工程化 发布一个自动生成微信开发文件的npm包文章中的文件目录一样,只是模板文件有些不同,修改了index.js文件的内容,这里plop-temp和tempPage里面的文件一样,除了替换文本的语法不同,tempPage文件中的替换文本是使用yeoman写入的,所以是使用ejs语法,采用<%= prop%>的语法,而在plop-temp文件夹中的文件是在采用plop工具的时候使用的模板工具,使用{{prop}}的语法来代替
在这里插入图片描述
这里templates的文件基本上是我使用微信开发者工具简单初始化后拿过来做为初始化文件模板的,也可以直接去我的github上把文件拉下来看看

yeoman实现初始化过程


询问用户

上面说到了,我要实现向用户询问的功能,这里可以使用inquire这个npm包,但是因为yeoman里面已经有这个功能了,所以我就直接使用yeoman-generator的prompt方法了

首先要引入yeoman-generator包,导出一个类,在prompting方法中调用this.prompt方法,代码如下

const Generator = require("yeoman-generator")

module.exports = class extends Generator{
    prompting(){
        return this.prompt([{ // 询问用户要创建的项目名称
            type:"input",
            name:"projectName",
            message:"your project name is",
            default:this.appname // 项目所在文件夹的名称
        },{ // 询问用户的appID是多少
            type:"input",
            name:"appID",
            message:"your appID is"
        },{ // 询问用户初始化的第一个页面名称是什么
            type:"input",
            name:"pageName",
            message:"the initialized page name is",
            default:"index" // 默认创建index页面
        },{ // 询问用户是否使用plop工具
            type:"confirm",
            name:"isPlop",
            message:"do you use plop",
            default:true // 默认使用
        }]).then(answer=>{
            this.answer = answer // 将回答放到answer属性中
        })
    }
}

根据用户的输入写入文件

上面我们获取用户的输入到this.answer中,在writing中我们通过这些答案来修改对应写入的页面的名字,上面获取的pageName就是我们初始化时构建的page中文件夹的名字,以及该文件夹下js、json、wxss、wxml文件的名字,而且要根据上面获取的isPlop来判断是否将plop-temp文件夹的内容和plopfile.js文件加入到项目中,因为涉及到文件夹的创建,所以这里引入了fs模块,代码如下

const Generator = require("yeoman-generator")
const fs = require("fs")

module.exports = class extends Generator{
    prompting(){
        // ...
    }
    writing(){
        const answer = this.answer
        const pageName = answer.pageName
        // 处理页面模板文件
        let tempPageFiles = ["tempPage.js","tempPage.json","tempPage.wxml","tempPage.wxss"]
            .map(path=>"tempPage/"+path)
        // 其他文件列表
        let tempOtherFiles = ["app.js","app.json","app.wxss","project.config.json","sitemap.json","package.json"]
        // 合并所有模板文件
        let tempFiles = [...tempPageFiles,...tempOtherFiles]
        // 处理页面输出文件
        let outputPageFile = [`${pageName}.js`,`${pageName}.json`,`${pageName}.wxml`,`${pageName}.wxss`]
            .map(path=>`pages/${pageName}/${path}`)
        // 合并所有输出文件
        let outputFiles = [...outputPageFile,...tempOtherFiles]
        if(answer.isPlop){ // 如果使用plop工具,则将相应的文件写入
            tempFiles=[...tempFiles,...["plop-temp","plopfile.js"]]
            outputFiles=[...outputFiles,...["plop-temp","plopfile.js"]]
        }
        // 创建文件夹,在文件夹创建完成后调用回调函数执行文件写入
        fs.mkdir(`pages/${pageName}`,'1',()=>{
            // 文件写入
            for(let i=0;i<tempFiles.length;i++){
                this.fs.copyTpl(this.templatePath(tempFiles[i]),this.destinationPath(outputFiles[i]),answer) 
            }
        }) 
    }
}

需要替换文本的文件

在这里插入图片描述
要注意这里的tempPage.js是tempPage文件夹中的,在temp-plop文件夹中的要使用另一种替换语法
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

plop实现重复文件的写入


plopfile.js的编写

这里的plop工具要实现询问用户要新增的页面的名字,根据这个名字创建文件,将路由写入package.json文件中,因为plop工具本身不具备读写文件的功能,我这里又引入了fs模块,使用plop.setActionType来实现一个新的type,在setGenerator的actions中使用这个type的action
完整代码如下

const fs = require('fs')

module.exports = plop=>{
    plop.setActionType('changeRouter',(answers,config,plop)=>{
        fs.readFile('app.json',{},(err,data)=>{ // 读取app.json文件
            let d= JSON.parse(data.toString())
            d.pages.push(`pages/${answers.pageName}/${answers.pageName}`) // 将当前新添加的内容写入app.json
            d = JSON.stringify(d,"","\t")
            fs.writeFile('app.json',d,err=>{
                if(err)
                    throw err
            })
        })
    })
    plop.setGenerator('wxfile',{ // 这里的wxfile是一个自己设定的名字,在执行命令行的时候会用到
        description:'create the repeat wxfile', // 这里是对这个plop的功能描述
        prompts:[{
            type:'input', // 问题的类型
            name:'pageName', // 问题对应得到答案的变量名,可以在actions中使用该变量
            message:'your pageName is', // 在命令行中的问题
            default:'page' // 问题的默认答案
        }],
        actions:[{
            type:'add', // 操作类型,这里是添加文件
            path:'pages/{{pageName}}/{{pageName}}.json', // 添加的文件的路径
            templateFile:'plop-temp/tempPage.json' // 模板文件的路径
        },{
            type:'add', 
            path:'pages/{{pageName}}/{{pageName}}.js', 
            templateFile:'plop-temp/tempPage.js' 
        },{
            type:'add', 
            path:'pages/{{pageName}}/{{pageName}}.wxss', 
            templateFile:'plop-temp/tempPage.wxss' 
        },{
            type:'add', 
            path:'pages/{{pageName}}/{{pageName}}.wxml', 
            templateFile:'plop-temp/tempPage.wxml' 
        },{ // 修改app.json里面的路由
            type:'changeRouter'
        }]
    })
}

需要替換文本的文件

在这里插入图片描述

使用方法

如果本地没有yo的话,就全局安装yo

npm i yo

接下来就执行

yo wxfile

根据问题就可以生成相应文件了
如果选择使用plop工具,本地没有plop的话,直接

npm i

就可以将plop做为开发依赖放到项目中,执行

plop wxfile

就可以使用相应功能了

Spring Boot+Vue全栈实战:校园社团管理系统从零开发指南 前后端分离架构是现代Web开发的主流范式,其核心思想是将用户界面与业务逻辑解耦,通过RESTful API进行数据交互。这种架构模式提升了开发效率、便于团队协作,并能实现前后端的独立部署与扩展。在Java技术栈中,Spring Boot凭借其自动配置和快速启动的特性,成为构建稳健后端服务的首选框架;而Vue.js则以其渐进式和组件化的优势,成为构建动态前端应用的热门选择。结合MySQL数据库,可以构建出功能完整、数据一致的应用系统。本文以校园社团信息管理系统这一经典应用场景为例,手把手演示如何整合Sprin 阅读详情

相关推荐

微信小程序脚手架

微信小程序脚手架

一款小而美的小程序脚手架,让你更流畅的开发小程序

今天向大家推荐一款自己开发的小程序开发脚手架,已经使用了近一年,相对比较稳定,后续也会持续更新,欢迎使用,欢迎 star. 相较于目前市场上的各种跨端解决方案,这个开发流程更加纯粹,没有引入任何新的开发难度,完全在原生小程序的基础上进行开发效率的提升 ~ pandora-boierpalte-wechat 是一款小而美的微信小程序开发脚手架,我们没有引入任何新的复杂度,百分百使用小程序的能力,但是...

weixin_34318272的博客 1361

CNN卷积神经网络手写数字识别实例及代码详解

本文的代码来自githup的Deep Learning的toolbox,是用Matlab实现的。感谢该toolbox的作者付出和分享。 我在应该该代码进行训练时,出现一些报错,如expand函数应用不对,flipall函数未定义等问题,对这些问题进行了修正,完成网络训练和验证。 本文mnist_uint8.mat的获取可以参照我的另一篇博客:MNIST数据库处理--matlab生成mnist_

VivienFu的专栏 6万+

VUE(uni-app框架)开发微信小程序①-搭建脚手架

记录美好

qq_39075676的博客 2935

Unity Addressable资源缓存路径自定义指南:告别C盘爆满烦恼

本文详细介绍了如何自定义Unity Addressable系统的资源缓存路径,解决其默认存储在C盘导致的磁盘空间不足问题。通过配置CacheInitializationSettings并编写编辑器脚本,开发者可以将缓存迁移至项目目录,实现资源的集中管理,提升团队协作效率与开发环境一致性。

pytorch8learner的博客 474

Langchain4j 文档处理实战:从加载到分割的完整流程解析

本文详细解析了使用Langchain4j进行文档处理的完整流程,涵盖从文档加载、解析到分割的核心步骤。通过实战代码示例,重点介绍了如何利用文档分割器将大文档切割为适合大语言模型处理的片段,并提供了参数调优与避坑指南,帮助Java开发者高效构建AI应用的数据处理基础。

smartcontract5的博客 540

基于npm CLI脚手架的uniapp项目创建、运行与打包全攻略(微信小程序、H5、APP全覆盖)

如果你使用的是 webpack v5 或以上版本,你不需要安装这个插件。uni cli在App平台,仅支持生成离线打包的wgt资源包,不支持云端打包生成apk/ipa;此时,会提示选择项目模板(使用Vue3/Vite版不会提示,目前只支持创建默认模板),初次体验建议选择 hello uni-app 项目模板。在 HBuilderX 中,点击“运行”编译出来的代码是开发环境,点击“发行”编译出来的代码是生产环境。提供有完整的cli 脚手架,可以通过 vue-cli 创建、运行、发行 uni-app 项目。

在这里,我乐于倾囊相授,分享我的技术心得、项目实战经验、技术技巧。希望能够惠及更多的开发者,助力大家在技术的海洋中扬帆远航。 8601

从“氛围编程“到“智能体工程“:AI编程范式的认知跃迁与工程实践

摘要: 2026年,ClaudeCode负责人鲍里斯·切尔尼提出用“智能体工程”(Agent Engineering)替代流行的“氛围编程”(Vibe Coding),认为后者过于主观,无法体现AI编程的系统化与工程化本质。智能体工程强调记忆系统、工具编排、任务分解、可观测性等核心技术,将AI编程从“玄学辅助”升级为可度量、可规模化的工程学科。本文通过对比术语差异、构建知识体系,并结合代码实例(如带记忆系统的代码生成Agent和可观测性系统),展示了智能体工程的实际应用。行业案例(如ClaudeCode的并

yyq916的博客 1060

微信小程序入门04-后端脚手架搭建

npm是Node.js的包管理器,它允许开发人员在项目中安装、管理、更新和分享代码包。通过npm,开发人员可以轻松地将他们的代码分享给其他人,也可以使用他人共享的代码包来加速项目开发。npm还提供了一些有用的功能,如版本管理、依赖解析、命令行工具等,使得开发人员可以更加高效地管理和维护自己的项目。我们本篇主要讲解的是后端脚手架的搭建,所谓的脚手架就是帮助我们快速的进行开发,现在也都是组件化开发,开源框架已经提供了丰富多彩的组件,只需要我们把组件按照业务串联在一起就可以了。

低代码布道师的博客 2046

电商客服效率翻倍!手把手教你用影刀RPA+AI搭建智能回复系统(附实战配置)

本文详细介绍了如何利用影刀RPA+AI技术搭建电商智能客服系统,实现24小时在线回复,大幅提升客服效率。通过零代码配置、Excel词库管理和AI语义理解,系统能处理80%常规咨询,响应速度稳定在3秒内,特别适合中小电商降低成本并提升服务质量。

weixin_42520661的博客 547

WSL2部署Cadence Virtuoso IC25.1:Ubuntu 26.04排障实录

WSL2以轻量虚拟机结合完整Linux内核,为Windows桌面环境提供了原生级Linux运行能力,解决了传统虚拟机资源开销大、双系统切换低效的问题。对于依赖X11图形协议、FlexNet许可服务和特定动态库的EDA工具链而言,利用WSL2部署Linux发行版需要关注系统集成、显示通路与许可连通性。从技术原理看,图形层X Server的配置、动态库依赖的补齐以及license服务的主机名解析,共同构成EDA工具在WSL2中稳定运行的关键环节。在芯片设计场景中,设计工程师常需在Windows办公机与Linux

weixin_29597551的博客 208

【转】2022年web前端开发学习路线图

web前端学习路线图火热出炉啦,还在为如何系统学习web前端开发技术苦苦寻觅资源么?2022年黑马程序员新版前端学习路线图这不就来了么!小伙计们甩开膀子学起来吧。只要能坚持学下来走上人生巅峰不再是梦。PS:别忘了收藏呦,此套路线图不定期更新呦! 前端学习路线图概览(2022版,视频已更新) 新手入门:HTML5+CSS3+实战项目 --> 移动webJavaScript阶段:JavaScript基础-->JavaScript核心Web APIs-->数据交互 & 异步编程Ajax\GitVUE开发:框架前置

zy1992As的博客 1085

2025-08-19利用opencv检测图片中文字及图片的坐标

该代码实现了图片中中文文本的检测与位置计算功能。主要使用CnOcr库进行OCR识别,结合OpenCV和PIL库处理图像。功能包括:1)检测图片中的中文文本及位置坐标;2)计算每个文本的像素宽度和高度;3)在原图上绘制文本边界框并标注识别结果。代码通过put_chinese_text函数解决中文显示问题,最终输出各文本内容、坐标位置及尺寸信息。适用于需要获取图片中文字精确位置的应用场景。

m0_58149406的博客 394

web前端自学之路:史上最全web学习路线

web前端自学之路:史上最全web学习路线,HTML5是万维网的核心语言,标准通用标记语言下的一个应用超文本标记语言(HTML)的第五次重大修改,一方面提升了用户体验,另一方面HTML5技术跨平台,适配多终端,改变了传统开发者需针对不同操作系统进行研发的局面。web前端全栈HTML5融合大数据可视化内容、深化PHP+MySQL,学员求职可任项目leader! web前端初级开发工程师 HT...

程序员日常 1973

knowhere | 第一课:项目导论与环境搭建

摘要 本课程是Knowhere项目的第一课,重点介绍项目整体架构和开发环境搭建。Knowhere定位为AI Agent的文档记忆基础设施,通过解析多格式文档并保留结构化信息(如章节层级、表格语义等),为Agent提供可导航的文档知识。项目采用Python monorepo结构,核心包括: apps/api:FastAPI服务,处理HTTP请求和流程调用 apps/worker:Celery服务,执行文档解析等耗时任务 packages/shared-python:共享基础设施层 课程明确了各层职责边界,并推

weixin_43674738的博客 151

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

vscode vue3 typescript开发环境搭建

今天搞一下vue3环境,用这玩意看看好使不。vue2早期的语法看起来真实够呛,嵌套比较深。以前看过一个妹子写的react代码,发现里面很多js在控制样式和html,三个东西揉在一块也是厉害了。不知道是不是react本身的风格。vue3本身风格要接近原生js了,提倡组合式API,但是还是有些距离。从语法使用上来说还是早期原生js风格统一,没有各种套路,都是拿来就用,纯组合。这组件方开发感觉看起来不直白,一个页面里面很多自定义组件,不看源码不知道时啥玩意。比如<MyComp/>这时啥玩意?

yanghuashuiyue的专栏 1420

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

HTML5前端学习路线

一.HTML5初级开发工程师1.HTML5介绍互联网发展趋势H5语言的优势简单易学人人都能编程H5就业和薪资情况H5常见的项目与产品H5的未来与方向2.HTML基础HTML简介与历史版本常用开发软件常见标签与属性表格与表单标签规范与标签语义化实战:网页结构布局3.CSS基础css简介与基本语法常见的各种样式属性CSS选择器与标签类型理解盒子模型与CSS重置浮动与定位利用photoshop工具测量样...

liuyingv8的博客 555

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

【万字文档+源码】基于小程序的任务打卡系统-可用于毕设-课程设计-练手学习-学习资料分享

本文介绍了一个基于SpringBoot+Vue的微信小程序任务打卡系统开发方案。项目采用前后端分离架构,后端使用SpringBoot+MyBatis-Plus搭建RESTful API服务,前端采用Vue语法结合uni-app框架开发小程序界面。系统实现了用户授权登录、任务管理、打卡记录等核心功能,具有组件化、高复用、易维护等特点。文章详细阐述了项目背景、技术栈选型、系统架构设计以及开发环境搭建流程,为轻量化小程序开发提供了标准化解决方案,适用于校园、企业等日常任务管理场景。

专业的计算机毕业设计指南 394

SpringBoot+Vue+MySQL实战:台球厅管理系统开发与并发预约处理

在Java Web开发领域,SpringBoot作为构建RESTful API的主流框架,以其简化配置和快速开发的特性,成为后端服务的首选。其核心原理基于Spring生态,通过自动配置和起步依赖,大幅提升了开发效率。结合Vue.js这一渐进式前端框架,能够高效构建数据驱动的单页面应用,实现前后端分离的现代化架构。MySQL作为成熟的关系型数据库,为系统提供了稳定的事务支持和数据存储能力。这种技术组合在管理系统、电商平台等B端应用场景中价值显著,尤其擅长处理如会员管理、资源预约等典型业务模型。本文以台球厅管理

weixin_34212762的博客 338

基于Spring Boot与UniApp的智能对话SaaS平台全栈架构与实战

在当今企业级应用开发领域,前后端分离与跨平台部署已成为主流架构范式。其核心原理在于通过RESTful API实现前后端解耦,后端专注于业务逻辑与数据安全,前端则负责用户体验与交互。这种架构的技术价值在于提升了开发效率、增强了系统可维护性,并支持团队并行开发。在应用场景上,尤其适用于需要快速迭代、多终端覆盖的互联网产品,例如内容平台、电商系统和工具型应用。本文聚焦于如何将这一成熟架构与前沿的AI能力相结合,构建一个具备商业化潜力的智能对话SaaS平台。项目深度整合了Spring Boot后端与UniApp跨端

weixin_33696822的博客 456

HTML5学习路线

怎么学HTML5HTML5是万维网的核心语言,标准通用标记语言下的一个应用超文本标记语言(HTML)的第五次重大修改,一方面提升了用户体验,另一方面HTML5技术跨平台,适配多终端,改变了传统开发者需针对不同操作系统进行研发的局面。千锋全栈HTML5融合大数据可视化内容、深化PHP+MySQL,学员求职可任项目leader!一.HTML5初级开发工程师1.HTML5介绍互联网发展趋势H5语言的优势...

码农王也的博客 792

SpringBoot酒店客房管理系统实战:从零搭建完整Java Web项目

在Java Web开发领域,SpringBoot作为主流框架,以其简化配置和快速开发的特性,极大地提升了后端应用的构建效率。其核心原理在于通过约定大于配置和自动装配机制,整合了Spring生态,降低了开发复杂度。这种技术价值在于能让开发者更专注于业务逻辑的实现,而非繁琐的环境搭建。在典型的应用场景中,如酒店客房管理系统,SpringBoot常与MyBatis-Plus、Thymeleaf等技术栈协同,构建功能完整的管理后台。本文聚焦于一个基于SpringBoot的实战项目,深入解析如何将客房预订、入住退房等

weixin_30240349的博客 355

SpringBoot+Vue全栈开发实战:从零构建红色旅游管理系统

在当今企业级Web应用开发领域,前后端分离架构已成为主流范式。其核心原理在于将前端展示逻辑与后端业务逻辑解耦,通过RESTful API进行数据交互,从而提升开发效率和系统可维护性。这种架构的技术价值在于支持团队并行开发、技术栈灵活选型以及更好的用户体验。典型的应用场景包括各类内容管理系统、电商平台以及在线服务平台。本文聚焦于一个具体的工程实践案例——红色主题旅游系统,深入探讨如何使用SpringBoot和Vue技术栈实现用户认证、数据管理、前后端联调等核心功能。文中将详细解析JWT认证、Axios拦截器、

z466459262的专栏 511

Ubuntu 18.04 上 Django+React 客户管理系统实战部署

前后端分离是现代 Web 应用的基础架构模式,其核心在于通过标准化 API 协议(如 RESTful)解耦数据逻辑与交互逻辑。Django 作为成熟稳健的 Python Web 框架,天然适合构建安全、可维护的后端服务;React 则凭借组件化与声明式渲染,成为构建响应式管理界面的工业级选择。二者结合不仅降低协同成本,更显著提升迭代效率与跨终端适配能力。在中小型企业客户信息管理等中后台场景中,该技术组合能兼顾开发速度、运行性能与长期可维护性。本文聚焦于 Ubuntu 18.04 这一稳定 LTS 环境下的完

weixin_34277853的博客 902

基于SpringBoot的学生公寓管理系统:从需求到部署的实战解析

在现代软件开发中,构建一个稳定、高效且易于维护的后台管理系统是许多开发者的核心任务。其技术原理通常围绕分层架构、模块化设计和数据持久化展开,旨在通过技术手段提升业务流程的自动化与数据处理的准确性。这类系统的技术价值在于将复杂、易出错的人工操作转化为标准化的数字流程,从而显著提升运营效率并降低管理成本。其应用场景广泛,尤其在需要处理大量结构化数据和复杂业务流程的领域,如校园、企业或社区的后勤管理。本文以学生公寓管理为具体案例,深入探讨了如何运用SpringBoot框架及其生态,结合MyBatis-Plus、R

weixin_34221773的博客 397
上一篇: 小型前端脚手架工具plop的简单使用
下一篇: 使用chalk时颜色不变的问题解决
前端小黑
博客等级 码龄9年 148粉丝 222原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值