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 相关文章推荐
基于jquery循环map功能的代码
Feb 26 Javascript
用Jquery重写windows.alert方法实现思路
Apr 03 Javascript
使用jquery实现div的tab切换实例代码
May 27 Javascript
Jquery实现图片左右自动滚动示例
Sep 25 Javascript
分享十五款 jQuery 社交网络分享插件
May 16 Javascript
jQuery检查事件是否触发的方法
Jun 26 Javascript
iframe中子父类窗口调用JS的方法及注意事项
Aug 25 Javascript
javascript高级选择器querySelector和querySelectorAll全面解析
Apr 07 Javascript
JS修改地址栏参数实例代码
Jun 14 Javascript
详解vue表单验证组件 v-verify-plugin
Apr 19 Javascript
详解A标签中href=&quot;&quot;的几种用法
Aug 20 Javascript
JS中的BOM应用
Feb 02 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页面缓存ob系列函数介绍
2012/10/18 PHP
PHP基于imap获取邮件实例
2014/11/11 PHP
php实现模拟登陆方正教务系统抓取课表
2015/05/19 PHP
ThinkPHP中Widget扩展的两种写法及调用方法详解
2017/05/04 PHP
Laravel多用户认证系统示例详解
2018/03/13 PHP
PHP抽象类与接口的区别详解
2019/03/21 PHP
THINKPHP5.1 Config的配置与获取详解
2020/06/08 PHP
js prototype截取字符串函数
2010/04/01 Javascript
javascript+mapbar实现地图定位
2010/04/09 Javascript
javascript右下角弹层及自动隐藏(自己编写)
2013/11/20 Javascript
JavaScript中九种常用排序算法
2014/09/02 Javascript
window.onload绑定多个事件的两种解决方案
2016/05/15 Javascript
js中int和string数据类型互相转化实例
2019/01/16 Javascript
搭建一个Koa后端项目脚手架的方法步骤
2019/05/30 Javascript
node 标准输入流和输出流代码实例
2019/09/19 Javascript
[02:28]DOTA2英雄基础教程 灰烬之灵
2013/12/19 DOTA
Python编写屏幕截图程序方法
2015/02/18 Python
多个应用共存的Django配置方法
2018/05/30 Python
对python3 一组数值的归一化处理方法详解
2018/07/11 Python
Python 使用Numpy对矩阵进行转置的方法
2019/01/28 Python
Python实现图片转字符画的代码实例
2019/02/22 Python
解决python 3 urllib 没有 urlencode 属性的问题
2019/08/22 Python
如何更改 pandas dataframe 中两列的位置
2019/12/27 Python
python加密解密库cryptography使用openSSL生成的密匙加密解密
2020/02/11 Python
Python实现上下文管理器的方法
2020/08/07 Python
实例教程 HTML5 Canvas 超炫酷烟花绽放动画实现代码
2014/11/05 HTML / CSS
美国儿童珠宝在线零售商:Loveivy
2019/05/22 全球购物
The North Face北面荷兰官网:美国著名户外品牌
2019/10/16 全球购物
口腔工艺技术专业毕业生自荐信
2013/09/27 职场文书
岗位职责的含义
2013/11/17 职场文书
高中毕业生生活的自我评价
2013/12/08 职场文书
国际贸易专业个人鉴定
2014/02/22 职场文书
学生会竞聘书范文
2014/03/31 职场文书
个人业务学习心得体会
2016/01/25 职场文书
文明和谐家庭事迹材料(2016精选版)
2016/02/29 职场文书
Nginx服务器如何设置url链接
2021/03/31 Servers