一步一步看程序怎么启动的,angularjs是单页应用,基本就一个页面,页面主要结构如下:
(function(window){
var appPath=window.contextPath+ '/static/js/'+(window.isMobile?'app_m':'app')+'/';
var globalConfig = {
apiUrl : window.contextPath + "/v1/",
......//配置一些全局路径,方便引用
};
window.globalConfig = window.globalConfig || globalConfig;
})(window);
requirejs.config({
baseUrl: window.globalConfig.appPath,
paths:{
'modules': globalConfig.modulesPath,
'jquery':globalConfig.libPath+'jquery',
'angular':globalConfig.libPath+'angular',
......
},
shim:{
'jquery':{
exports:'$'
},
'angularAMD':{
deps:["angular"],
exports:"angular"
},
'angular':{
deps: ['jquery'],
exports: 'angular'
},
......
})
require(['app','angularAMD'], function(app,angularAMD) {
angularAMD.bootstrap(app);
});//程序启动入口
define([
'angular',
'angularAMD',,
'layout/app-layout.module',
......
], function (ng,angularAMD) {
'use strict';
require(["angularCN"]);
return angular.module('app',[
......
'app.layout',
'app.interceptors'
]).config(['$httpProvider', function($httpProvider) {
//config global interceptors
$httpProvider.interceptors.push('failureMsgInterceptor');
}])
app.js里定义一个app module,引入依赖,做一些配置,上面的代码中省略了好多依赖和配置。
其中最重要的是app-layout.module,因为在这个里面配置了程序的默认路由,所以这个模块需要直接引入进来,加到app的依赖中去,接着看看app-layout.module.js怎么写的,其实和上面几篇文章介绍的.module文件没啥不同
define(["require","angular",'utils/routerHelper',"layout/layout.routes","angular-bootstrap","angular-cookie"],
function(require,ng,routerHelper,routerCfg) {
var module = ng.module('app.layout',["ui.bootstrap","ngCookies"]);
routerHelper.call(module,routerCfg);
return module;
});
define([], function()
{
var basePath={
layout:cmpConfig.appPath+'layout/'
};
return {
routers: {
'app':{
url: "",
abstract:true,
dependencies: [
basePath.layout+'layout.controller.js'
],
views:{
'@':{
templateUrl: basePath.layout+'layout.html',
controller:'LayoutCtrl'
}
}
},
}
}
});