[AngularJS]運用Yeoman構建開闢AngularJS項目

一. 裝置

第一步:裝置npm所需模塊

起首須要裝置Node.js,然後運用npm裝置所須要的模塊

npm install -g grunt-cli bower yo generator-karma generator-angular

第二步:建立工程

建立一個新的目次,並在目次下面運轉

yo angular angular-project

angular-project是工程名字
然後會湧現如下圖:
《[AngularJS]運用Yeoman構建開闢AngularJS項目》

根據須要挑選運用Grunt照樣Gulp,和是不是須要Sass和Bootstrap。這裏挑選了運用Grunt和Bootstrap。
Grunt和Gulp都是項目構建東西,差別的是Grunt是基於設置的,而Gulp是基於代碼的。
然後就是裝置歷程,天生全部項目的框架,異常輕易。

第三步:運轉

運轉工程,Yeoman已運用Grunt設置好了全部項目,只須要在控制台輸入

grunt serve

瀏覽器就會自動翻開窗口,http://localhost:9000,然後就能夠看到網頁了。
《[AngularJS]運用Yeoman構建開闢AngularJS項目》

二. 工程目次

《[AngularJS]運用Yeoman構建開闢AngularJS項目》

重要開闢就在app目次下面,bower_components是裝置的依靠包,相似Node.js的node_modules,差別的是Node.js運用npm裝置,bower_components運用bower裝置。平常前端項目裝置依靠運用bower。運用npm裝置依靠包時,一個依靠能夠有多個版本,而運用bower裝置時,同一個依靠不能有多個版本。運用bower裝置的依靠包能夠在bower.json中看到。
Gruntfile.js是編譯工程的文件,這裡有許多設置,包含server的設置等,所以這裏沒有別的搭建後端server。
package.json是後端的依靠包,重要有Grunt的依靠包。

然後重要的開闢就在app文件夾下,這裏順次申明。
app/images:存儲網頁須要的圖片。
app/scripts:前端劇本。包含controllers,services,以及順序主進口app.js文件。
app/styles:CSS款式文件。
app/views:靜態頁面文件。
app/404.html:頁面找不到時跳轉的頁面。
app/favicon.ico:頁面題目前的圖標。
app/index.html:在這裏導入CSS款式文件和一切劇本文件。

三. 建立一個頁面並設置路由

運用Yeoman能夠很快的建立頁面對應的controller和路由。

1.裝置angular-ui-router

angular-ui-router是AngularJS的第三方路由模塊,比自帶的angular-route路由模塊好用,能夠更好的完成頁面跳轉,嵌套路由。
裝置要領:

bower install angular-ui-router --save

2.設置app/scripts/app.js文件

本來是如許的

angular
  .module('angularProjectApp', [
    'ngAnimate',
    'ngCookies',
    'ngResource',
    'ngRoute',
    'ngSanitize',
    'ngTouch'
  ])
  .config(function ($routeProvider) {
    $routeProvider
      .when('/', {
        templateUrl: 'views/main.html',
        controller: 'MainCtrl',
        controllerAs: 'main'
      })
      .when('/about', {
        templateUrl: 'views/about.html',
        controller: 'AboutCtrl',
        controllerAs: 'about'
      })
      .otherwise({
        redirectTo: '/'
      });
  });

將”ngRoute”改成”ui.router”,設置路由的花樣也修正成

angular
  .module('angularProjectApp', [
    'ngAnimate',
    'ngCookies',
    'ngResource',
    'ui.router',
    'ngSanitize',
    'ngTouch'
  ])
.config(['$stateProvider', '$urlRouterProvider', function ($stateProvider, $urlRouterProvider) {
    $urlRouterProvider.otherwise('/');

    $stateProvider
      .state('main', {
        url: '/',
        templateUrl: '/views/main.html',
        controller: 'MainCtrl'
      })
      .state('about', {
        url: '/about',
        templateUrl: '/views/about.html',
        controller: 'AboutCtrl'
      }};
  }]);

3.建立一個新的頁面

yo angular:route Page

能夠看到app/scripts/controllers文件夾下多個一個page.js文件,
app/views文件夾下多了一個page.html文件,
app/index.html中增加了一行

<script src="scripts/controllers/page.js"></script>

index.html須要導入一切劇本文件,Yeoman幫我們自動導入了。

Yeoman還供應了許多自動建立的要領,
yo angular:controller [name], 自動建立一個controller
yo angular:directive [name],自動建立directive,directive能夠自定義指令
yo angular:service [name],自動建立一個service,平常在service中向服務器端發送要求獵取數據
yo angular:filter [name],自動建立filter,filter完成對數據顯現的花樣設置
yo angular:view [name],自動建立view

4.設置路由

修正app/scripts/app.js文件

$stateProvider
  .state('main', {
    url: '/',
    templateUrl: '/views/main.html',
    controller: 'MainCtrl'
  })
  .state('about', {
    url: '/about',
    templateUrl: '/views/about.html',
    controller: 'AboutCtrl'
  })
  .state('page', { //此處為頁面名字,能夠自定義頁面名字,在路由跳轉時運用
    url: 'page',   //自定義路由
    templateUrl: '/view/page.html',
    controller: 'PageCtrl'
  });

5.設置路由跳轉

在首頁上建立一個按鈕,跳轉到建立的page.html

<button type="button" ng-click="goPage()">Go Page</button>

然後在main.js中增加對應的按鈕事宜

angular.module('angularProjectApp')
  .controller('MainCtrl', ['$scope', '$state', function ($scope, $state) {
    this.awesomeThings = [
      'HTML5 Boilerplate',
      'AngularJS',
      'Karma'
    ];

    $scope.goPage = function () {
      $state.go('page');
    }
  }]);

起首經由過程依靠注入的體式格局注入兩個參數,$scope和$state。
$scope實際上是一個對象,存儲當前頁面的數據和函數,能夠看做是controller和view之前的橋樑。
$state的作用完成路由跳轉,經由過程$state.go(‘page’)的情勢就能夠跳轉到page頁面。
‘page’就是下面代碼第一行的頁面名字。

.state('page', {
    url: '/page', 
    templateUrl: '/view/page.html',
    controller: 'PageCtrl'
  });

在命令行運轉

grunt serve

發明此時頁面成了這個模樣
《[AngularJS]運用Yeoman構建開闢AngularJS項目》

檢察控制台也並沒有報錯,然則main.html的內容並沒有湧現,搜檢發明須要修正index.html,

<div ng-view=""></div>
<div ui-view=""></div>

這是angular-ui-router模塊和angular-route的差別之處。
然後頁面顯現一般。
《[AngularJS]運用Yeoman構建開闢AngularJS項目》

點擊Go Page,也能夠在瀏覽器地址欄直接輸入”http://localhost:9000/#!/page”
《[AngularJS]運用Yeoman構建開闢AngularJS項目》

頁面跳轉到page頁面。

如許就完成了運用Yeoman構建一個AngularJS項目,並簡樸開闢了一下,建立一個新的頁面並完成了路由跳轉。

    原文作者:王嬌
    原文地址: https://segmentfault.com/a/1190000014384030
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞