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

浙公网安备 33010602011771号