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 相关文章推荐
javascript 跳转代码集合
Dec 03 Javascript
js替换字符串的所有示例代码
Jul 23 Javascript
node.js中的buffer.length方法使用说明
Dec 14 Javascript
js数组去重的方法汇总
Jul 29 Javascript
JavaScript中eval函数的问题
Jan 31 Javascript
Javascript基础_标记文字的实现方法
Jun 14 Javascript
vue实现添加标签demo示例代码
Jan 21 Javascript
ES6字符串模板,剩余参数,默认参数功能与用法示例
Apr 06 Javascript
信息滚动效果的实例讲解
Sep 18 Javascript
Vue CLI3.0中使用jQuery和Bootstrap的方法
Feb 28 jQuery
详解mpvue实现对苹果X安全区域的适配
Jul 31 Javascript
vue遍历对象中的数组取值示例
Nov 07 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
一个用php3编写的简单计数器
2006/10/09 PHP
PHP中Session ID的实现原理实例分析
2019/08/17 PHP
用javascript实现分割提取页面所需内容
2007/05/09 Javascript
js setattribute批量设置css样式
2009/11/26 Javascript
jquery 学习之二 属性(html()与html(val))
2010/11/25 Javascript
jquery中交替点击事件的实现代码
2014/02/14 Javascript
使用jquery datatable和bootsrap创建表格实例代码
2017/03/17 Javascript
jquery请求servlet实现ajax异步请求的示例
2017/06/03 jQuery
Node.js 基础教程之全局对象
2017/08/06 Javascript
详解关于Vue2.0路由开启keep-alive时需要注意的地方
2018/09/18 Javascript
在NPM发布自己造的轮子的方法步骤
2019/03/09 Javascript
详释JavaScript执行环境与执行栈
2019/04/02 Javascript
JavaScript判断对象和数组的两种方法
2019/05/31 Javascript
javascript实现的时间格式加8小时功能示例
2019/06/13 Javascript
layui实现左侧菜单点击右侧内容区显示
2019/07/26 Javascript
Vue Router 实现动态路由和常见问题及解决方法
2020/03/06 Javascript
原生JS实现微信通讯录
2020/06/18 Javascript
vuejs element table 表格添加行,修改,单独删除行,批量删除行操作
2020/07/18 Javascript
Javascript节流函数throttle和防抖函数debounce
2020/12/03 Javascript
[01:03:41]完美世界DOTA2联赛PWL S3 DLG vs Phoenix 第一场 12.17
2020/12/19 DOTA
Python实现的txt文件去重功能示例
2018/07/07 Python
tensorflow saver 保存和恢复指定 tensor的实例讲解
2018/07/26 Python
Python控制键盘鼠标pynput的详细用法
2019/01/28 Python
Python3中的最大整数和最大浮点数实例
2019/07/09 Python
python实现BP神经网络回归预测模型
2019/08/09 Python
利用django创建一个简易的博客网站的示例
2020/09/29 Python
pytorch 移动端部署之helloworld的使用
2020/10/30 Python
Python更改pip镜像源的方法示例
2020/12/01 Python
复古风格的女装和装饰品:ModCloth
2017/12/29 全球购物
Sarenza德国:法国最大的时尚鞋和包包网上商店
2019/06/08 全球购物
销售自荐信
2013/10/22 职场文书
经典洗发水广告词
2014/03/13 职场文书
合同意向书范本
2014/07/30 职场文书
解除聘用合同证明书范本
2014/09/11 职场文书
优秀班主任主要事迹材料
2014/12/16 职场文书
Canvas如何做个雪花屏版404的实现
2021/09/25 HTML / CSS