真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

大前端的自動化工廠(1)——Yeoman-創(chuàng)新互聯(lián)

大前端的自動化工廠(1)——Yeoman

成都創(chuàng)新互聯(lián)擁有網(wǎng)站維護技術(shù)和項目管理團隊,建立的售前、實施和售后服務(wù)體系,為客戶提供定制化的成都網(wǎng)站設(shè)計、網(wǎng)站制作、網(wǎng)站維護、多線BGP機房解決方案。為客戶網(wǎng)站安全和日常運維提供整體管家式外包優(yōu)質(zhì)服務(wù)。我們的網(wǎng)站維護服務(wù)覆蓋集團企業(yè)、上市公司、外企網(wǎng)站、商城網(wǎng)站定制開發(fā)、政府網(wǎng)站等各類型客戶群體,為全球上1000+企業(yè)提供全方位網(wǎng)站維護、服務(wù)器維護解決方案。

大前端的自動化工廠(1)——Yeoman

一.Yeoman是什么

Yeoman是現(xiàn)代化前端項目的腳手架工具,用于生成包含指定框架結(jié)構(gòu)的工程化目錄結(jié)構(gòu)。它是整個前端自動化工廠的第一站。

從個人使用者的角度來看,Yeoman的地位有些雞肋,因為流行框架自帶的cli工具都能夠自動生成官方推薦的目錄結(jié)構(gòu),而且一個項目持續(xù)少則幾個月多則幾年,而項目的初始化結(jié)構(gòu)目錄在此期間只需要生成一次。盡管工具的設(shè)計定位如此,但在組件化開發(fā)的潮流中,使用Yeoman來生成符合項目編碼規(guī)范的組件框架是非常有必要的。

為了降低項目的維護成本,將要求的組件結(jié)構(gòu)和必要的使用說明生成組件模板,使用Yeoman工具來直接生成,當(dāng)項目的體積越來越大時,你就會體會到這種方式的好處。

二.Yeoman的一般使用方法

詳情請參考【Yeoman官方網(wǎng)站】

1.使用包管理工具安裝yo

  • 使用npm:npm install -g yo

  • 使用yarn:yarn global add yo

    安裝后在命令行輸入yo --version,顯示版本號則安裝成功。

2.下載項目目錄模板generator-XXX

開源社區(qū)有非常多的項目目錄模板,在命令行輸入npm install generator-fountain-webappyarn add generator-fountain-webapp安裝項目模板。Fountain可以定制安裝各類集成的javascript框架和CSS框架。

3.用指定模板初始化項目目錄

在當(dāng)前文件夾開啟命令行,輸入yo XXX(XXX為generator模板后綴的名稱,例如yo fountain-webapp),根據(jù)交互式命令行信息填寫參數(shù),最終即可生成項目目錄。

![使用fountain-webapp模板示意圖] 大前端的自動化工廠(1)——Yeoman

4. 子模板的使用

如果模板支持子模板功能,用戶通過yo XXX:YYY即可生成項目組件,例如yo angular : controller生成一個angularjs項目中控制器的代碼骨架)。

三.構(gòu)建自己的腳手架

你的團隊很可能有自己封裝的框架,無法使用現(xiàn)有的generator,同時yo的速度不是很穩(wěn)定(據(jù)說是因為內(nèi)置的generator搜索機制和墻的原因),慶幸地是其官方團隊開源了yeoman代碼,并有詳細的文檔解釋其運行原理和機制,讓開發(fā)者可以根據(jù)團隊需求定制合適的generator生成器。

3.1 使用方法

你可以通過如下方式使用它:

  1. 通過在自己的項目中引用yeoman-generator,使用yeomanAPI編寫定制的模板文件(注意使用此種方法時,如果希望通過yo來調(diào)用生成器,則需要按指定的方式編寫package.json文件)。
  2. 下載generator-generator模板并使用yo generator在當(dāng)前目錄生成模板文件骨架,并完善其生命周期方法。

3.2 generator的生命周期

generator的本質(zhì)是一個繼承自yeoman-generator的匿名類,其代碼架構(gòu)如下:

const Generator = require('yeoman-generator');
module.exports = class extends Generator{
    initianlizing(){
        //獲取當(dāng)前項目狀態(tài),獲取基本配置參數(shù)等
    }
    prompting(){
        //向用戶展示交互式問題收集關(guān)鍵參數(shù)
    }
    configuring(){
        //保存配置相關(guān)信息且生成配置文件(名稱多為'.'開頭的配置文件,例如.editorconfig)
    }
    default(){
        //未匹配任何生命周期方法的非私有方法均在此環(huán)節(jié)*自動*執(zhí)行
    }
   writing(){
        //依據(jù)模板進行新項目結(jié)構(gòu)的寫操作
    }
    conflicts(){
        //處理沖突(內(nèi)部調(diào)用,一般不用處理)
    }
    install(){
        //使用指定的包管理工具進行依賴安裝(支持npm,bower,yarn)
    }
    end(){
        //結(jié)束動作,例如清屏,輸出結(jié)束信息,say GoodBye等等
    }
}

Yeoman-generator提供了很多封裝好的方法,文檔詳細且源碼注釋非常詳細,詳情可參見【Yeoman-generator官方API】

3.3 generator的調(diào)用

本地開發(fā)的generator-XXX未經(jīng)過發(fā)布,需要在package.json所在目錄開啟命令行,輸入npm link將其安裝到本地的全局環(huán)境,然后通過yo XXXyo XXX:YYY的方式來調(diào)用,也可以通過第四節(jié)中提及的工具鏈集成的方式繞開yo命令執(zhí)行生成器。

四. Yeoman與工具鏈集成

與前端工程化工具鏈的集成或許是Yeoman最恰當(dāng)?shù)臍w宿,為此Yeoman團隊索性開源開到底,直接公開了其核心庫yeoman-enviroment,使得generator模板可以不必通過yo工具就可以被調(diào)用,引用的方式比較簡單:

var yeoman = require('yeoman-environment');
var env = yeoman.createEnv();

//generator-XXX模塊地址查詢
var generatorPath = require.resolve('generator-XXX','XXX:app');

//如果generator未使用npm link進行連接,需要將其拷貝至工程依賴中按如下方式獲取地址
var generatorPath = path.resolve(process.cwd(),'node_modules','generator-XXX','generators','app');

//注冊generator
env.register(generatorPath, 'XXX:app');

//調(diào)用generator生成項目骨架或組件骨架
env.run('XXX:app', {'skip-install': true}, function (err) {
    console.log('done');
});

五. 實戰(zhàn):tiny-helper工具開發(fā)演示

在此演示如何制作一個小工具來生成標(biāo)準(zhǔn)化的Component,示例工具使用generator-generator生成,為方便學(xué)習(xí)使用,放置在本地node_modules目錄中,示例generator中只進行了兩項基本操作:

  1. configuring階段將.editorconfig文件直接拷貝至當(dāng)前目錄

  2. writing階段將controller.tpl.js模板中的占位符替換為用戶輸入的關(guān)鍵詞,然后生成新的controller.js文件

generator中關(guān)鍵示例代碼:

//保存配置相關(guān)信息且生成配置文件(名稱多為'.'開頭的配置文件,例如.editorconfig)
configuring(){
    //生成.editorconfig
    this.fs.copy(
      this.templatePath('.editorconfig'),
      this.destinationPath('.editorconfig')
    );
}

//依據(jù)模板進行新項目結(jié)構(gòu)的寫操作
writing(){
    //替換關(guān)鍵字生成Controller.js
    var controllerTpl = this.fs.read(this.templatePath('controller.tpl.js'));
    this.fs.write(this.destinationPath('controller/'+ this.props.keyWords + 'Controller.js'),controllerTpl.replace(/__PLACEHOLDER__TINY__/g, this.props.keyWords));
}

在命令行輸入npm run tiny運行:

![使用tiny-helper小工具]大前端的自動化工廠(1)——Yeoman

controller.tpl.js模板:

![轉(zhuǎn)換前的模板]大前端的自動化工廠(1)——Yeoman

轉(zhuǎn)換后的loginPageController.js:

![轉(zhuǎn)換后的js文件]大前端的自動化工廠(1)——Yeoman

可以看到我們已經(jīng)使用關(guān)鍵詞替換掉占位符并得到了新的controller.js框架文件。除了演示的功能外,yeoman內(nèi)置支持ejs模板引擎,我們可以利用它生成各種html模板,包括常見樣式的通用寫法,包含固定類名的組件DOM結(jié)構(gòu)等等,這對于統(tǒng)一團隊代碼風(fēng)格有著重要的意義。

筆者認(rèn)為整體而言,Yeoman作為腳手架工具的存在意義,遠不及對于提升代碼規(guī)范性的價值。

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。


名稱欄目:大前端的自動化工廠(1)——Yeoman-創(chuàng)新互聯(lián)
網(wǎng)站鏈接:http://weahome.cn/article/gggoi.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部