angularJs 1.6.1 + ui-router + requireJs整合

angularJs 1.6.1 + ui-router + requireJs整合项目ypei

文档结构:

1. ypei/index.html

1 <div ui-view="main" class="main" id="main"></div>
2 <script src="lib/require.js" data-main="js/main" type="text/javascript" charset="utf-8"></script>

2.ypei/js/main.js,启动文件

paths:里面放的是将要加载的文件,如果仅仅只是在paths中定义,而后面的文件中没有引用,requireJs也不会加载该文件;所以,在paths中定义后,还需要你规定在什么时候加载定义的文件。

shim:如果没有采用AMD规范编写,但是有需要用requireJS加载它们的话,必须先定义它们的特征。

angular.bootstrap(document.getElementById("main"),['app']);这句话是表示手动启动angularJs,如果自动启动的话需要在静态页面标签中添加“ng-app=''或ng-app=‘app'"

 1 (function(require) {
 2     var requireMain = require.config({
 3         //baseUrl: 'script', //模块根路径配置
 4         paths: {//用于映射不存在根路径下面的模块路径,相对于baseUrl的
 5             angular: "../lib/angular",
 6             uiRouter: "../lib/ui-router",
 7             loginApp:"../modules/login/loginCtrl",
 8             regApp:"../modules/reg/regCtrl",
 9             regApp2:"../modules/reg2/regCtrl2",
10             listApp:"../modules/list/listCtrl",
11             personApp:"../modules/person/personCtrl",
12             detailApp:"../modules/detail/detailCtrl",
13             //app:"app",//同名都是app,并且和main同路路径的可以省略路径步骤
14             myService:"service"
15         },
16         shim: {//配置脚本/模块外面没有使用RequireJS的函数依赖并且初始化函数。
17             angular: {
18                 //deps: ['jquery'],
19                 exports: "angular"
20             },
21             uiRouter: {
22                 deps: ['angular'],
23                 exports: "uiRouter"
24             }
25         }
26     });
27     requireMain(['angular',"app"], function (angular) {
28         angular.bootstrap(document.getElementById("main"),['app']);
29     });
30 })(require);

3.ypei/js/app.js,路由文件

define(['angular','uiRouter','loginApp','regApp','regApp2','listApp','personApp','detailApp']......这个时候,就会把这些main文件paths中定义的模块文件加载到静态文件中去,如果不写这些参数,
var app = angular.module('app', ['ui.router','loginApp','regApp'.....中的这些模块都会报没有定义的错误提示。
 1 define(['angular','uiRouter','loginApp','regApp','regApp2','listApp','personApp','detailApp'],function(angular){
 2     var app = angular.module('app', ['ui.router','loginApp','regApp','regApp2','listApp','personApp','detailApp']);
 3 
 4     app.config(["$stateProvider","$urlRouterProvider",function($stateProvider,$urlRouterProvider) {
 5 
 6         $urlRouterProvider.otherwise('/');
 7         $stateProvider
 8             .state('/', {
 9                 url: '/',
10                 views: {
11                     'main': {
12                         templateUrl: 'modules/login/login.html',
13                         controller: 'loginCtrl'
14                     }
15                 }
16             })
17             .state('reg', {
18                 url: '/reg',
19                 views: {
20                     'main': {
21                         templateUrl: 'modules/reg/reg.html',
22                         controller: 'regCtrl'
23                     }
24                 }
25             })
26             .state('reg2', {
27                 url: '/reg/reg2',
28                 views: {
29                     'main': {
30                         templateUrl: 'modules/reg2/reg2.html',
31                         controller: 'regCtrl2'
32                     }
33                 }
34             })
35             .state('list', {
36                 url: '/list:id',
37                 views: {
38                     'main': {
39                         templateUrl: 'modules/list/list.html',
40                         controller: 'listCtrl'
41                     }
42                 }
43             })
44             .state('person', {
45                 url: '/person',
46                 views: {
47                     'main': {
48                         templateUrl: 'modules/person/person.html',
49                         controller: 'personCtrl'
50                     }
51                 }
52             })
53             .state('detail', {
54                 url: '/list/detail?:id',
55                 views: {
56                     'main': {
57                         templateUrl: 'modules/detail/detail.html',
58                         controller: 'detailCtrl'
59                     }
60                 }
61             });
62     }]);
63 });

4.ypei/modules/login/loginCtrl.js

1 define(['angular','uiRouter','myService'],function(angular) {
2     angular.module('loginApp', ['ui.router', 'myService'])
3         .controller('loginCtrl', ['$scope', '$state', function ($scope, $state) {
4             $scope.login = function () {
5                 $state.go("list");
6             }
7         }]);
8 });

其他的模块的controller也是雷同的写法,就不一一粘帖了。

网上找到个更好的,可参考:

http://blog.csdn.net/yo548720570/article/details/41047309

http://blog.csdn.net/w1014074794/article/details/50097837

 

posted @ 2017-02-22 16:37  甘小春  Views(454)  Comments(0)    收藏  举报