首先须要安装Node.js,而后使用npm安装所须要的模块html
npm install -g grunt-cli bower yo generator-karma generator-angular
建立一个新的目录,并在目录下面运行前端
yo angular angular-project
angular-project是工程名字
而后会出现以下图:node
根据须要选择使用Grunt仍是Gulp,和是否须要Sass和Bootstrap。这里选择了使用Grunt和Bootstrap。
Grunt和Gulp都是项目构建工具,不一样的是Grunt是基于配置的,而Gulp是基于代码的。
而后就是安装过程,生成整个项目的框架,很是方便。npm
运行工程,Yeoman已经使用Grunt配置好了整个项目,只须要在控制台输入json
grunt serve
浏览器就会自动打开窗口,http://localhost:9000,而后就能够看到网页了。后端
主要开发就在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和路由。app
angular-ui-router是AngularJS的第三方路由模块,比自带的angular-route路由模块好用,能够更好的实现页面跳转,嵌套路由。
安装方法:框架
bower install angular-ui-router --save
原本是这样的
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' }}; }]);
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
修改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' });
在首页上建立一个按钮,跳转到建立的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
发现此时页面成了这个样子
查看控制台也并无报错,可是main.html的内容并无出现,检查发现须要修改index.html,
将
<div ng-view=""></div>
<div ui-view=""></div>
这是angular-ui-router模块和angular-route的不一样之处。
而后页面显示正常。
点击Go Page,也能够在浏览器地址栏直接输入"http://localhost:9000/#!/page"
页面跳转到page页面。
这样就实现了使用Yeoman构建一个AngularJS项目,并简单开发了一下,建立一个新的页面并实现了路由跳转。