Yeoman 官網教學案例:使用 Yeoman 構建 WebApp

來源:互聯網
上載者:User

標籤:開始   ted   頁面   into   page   使用   http服務   ora   預設   

STEP 1:設定開發環境

與 Yeoman 的所有互動都是通過命令列。Mac 系統使用 terminal.app,Linux 系統使用 shell,windows 系統可以使用 cmder/PowerShell/cmd.exe。

1.1 安裝條件

安裝yeoman之前,你需要先安裝如下內容

  • Nodejs v4 或者更高版本
  • npm
  • git

通過以下命令檢查是否安裝 Node 環境以及 npm 管理工具。

$ node -v && npm -v

npm 預設隨 Node 一起安裝。有些 Node 版本可能安裝的是舊版本的 npm,你可以通過以下命令更新 npm

$ npm install -g [email protected]

通過以下命名檢查是否安裝git

$ git --version
1.2 安裝yeoman工具箱

如果已經安裝了 node 環境,可以通過以下命令安裝 Yeoman

$ npm install -g yo
1.3 確認安裝

首先確認 Yeoman 是否正確安裝

$ yo --version
STEP 2:安裝Yeoman產生器

在傳統的 web開發中,你需要花大量時間為你的 webapp 設定模板代碼、下載依賴包以及手動建立檔案目錄結構。Yeoman 的產生器會幫你搞定這一切。讓我為 FountainJS 項目安裝一個產生器。

2.1安裝產生器

你可以通過 npm 命令安裝 Yeoman 產生器,目前可用的產生器超過了 3500 個,大多數都是開源社區貢獻的。

通過以下命令安裝 generator-fountain-webapp

$ npm install -g generator-fountain-webapp

該命令將安裝產生器所需的node包。

和使用 npm install 一樣,你可以通過 Yeoman 的互動菜單搜尋 generators。

運行 yo 然後選擇 Install a generator 來搜尋發布的產生器。

STEP 3:使用產生器搭建我們的app

我們已經使用多次“腳手架”這個詞,但是你可能還不知道它是什麼意思。在 Yeoman的 語境中,腳手架材料表示通過一些配置為你的 webapp 組建檔案。在這一步中,你會看到 Yeoman 如何為你喜歡的庫及架構組建檔案,以及使用如 webpack/babel/Sass 等一些額外的庫的配置。

3.1 建立專案檔夾

建立 mytodo 檔案夾

$ mkdir mytodo && cd mytodo

產生器產生的腳手架檔案會放在這個檔案夾中。

3.2 通過 Yeoman 菜單使用產生器

再次運行 yo

$ yo

如果你已經安裝了多個 generator,你需要從中選擇一個。選中 Fountain Webapp,按斷行符號 enter 運行產生器。

3.3 配置產生器

 為了加快開發環境的初始化設定,有些產生器也會提供選項來自訂你的app的基礎開發庫。

FountainJS 產生器提供一些選項來匹配你的喜好。

  • 架構(React,Angular2,Angular1)
  • 模組管理工具(Webpack,SystemJS,none with bower)
  • JavaScript前置處理器(babel,TypeScript,none)
  • css 前置處理器(Sass,Less,none)
  • 三個模板app(a landing page,hello world,TodoMVC)

在該案例中,我們會使用 ReactWebpackBabelSASSRedux TodoMVC 模板。

方向鍵選擇,斷行符號鍵確認。

Yeoman 會自動搭建你的 app,擷取依賴包。幾分鐘之後我們將進行下一步。

STEP 4:查看Yeoman生產的app的目錄結構

開啟你的 mytodo

目錄,看一下腳手架搭建了什麼。應該如所示:

在 mytodo 檔案夾中,我們有:

src: web應用的父目錄

  • app:React+Redux的代碼
  • index.html:基礎html檔案
  • index.js:TodoMVC app 的入口檔案

conf:設定檔及第三方工具的父目錄(Bowersync,Webpack,Gulp,karma)

gulp_tasks 和  gulpfile.js:構建任務

.babelrcpackage.jsonnode_modules:配置以及所需依賴包

.gitattributes  和 .gitignore:git的配置

STEP 5:在瀏覽器中預覽你的app

如果想要在你喜歡的瀏覽器上預覽你的 web app,你無須在電腦上做任何事情來設定本機伺服器。這些都是 Yeoman 所做的一部分。

5.1 開啟伺服器

運行 npm 指令碼,建立在 localhost:3000 (或者127.0.0.1:3000) 上預覽的基於 node 的本地 http 伺服器。

$ npm run serve

在瀏覽器的新頁面開啟localhost:3000

5.2 停止伺服器

如果你想停止伺服器,按 Ctrl + C 停止當前CLI的進程

注意:你不能在同一連接埠運行多個http伺服器(預設3000)

5.3 查看你的檔案

開啟你喜歡的文字編輯器開始做點改變。每一次改變都會強制瀏覽器重新整理而不需要你親自操作。這種方式叫做即時載入(live reloading),可以即時查看app狀態。

即時載入的功能是通過配置 gulpfile.js 中的 gulp tasks 以及 gulp_tasks/browsersync.js 中的 Browsersync 實現的。它會監測你的檔案的變化然後自動載入。

如下,我們編輯 src/app/components 路徑下的 Header.js

修改立即生效

STEP 6:使用karma和jasmine測試

 有些人可能不熟悉Karma,它是不依賴於架構的測試回合器。Fountainjs 產生器中已經包含 jasmine 測試架構。。。。

6.1 運行測試單元

讓我們返回命令列按 Ctrl+C 停止本機伺服器。package.json 中已經有了運行測試單元的 npm 指令碼。可以如下運行

$ npm test

每一個測試都應該通過.

6.2 升級單元測試

你可以在 src 檔案夾中找到單元測試指令碼,開啟 src/app/reducers/todos.spec.js 。這是為 Todos reducers 編寫的單元測試。舉個例子,我們看一下驗證初始狀態的第一個測試。

it(‘should handle initial state‘, () => {  expect(    todos(undefined, {})  ).toEqual([    {      text: ‘Use Redux‘,      completed: false,      id: 0    }  ]);});

按如下修改

it(‘should handle initial state‘, () => {  expect(    todos(undefined, {})  ).toEqual([    {      text: ‘Use Yeoman‘, // <=== here      completed: false,      id: 0    }  ]);});

重新運行 npm test,可以看到如下錯誤

if you want run test automatically on change you can use npm run test:auto instead

開啟 src/app/reducers/todos.js

把初始狀態改成

const initialState = [  {    text: ‘Use Yeoman‘,    completed: false,    id: 0  }];

你成功修複了測試

如果你的 app 越來越大或者更多的開發人員參與進來,編寫單元測試可以更容易的發現 bug。

STEP 7:使用 Local Storage 永久儲存 todos

讓我們重新看一下當重新整理瀏覽器時 React/Redux mytodo 不能儲存的問題。

7.1 安裝 npm 包

為了輕鬆解決這個問題,我們可以使用另一個Redux模組“redux-localstorage”,它可以快速執行local storage。

運行以下命令

$ npm install --save [email protected]

7.2 使用redux-localstorage

Redux 需要配置才能使用,將 src/app/store/configureStore.js 修改如下

import {compose, createStore} from ‘redux‘;import rootReducer from ‘../reducers‘;import persistState, {mergePersistedState} from ‘redux-localstorage‘;import adapter from ‘redux-localstorage/lib/adapters/localStorage‘;export default function configureStore(initialState) {  const reducer = compose(    mergePersistedState()  )(rootReducer, initialState);  const storage = adapter(window.localStorage);  const createPersistentStore = compose(    persistState(storage, ‘state‘)  )(createStore);  const store = createPersistentStore(reducer);  if (module.hot) {    // Enable Webpack hot module replacement for reducers    module.hot.accept(‘../reducers‘, () => {      const nextReducer = require(‘../reducers‘).default;      store.replaceReducer(nextReducer);    });  }  return store;}

如果你瀏覽器中查看應用程式,你會在待辦事項清單看到一項“Use Yeoman”。

應用程式初始化時,如果本機存放區是空的,則列表中不會有事項。

繼續前進,並添加一些項目到列表中:

現在當我們重新整理瀏覽器清單項目依然存在。萬歲!

我們可以確認一下資料是否儲存在本機存放區中,開啟chrome瀏覽器的檢查工具,產看 Resources 面板,從左側邊欄選擇 Local Storage

STEP 8:為生產做準備

準備好把你 todo 應用程式展示給世界了嗎?讓我們嘗試建立一個準備生產的版本。

8.1 最佳化產品檔案

為了建立應用程式的生產版本,我們需要

  • lint 代碼
  • 合并和縮小我們的指令碼及樣式來拯救那些網路請求,
  • 編譯前置處理器的輸出結果,
  • 使應用程式更精鍊

哇!令人驚訝的是,所有運行都可以通過:

$ npm run build

你的準備就緒的應用程式在 mytodo 項目的 dist 目錄下,你可以使用FTP發布到伺服器。

8.2 建立及預覽生產的應用程式

如果想在本地預覽 app,可以運行下面的 npm 指令碼

$ npm run serve:dist

它會建立你的項目並且啟動本機伺服器。

Yeoman 官網教學案例:使用 Yeoman 構建 WebApp

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.