AngularJS 应用模块化的使用


Posted in Javascript onApril 04, 2018

一.模块化的好处

(1)实现逻辑更清晰、可读性强;
(2)团队开发分工明确,容易控制;
(3)充分利用可以重用代码;
(4)抽象出可公用的模块,可维护性强;
(5)模块化的遗留系统方便组装开发新的相似系统.

二.AngularJS模块的定义

(1)angular对象的module()使用方法:

// 定义一个无依赖模块
  angular.module('appModule',[]);
  // 定义一个依赖module1、module2的模块
  angular.module('appModule',['module1','module2']);

(2)angular.module()方法:接收三个参数

第一个为模块的名称,第二个是数组,表示模块依赖的模块的名称。如果不需要依赖其他模块,传入空数组即可.第三个参数可选,接收一个方法,用于对模块进行配置,作用和模块实例的config()方法相同.

angular.module()方法返回一个模块实例对象,可以调用该对象的controller()、directive()、filter()等方法向模块中添加控制器、指令、过滤器等其他组件.

(3)页面引用模块:ng-app指令

<html ng-app="appMobile">

三.使用模块解决命名冲突问题

两个页面共用一个js文件,控制器的定义放在common.js中,当两个页面定义的控制器名称相同时就会产生冲突,AngularJS中通过使用模块化来解决命名冲突.调用 angular.module()方法创建两个模块实例,分别调用这两个模块实例的controller()方法创建两个名称相同的控制器,但这两个控制器属于不同的模块.虽然html页面中的控制器名称都是UserController,但是分属于不同的模块,因此避免了冲突.

var loginModule = angular.module("loginModule",[]);
loginModule.controller("UserController",function($scope,$log){
  
  $scope.uname = "login";
  $scope.pword = "admin";
  $scope.submit = function(){
    alert("登录模块: UserController");
  }
  
})

var registerModule = angular.module("registerModule",[]);
registerModule.controller("UserController",function($scope,$log){
  
  $scope.uname = "register";
  $scope.pword = "admin";
  $scope.submit = function(){
    alert("注册模块: UserController");
  }  
})

四.模块化的最佳实践

假设项目名称:app,包含login和register两个模块:

├─app
│ │
│ ├──css---------------CSS样式
│ ├──img---------------图片资源
│ ├──js----------------JS代码  
│ │  common.js // 公共JS代码
│ │
│ ├──modules
│ │  │
│ │  ├─login----------------登录模块
│ │  │  │  
│ │  │  │   loginModule.js----------------登录模块定义
│ │  │  │   
│ │  │  ├─css
│ │  │  ├─js  
│ │  │  │   directives.js
│ │  │  │   filters.js
│ │  │  │   controllers.js----------------控制器定义
│ │  │  │  
│ │  │  │  
│ │  │  └─views  
│ │  │     login.html
│ │  │     
│ │  └──register----------------注册模块  
│ │     │  
│ │     │   registerModule.js----------------注册模块定义
│ │     │   
│ │     ├─css
│ │     ├─js  
│ │     │   directives.js
│ │     │   filters.js
│ │     │   controllers.js----------------控制器定义
│ │     │  
│ │     │  
│ │     └─views  
│ │       register.html
│ │

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Ext javascript建立超链接,进行事件处理的实现方法
Mar 22 Javascript
web 页面分页打印的实现
Jun 22 Javascript
JavaScript高级程序设计 客户端存储学习笔记
Sep 10 Javascript
JQuery与Ajax调用新浪API获取短网址的代码
Feb 07 Javascript
js校验表单后提交表单的三种方法总结
Feb 28 Javascript
jquery分析文本里url或邮件地址为真实链接的方法
Jun 20 Javascript
jQuery实现只允许输入数字和小数点的方法
Mar 02 Javascript
总结javascript中的六种迭代器
Aug 16 Javascript
Angularjs使用ng-repeat中$even和$odd属性的注意事项
Dec 31 Javascript
JavaScript执行环境及作用域链实例分析
Aug 01 Javascript
安装多版本Vue-CLI的实现方法
Mar 24 Javascript
JS 逻辑判断不要只知道用 if-else 和 switch条件判断(小技巧)
May 27 Javascript
vue todo-list组件发布到npm上的方法
Apr 04 #Javascript
D3.js实现简洁实用的动态仪表盘的示例
Apr 04 #Javascript
vue.js实现点击后动态添加class及删除同级class的实现代码
Apr 04 #Javascript
10分钟上手vue-cli 3.0 入门介绍
Apr 04 #Javascript
详解vue 单页应用(spa)前端路由实现原理
Apr 04 #Javascript
vue cli升级webapck4总结
Apr 04 #Javascript
JavaScript实现短暂提示框功能
Apr 04 #Javascript
You might like
php addslashes 利用递归实现使用反斜线引用字符串
2013/08/05 PHP
简单解决新浪SAE无法上传文件的问题
2015/05/13 PHP
基于php实现的验证码小程序
2016/12/13 PHP
php实时倒计时功能实现方法详解
2017/02/27 PHP
JavaScript 基础问答三
2008/12/03 Javascript
jQuery操作input type=radio的实现代码
2012/06/14 Javascript
jquery实现删除一个元素后面的所有元素功能
2015/12/21 Javascript
JS实现Ajax的方法分析
2016/12/20 Javascript
vue中使用 pako.js 解密 gzip加密字符串的方法
2019/06/10 Javascript
详解Vue-cli3.X使用px2rem遇到的问题
2019/08/09 Javascript
详解简单易懂的 ES6 Iterators 指南和示例
2019/09/24 Javascript
vue如何使用async、await实现同步请求
2019/12/09 Javascript
python分析nignx访问日志脚本分享
2015/02/26 Python
Python的Django框架安装全攻略
2015/07/15 Python
Python输出由1,2,3,4组成的互不相同且无重复的三位数
2018/02/01 Python
python读取Excel实例详解
2018/08/17 Python
Python引用计数操作示例
2018/08/23 Python
Python尾递归优化实现代码及原理详解
2020/10/09 Python
CSS3制作酷炫的三维相册效果
2016/07/01 HTML / CSS
Sixt美国租车:高端豪华车型自驾体验
2017/09/02 全球购物
Ralph Lauren意大利官方网站:时尚界最负盛名的品牌之一
2018/10/18 全球购物
应用化学专业职业生涯规划书
2013/12/31 职场文书
文明美德伴我成长演讲稿
2014/05/12 职场文书
演讲稿格式范文
2014/05/19 职场文书
法制宣传标语
2014/06/23 职场文书
税务职业生涯规划书范文
2014/09/16 职场文书
2015年春节标语口号
2014/12/09 职场文书
邀请函模板
2015/02/02 职场文书
工程催款通知书
2015/04/17 职场文书
2015年“世界无车日”活动方案
2015/05/06 职场文书
培训学校2015年度工作总结
2015/07/20 职场文书
Pytorch 中net.train 和 net.eval的使用说明
2021/05/22 Python
python中super()函数的理解与基本使用
2021/08/30 Python
Java tomcat手动配置servlet详解
2021/11/27 Java/Android
教你修复 Win11应用商店加载空白问题
2021/12/06 数码科技
一起来看看Vue的核心原理剖析
2022/03/24 Vue.js