遵循必定标准和规范,经过工具去提升效率,下降成本的一种手段css
工程化是一种规划架构,工具是实现规划架构得手段,是工程化的集成html
Powered by Node.js 工程化经过Node驱动前端
为何要使用工程化vue
一些成熟的工程化集成node
本质做用:建立项目基础结构,提供项目规范和约定react
约定体如今git
有些IDE建立项目的过程能够看做是工程化,例如Android Studiogithub
经常使用脚手架web
create-react-app , vue-cli , angular-cli
根据信息建立对应项目基础结构 适用于自身服务的框架Yeoman
通用型项目脚手架工具Plop
项目中建立特定类型文件建立现代化web应用的脚手架工具vue-cli
全局范围安装yo
yarn global add yo
, npm i yo -g
安装对应的generator 例如:
yarn global add generator-node
, npm i generator-node -g
经过yo运行generator
yo node * 填写脚手架内容
在已有的项目基础上建立特定类型文件
如项目上添加README,ESlint,Bable
配置文件,用生成器自动生成
例如:在generator-node
建立的项目里添加node子集生成器cli,并非都有子集生成器,根据官网查看
yo node:cli 建立cli应用所须要的文件 my-module --help
例如:建立一个网页应用webapp
* yarn global add generator-webapp * yo webapp (相似于 yo node 安装generator-node)
基于Yeoman搭建本身的脚手架,本质上Generator就是一个NPM模块
自定义的Generator知足结构
自定义的名称必须是 generator-name
经过命令行交互方式去询问使用者,从而获得使用者想要的项目脚手架
const Generator = require('yeoman-generator') module.exports = class extends Generator{ prompting(){ //Yeoman 在询问用户环节会自动调用此方法 //在此方法中能够调用父类的 prompt() 方法发出对用户的命令行询问 return this.prompt([ //数组的每项都是问题对象 { type:'input', //输入方式接收用户提交信息 name:'title', //键 message:'Your project name', //界面给用户提示问题 default: this.appname //父类中自动帮咱们拿到的当前项目生成目录文件夹的名字(默认值) } ]) .then(answers=>{ //answers =>{name:'user input value;'} 就是上面的name:title this.answers = answers }) } writing(){ const tmpl = this.templatePath('bar.html') const output = this.destinationPath('bar.html') const context = this.answers //{title:'Hello mc',success:false}修改成this.answers接收用户输入内容为模板上下文 this.fs.copyTpl(tmpl,output,context) } }
实际上就是发布一个npm模块
yarn publish
,输入npm帐号密码,输入错误yarn logout
能够从新填写yarn publish --registry=https://registry.yarnpkg.com
https://www.npmjs.com/package/xxx
建立项目中特定类型文件的脚手架工具,相似于Yeoman中的Sub Generator
提升建立重复文件的效率
yarn add plop --dev
plopfile.js
入口文件plopfile.js介绍
module.exports = prop =>{ plop.setGenerator('component',{ //参数1:生成器名字,参数2生成器配置选项对象 description:'create a component', prompts:[ //问询交互 { type:'input', name:'name', //键 messsage:'component name', //问题 default:'MyComponent' //默认答案 } ], actions:[ //生成器动做,也就是要生成的文件配置 { type:'add', //添加一个文件 path:'src/components/{{name}}/{{name}}.js', //添加路径 templateFile:'src/plop-templates/component.hbs' //模板文件 } ] }) }
总结