AngularJS模块加载

配置块

在模块的加载阶段,AngularJS会在提供者注册和配置的过程中对模块进行配置。在整个AngularJS的工作流中,这个阶段是唯一能够在应用启动前进行修改的部分。

angular.module(‘myApp‘, [])

.config(function($provide) {});

最常使用的factory,directive等都是config函数的语法糖,它们都会在配置阶段执行。

需要特别注意的是,AngularJS会以函数的书写和注册的顺序来执行它们。也就是说我们不能注入一个尚未注册的提供者。唯一例外的是constant()方法,这个方法总是在所有配置块之前被执行。

运行块

和配置块不同,运行块在注入器创建之后被执行,它是所有AngularJS应用中第一个被执行的方法,更接近于main方法的概念。运行块中的代码块通常很难进行单元测试,它是和应用本身高度耦合的。运行块通常用来注册全局的事件监听器,例如我们会在.run()块中设置路由事件的监听器以及过滤未经授权的请求。

假设我们需要在每次路由发生变化时,都执行一个函数来验证用户的权限,放置这个功能唯一合理的地方就是run方法。

angular.module(‘myApp‘, [])

.run(function($rootScope, AuthService{

$rootScope.$on(‘$routeChangeStart‘, function(evt, next, current) {

//if not log in

if(!AuthService.userLoggedIn()) {

if(next.templateUrl ==="login.html") {

//已经转向登录路由因此无需重定向

} else {

$location.path(‘/login‘);

}

}

})

})

时间: 2024-10-12 20:26:08

AngularJS模块加载的相关文章

AngularJS 模块加载

AngularJS模块可以在被加载和执行之前对其自身进行配置.我们可以在应用的加载阶段应用不同的逻辑组.在模块的加载阶段, AngularJS会在提供者注册和配置的过程中对模块进行配置.在整个AngularJS的工作流中,这个阶段是唯一能够在应用启动前进行修改的部分. angular.module('myApp', []) .config(function($provide) {}); 使用config()函数的语法糖,并在配置阶段执行.例如,我们在某个模块之上创建一个服务或指令时: angul

Angular Material串串学客户端开发 2 - Node.js模块加载机制Require()

题外话解一下博客标题,因为第一篇文章评论中,有人质疑离题很远,说了半天和Angular Material没有半毛关系.其实我的的中心在后半句<串串学客户端开发>. require() 不要把这里的Require()和RequireJS混为一谈.不过有意思的是,Typescript的模块定义,甚至同时支持这两种模块机制. 导入和使用外部模块,只是简单的一句require(),看看angular/material/docs下的编译文件gulpfile.js的代码片段.对模块导入和使用有个直观的感觉

关于angularjs的加载方式

一.      关于angularjs的加载方式: 启动方式: 一个angular应用运行起来的"入口",有两方式: 1)在元素上添加ng-app指令(暂时无需关心什么意思):ng-app可以有属性值(ng-app="app"),这样   的话就需要咱们去写一个名为app的module了,后续详解. ---- 暂时不推荐使用这种方式启动angular 2) 不去指定ng-app,通过JS代码执行:angular.bootstrap(element, ['模块名'..

深入浅出nodejs(一) 模块加载机制

声明: 深入浅出nodejs系列文章将会在后面持续更新. 该系列文章部分参考 朴灵<深入浅出nodejs>,并加以总结补充 你真的了解require函数吗? 看似简单的require函数, 其实内部做了大量工作...下面我们将详细说明require为我们所做的一切 nodejs模块加载原理 node加载模块步骤: 1) 路径分析 (如判断是不是核心模块.是绝对路径还是相对路径等) 2) 文件定位 (文件扩展名分析, 目录和包处理等细节) 3) 编译执行 原生模块加载顺序 1) 缓存 2) 本地

黄聪:AngularJS 动态加载控制器实例-ocLoazLazy

一.AngularJS动态加载控制器和视图实例 路由配置关键代码: [javascript] view plain copy print? //二级页面 $stateProvider.state('main', { url: '/:name', /**如果需要动态加载数据和控制器***/ views: { "": { templateUrl: function ($stateParams) { console.info($stateParams); return '/template/

Python学习-3.Python的模块加载

Python中使用import关键字进行模块加载. 先在Visual Studio中建立PythonModuleLoad项目作为演示. 1.同目录加载 建立SameFolder.py文件 写入代码: 1 def printSameFolder(): 2 print("this method is in the same folder") 修改启动文件,默认为PythonModuleLoad.py 1 import SameFolder 2 SameFolder.printSameFol

JavaScript模块加载框架sea.js 学习一

简单总结sea.js 学习 文件目录结构 /sea/sea.js      下载地址  http://seajs.org/docs/#downloads /sea/jquery-sea.js   下载地址 http://jquery.com/download/ /sea/sea_config.js /sea/home.jsdata.js /sea/data.js 1.html页面代码文件 <style> .ch{height:200px;width:200px;background:#ccc;

开发史上最强模块加载工具

haha好吧,我承认这篇文章有点标题党了. 这次要记录的是一个很简单的但是基本符合AMD规范的浏览器端模块加载工具的开发流程.因为自从使用过require.js.webpack等模块化加载工具之后就一直对它的实现原理很好奇,于是稍微研究了一下. 实现的方法有许多,但简单实现的话大致都会有这样几个过程: 1 实现模块的加载.从主模块说起,我们需要通过一个入口来加载我们的主模块的依赖模块,同时在加载完主模块依赖之后,能够取得所各依赖模块的返回值,并将它们传入主模块代码中,再去执行我们的主模块代码.函

Vs2013在Linux开发中的应用(22):模块加载

快乐虾 http://blog.csdn.net/lights_joy/ 欢迎转载,但请保留作者信息 当gdb检测到模块的加载时会输出: =library-loaded,id="/lib/ld-linux.so.2",target-name="/lib/ld-linux.so.2",host-name="/lib/ld-linux.so.2",symbols-loaded="0",thread-group="i1&q