最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • 原理解析:如何实现自己的脚手架工具?

    正文概述 掘金(勾崽)   2021-05-21   628

    脚手架工具

    什么是脚手架工具?工程化中,最重要的就是脚手架工具了,什么是脚手架工具呢?生活中其实很常见:

    原理解析:如何实现自己的脚手架工具?

    比如写一个网站,最开始都是从零开始的,后面再写一个相同类型的网站时,就可以将之前的代码直接复制过来了。如果将可以复制的这些内容抽离出来,每次开发新东西,都能自动生成就好了。再举个例子,之前我们家包饺子,都是自己擀皮,后来发现楼下超市有买饺子皮的,饺子皮就是个半成品,脚手架工具就是做这些半成品的。

    我们的项目中,会有各种文件夹及文件,脚手架就可以一键生成:

    原理解析:如何实现自己的脚手架工具?

    脚手架的作用:创建项目基础结构、提供项目规范和约定

    前端的脚手架工具,分为两类,通用型和专用型。

    原理解析:如何实现自己的脚手架工具?

    通用型脚手架工具 Yeoman

    Yeoman 的基本概念:The web's scaffolding tool for modern webapps,即用于现代化 web 应用程序的脚手架工具。

    原理解析:如何实现自己的脚手架工具?

    Yeoman 是一款脚手架工具,可以帮助开发人员创建项目的基础结构代码。yo 是 Yeoman 的命令行管理工具,可以在命令行运行 yeoman 的命令。

    generator 生成器则是 Yeoman 中具体的脚手架。针对不同的项目,例如网站、APP、小程序等,有不同的脚手架生成器。

    原理解析:如何实现自己的脚手架工具?

    Yeoman 使用说明及使用步骤:

    • 全局安装 yo:npm install -g yo

    • 安装 generator,不同的 generator 可以生成不同的项目:

      npm install -g generator-webapp || npm install -g generator-node

    • 通过 yo 运行 generator:yo webapp || yo node

    • 启动应用:npm run start

    使用步骤:

    1:明确你的需求;

    2:找到合适的 Generator;

    3:全局范围安装找到的 Generator;

    4:通过 Yo 运行对应的 Generator;

    5:通过命令行交互填写选项;

    6:生成你所需要的项目结构;

    自定义 Generator

    基本使用

    一个 Generator 就对应了一个类型的项目,我们可以通过自定义的 Generator 实现一个自己的脚手架工具,高度定制适合自己的脚手架工具。

    创建 Generator 实际上就是创建一个 NPM 模块, Generator 基本结构:

    原理解析:如何实现自己的脚手架工具?

    如果想生成多个,只需要创建对应的目录及文件即可。

    原理解析:如何实现自己的脚手架工具?

    还有一点需要注意, Generator 的名字必须是 generator-的形式。

    创建一个文件夹,然后初始化项目 npm init -y

    安装 Generator 基类,基类提供了很多工具函数,让我们方便地完成定制化

    npm install yeoman-generator

    然后按照目录要求,创建 generator-sample\generators\app\index.js 文件。

    注意文件夹及文件名不要写错:generator-xxx\generators\xxxx\index.js

    index.js:

    原理解析:如何实现自己的脚手架工具?

    最后使用 npm link 命令,将 generator-sample 挂载为全局命令。如果出现意外,可以使用 npm config get prefix 命令查找 npm 全局目录,然后查看 generator-sample 是否存在,确认全局命令创建成功后,就可以使用 yo sample 命令在新的目录中生成文件内容。

    原理解析:如何实现自己的脚手架工具?

    生成的内容是我们手动创建的,不够灵活。

    使用模板创建文件

    创建 generators\app\templates\foo.txt 目录及文件。这是一个模板文件,内部可以使用 EJS(ejs.bootcss.com/) 模板标记输出数据。

    例如:<%= title%>

    其他的EJS语法也支持,如:

    <% if (success) { %>
    西岭老湿
    <% }%>

    写好模板文件之后,我们就可以使用模板的方式生成文件内容了。

    原理解析:如何实现自己的脚手架工具?

    相对于手动创建每一个文件,模板的方式大大提高了效率,特别是在文件较多且复杂的情况下

    命令行交互

    创建模板 \app\templates\index.html

    原理解析:如何实现自己的脚手架工具?

    创建 Vue 脚手架

    和之前一样,我们创建好一个 generator-xiling-vue 的项目目录,使用命令 npm install yeoman-generator 安装基类,在入口文件中完成命令行交互和文件写入的相关内容。

    原理解析:如何实现自己的脚手架工具?

    因为我们需要使用模板的方式写入文件内容,所以需要创建模板文件。这里就不再手动写了,直接使用已经创建好的进行修改使用。直接复制现有 Vue 的空项目代码,到 templates 中。

    原理解析:如何实现自己的脚手架工具?

    然后修改名称部分,在 generator-xiling-vue\generators\app\templates\public\index.html 文件中,如果不需要替换转义,使用两个 %% 进行屏蔽,重写时就会跳过。

    原理解析:如何实现自己的脚手架工具?

    修改好模板后,就可以写入文件内容了,回到 generator-xiling-vue\generators\app\index.js 入口文件中,将模板中的相对路径及文件名存入数组,然后使用十足遍历的方式写文件内容,代码如下:

    原理解析:如何实现自己的脚手架工具?

    最后,依然使用 npm link 挂载一个全局命令行,然后在此创建一个新的项目目录,在目录的命令行中执行 yo xiling-vue 就可以创建一个 Vue 项目。

    如果想让更多的功能加入到脚手架中,我们只需要按照这个逻辑添加内容或者模板文件就可以了,一个自定义的 Vue 脚手架就已经创建完成了。

    脚手架的工作原理

    **脚手架的工作流程:**通过命令行工具启动一个程序,在命令行交互中,获取用户输入,然后创建对应的代码文件。

    接下来我们通过更加原始的方式,创建一个极简的脚手架工具,来体会脚手架的工作原理。

    首先我们创建一个项目文件夹 mycli ,然后执行命令 npm init -y 初始化项目;

    然后执行命令 npm install ejs inquirer 安装两个插件,ejs 是模板语法插件,inquirer 是命令行交互插件。

    然后在 \mycli\package.json 文件中添加代码"bin": "cli.js",用于指定脚本的入口文件。

    原理解析:如何实现自己的脚手架工具?

    因为是脚本命令代码,因此在 cjs 入口文件中,需要添加首行文件头。

    原理解析:如何实现自己的脚手架工具?

    脚手架的工作过程:

    1. 通过命令行交互询问用户问题

    2. 根据用户回答的结果生成文件

    了解了工作流程后,先准备模板文件,然后再按照流程进行代码的实现。

    创建模板文件代码

    原理解析:如何实现自己的脚手架工具?

    脚手架逻辑实现

    原理解析:如何实现自己的脚手架工具?

    完成后,在项目目录下执行 npm link 挂载全局命令,然后就可以使用 mycli 这个命令,创建项目文件了。卸载命令行可以使用 npm unlink。


    起源地下载网 » 原理解析:如何实现自己的脚手架工具?

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元