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 相关文章推荐
FireFox与IE 下js兼容触发click事件的代码
Nov 20 Javascript
jquery操作对象数组元素方法详解
Nov 26 Javascript
jquery实现textarea输入框限制字数的方法
Jan 15 Javascript
JavaScript获取URL汇总
Jun 08 Javascript
Bootstrap复选框和单选按钮美化插件(推荐)
Nov 23 Javascript
BootStrap CSS全局样式和表格样式源码解析
Jan 20 Javascript
jQuery插件zTree实现清空选中第一个节点所有子节点的方法
Mar 08 Javascript
JS简单生成随机数(随机密码)的方法
May 11 Javascript
微信小程序 生命周期函数详解
May 24 Javascript
一文读懂ES7中的javascript修饰器
May 06 Javascript
JS 逻辑判断不要只知道用 if-else 和 switch条件判断(小技巧)
May 27 Javascript
原生JS实现天气预报
Jun 16 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完全过滤HTML,JS,CSS等标签
2009/01/16 PHP
php命令行(cli)模式下报require 加载路径错误的解决方法
2015/11/23 PHP
深入了解PHP中的Array数组和foreach
2016/11/06 PHP
PHP实现将多个文件压缩成zip格式并下载到本地的方法示例
2018/05/23 PHP
php使用环形链表解决约瑟夫问题完整示例
2018/08/07 PHP
如何在标题栏显示框架内页面的标题
2007/02/03 Javascript
JavaScript面向对象程序设计三 原型模式(上)
2011/12/21 Javascript
重构Javascript代码示例(重构前后对比)
2013/01/23 Javascript
改变隐藏的input中value的值代码
2013/12/30 Javascript
Node.js插件的正确编写方式
2014/08/03 Javascript
JavaScript实现找质数代码分享
2015/03/24 Javascript
基于jquery实现的树形菜单效果代码
2015/09/06 Javascript
移动手机APP手指滑动切换图片特效附源码下载
2015/11/30 Javascript
jQuery Easyui datagrid editor为combobox时指定数据源实例
2016/12/19 Javascript
python爬取安居客二手房网站数据(实例讲解)
2017/10/19 Javascript
150行代码带你实现微信小程序中的数据侦听
2019/05/17 Javascript
什么时候不能在 Node.js 中使用 Lock Files
2019/06/24 Javascript
jQuery删除/清空指定元素的所有子节点实例代码
2019/07/04 jQuery
LayUI switch 开关监听 获取属性值、更改状态的方法
2019/09/21 Javascript
基于vue实现图片验证码倒计时60s功能
2019/12/10 Javascript
深入解读VUE中的异步渲染的实现
2020/06/19 Javascript
[01:48]帕吉至宝加入游戏,遗迹战场现“千劫神屠”
2018/04/07 DOTA
Python中为什么要用self探讨
2015/04/14 Python
Python 实现12306登录功能实例代码
2018/02/09 Python
python之DataFrame实现excel合并单元格
2021/02/22 Python
Python设计模式之桥接模式原理与用法实例分析
2019/01/10 Python
Python3.5内置模块之shelve模块、xml模块、configparser模块、hashlib、hmac模块用法分析
2019/04/27 Python
h5页面唤起app如果没安装就跳转下载(iOS和Android)
2020/06/03 HTML / CSS
求职信的要素有哪些呢
2013/12/26 职场文书
培训心得体会
2013/12/29 职场文书
大学生学习计划书
2014/09/15 职场文书
关于颐和园的导游词
2015/01/30 职场文书
2015年财务工作总结范文
2015/03/31 职场文书
2015年社区党建工作汇报材料
2015/06/25 职场文书
网络舆情信息简报
2015/07/21 职场文书
javascript的setTimeout()使用方法总结
2021/11/20 Javascript