淡淡理解下AngularJS中的module
在AngularJS中module是一个核心的存在,包括了很多方面,比如controller, config, service, factory, directive, constant, 等等。
在Javascript中如何实现类似module的功能呢?
或者说,我们定义一个函数,如何把函数内的函数向外界开放呢?
我想,可以把函数中的函数作为一个对象的键值,从而向外界开放。
这样说很笼统,其实是这样的:
var myModule = function outerFuction(){
var method1 = new function(){}
var method2 = new function(){}
return{
method1: method1,
method2, method2
}
}
var o = outerFucntion();
o.method1();
o.mehtod2();
举个银行存钱取钱的例子。
var account = function(){
//余额
var balance = 0;
//存钱
var deposit = function(money){
balance+=money;
console.log("卡上余额为: " + balance);
notifyUser();
}
//取钱
var withdraw = function(money){
balance -= money;
console.log("卡上余额为: " + balance)
notifyUser();
}
//通知用户
var notifyUser = function(){
console.log("卡上余额有变动");
}
return {
deposit:deposit,
withdraw: withdraw
}
}
var a1 = account();
a1.deposit(100);
a1.withdraw(50);
再来到AngularJS,我们已经习惯了这样写:
var app = angular.module('app',[]);
app.config();
app.controller();
app.factory();
...
也就是获取到module,再调用module提供给我们的方法。
查看angular.js源代码,发现:
angular = window.angular || (window.angular = {} )
这是为什么我们能使用angular这个变量的原因。
...
var moduleInstace = {
provider: invokeLater('$provide','provider'),
factory: invokeLater('$provider', 'factory'),
service: invokeLater('$provider', 'service'),
value: invokeLater('$provide', 'value'),
constant: invokeLater('$provider', 'constant'...),
animation: invokeLater('$animateProvider',...),
filter: invokeLater('$filterProvider',...),
controller: invokeLater('$controllerProvider',...),
directive: invokeLater('$compileProvider',...),
config: config,
} return moduleInstance;
...
以上的写法正是module的写法。
淡淡理解下AngularJS中的module的更多相关文章
- 关于AngularJs中监听事件及脏循环的理解
可能很多刚入行或者刚学习的前端对于AngularJs中的一些事件或者概念感觉不理解或者没有思路,今天让我们一起来剖析一下AngularJs中的一些事件. AngularJs中对于的监听事件会用到一个s ...
- angularJS中的Promise对象($q)的深入理解
原文链接:a better way to learn AngularJS - promises AngularJS通过内置的$q服务提供Promise编程模式.通过将异步函数注册到promise对象, ...
- (七)理解angular中的module和injector,即依赖注入
(七)理解angular中的module和injector,即依赖注入 时间:2014-10-10 01:16:54 阅读:63060 评论:1 收藏:0 [点 ...
- 理解angular中的module和injector,即依赖注入
理解angular中的module和injector,即依赖注入 依赖注入(DI)的好处不再赘言,使用过spring框架的都知道.angularjs作为前台js框架,也提供了对DI的支持,这是java ...
- 转: 理解AngularJS中的依赖注入
理解AngularJS中的依赖注入 AngularJS中的依赖注入非常的有用,它同时也是我们能够轻松对组件进行测试的关键所在.在本文中我们将会解释AngularJS依赖注入系统是如何运行的. Prov ...
- 理解AngularJS中的依赖注入
点击查看AngularJS系列目录 理解AngularJS中的依赖注入 AngularJS中的依赖注入非常的有用,它同时也是我们能够轻松对组件进行测试的关键所在.在本文中我们将会解释AngularJS ...
- 理解SQL Server中的权限体系(下)----安全对象和权限
原文:http://www.cnblogs.com/CareySon/archive/2012/04/12/SQL-Security-SecurableAndPermission.html 在开始阅读 ...
- 理解angularJS中作用域$scope
angularJS中作用域是什么 作用域(scope)是构成angularJS应用的核心基础,在整个框架中都被广泛使用,因此了解它如何工作是非常重要的 应用的作用域是和应用的数据模型相关联的,同时作用 ...
- AngularJS中module的导入导出
关于AngularJS中module的导入导出,在Bob告诉我之前还没写过,谢谢Bob在这方面的指导,给到我案例代码. 在AngularJS实际项目中,我们可能需要把针对某个领域的各个方面放在不同的m ...
随机推荐
- 【Python】exe2shellcode,shellcode2exe
用python写这类程序真简洁,要是用C++又不知道得多写多少行代码了. exe2shellcode #! /usr/bin/env python # -*- coding: utf-8 -*- im ...
- 【逆向工具】IDA Python安装与使用
1.IDA Pyhon介绍 IDA Python是IDA6.8后自带插件,可以使用Python做很多的辅助操作,非常方便的感觉. 2.IDA Python安装 从github上IDAPython项目获 ...
- H5开发APP考题和答案
{ "last_updated": { "$date": 1544276670569 }, "page_count": 1, "a ...
- 关于 VS 2010 和 VS 2013 的警告 LNK4042
由于我最近调整了一下 Jimi 的文件结构,导致出现了一个 LNK4042 的 warning,我并没有很重视,这个 warning 导致出现了一些错误. 我调试了几个小时,一开始并没有想到是这个 w ...
- nginx:在centos中自启动
参考网址:http://www.jb51.net/article/120545.htm # vi /etc/init.d/nginx #!/bin/sh # Name:nginx4comex # ng ...
- 解决方案:centos运行shell脚本时报“$'\r': 未找到命令”
=============================================== 2018/9/12_第1次修改 ccb_warlock == ...
- Java中final关键字概述
使用final修饰过的变量都不可以改变: 1.final修饰变量 恒定不变的属性,可以用final关键字来修饰: 变量名建议全部使用大写 final修饰的变量不能改变,如果程序中重新赋值,编译报错 例 ...
- CF1064A 【Make a triangle!】
要让这个三角形合法,只需满足三角形不等式 即$a+b>c$,设$c=max\left\{a,b,c\right\}$,上式转化为$c<a+b$ 如果已经满足,不需消耗代价 否则消耗$c-a ...
- JS框架图
一.JS框架
- 003.NFS配置实例
一 NFS常见服务管理 1.1 启动NFS [root@imxhy ~]# systemctl start nfs #CentOS7.x系列启动 [root@imxhy ~]# service nfs ...