遵循必定標準和規範,經過工具去提升效率,下降成本的一種手段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' //模板文件 } ] }) }
總結