angular.js + require.js构建模块化单页面应用的方法步骤


Posted in Javascript onJuly 19, 2017

前言

本文主要给大家介绍的是关于利用angular.js + require.js构建模块化单页面应用的方法,分享出来供大家参考学习,需要的朋友们下面来一起看看详细的介绍吧。

AngularJS描述:

angularjs是可以用来构建WEB应用的,WEB应用中的一种端对端的完整解决方案。通过开发者呈现一个更高层次的抽象来简化应用的开发。最适合的就是用它来构建一个CRUD应用,它提供了非常方便的且统一高效的解决方案,其数据绑定、基本模版标识符、表单验证、路由、深度链接、组件重用、依赖注入、以及HTML标记等,最受欢迎的莫过于它的双向数据绑定。

requireJS描述:

requireJS是来解决传统的页面加载script标记操作,通过其初始化配置实现按需、并行、延时的载入js库,声明不同js文件之间的依赖关系,它是遵循前端AMD规范(异步模块加载)。js代码可以以模块化的方式进行组织(模块化编程)。模块化的意义就是通过代码逻辑表明模块之间的依赖关系和执行顺序,按照模块逻辑来分解代码,起到配合mvc框架架构项目的作用。

整合:

使用requireJS模块化定义模块质检的依赖关系,打包不需要文件挨个对照,很方便。将script脚本从模版页面中抽离出来,通过js当前模块加载需要依赖的js模块。按需加载。路由更加方便。

实践—?目录结构

这里文件目录可以根据项目需求自由调整

angular.js + require.js构建模块化单页面应用的方法步骤

实践—?index.html

和正常的html写法一样,这里要注意引入js时只要引用main和require.js,由require.js去动态加载所需要的js

<div class="main">
 <div class="header">
  <div class="right-bar">
   <span class="welcome">当前用户:<b>...</b> <button class="btn btn-info btn-xs"><i class="fa fa-sign-out"></i> 注销</button></span>
  </div>
 </div>
 <div class="mainContent has-shadow">
  <div ng-view></div>
 </div>
</div>
<script data-main="js/main" src="js/libs/require.js"></script>//只要引用main和require.js

实践—?入口文件main.js

实例化require.js并配置各种js的路径以及依赖关系,初始化整个项目

/**
 * 入口文件
 */
require.config({
 baseUrl: "js/",
 paths: {
  "jquery": "libs/jquery203",
  "angular" : "libs/angular.min",
  "angular-route" : "libs/angular-route.min",
  "angular-sanitize" : "libs/angular-sanitize.min",


  "app" : "controllers/app",
  "loadingInterceptor" : "controllers/loadingInterceptor",
  "run_stateCtrl" : "controllers/run_stateCtrl",

  "route" : "routes/appRoute"
 },
 shim: {
  'angular': {
   exports: 'angular'
  },
  'angular-route':{
   deps: ["angular"],
   exports: 'angular-route'
  },
  'angular-sanitize':{
   deps: ["angular"],
   exports: 'angular-sanitize'
  }
 }
});
require(['jquery','angular','angular-route','angular-sanitize','app','loadingInterceptor','route','run_stateCtrl'],function ($,angular){

  $(function () {

   angular.bootstrap(document,["myApp"]);//初始化整app

  })

});

实践—?建立angular.module 即app.js

建立angular.module,所有的操作都是在angular.module的基础上进行的

/**
 * 建立angular.module
 */
define(['angular'], function (angular) {
 var app = angular.module('myApp', ['ngRoute','ngSanitize','ajaxLoading']);//引入需要以来的模块
 return app;
});

实践—?建立路由

不同的模块被加载进主视图,并绑定控制器

/**
 * 路由
 */
define(['app'], function(app){
 return app.config(['$routeProvider',function($routeProvider) {
   $routeProvider
    .when('/', {
    templateUrl: 'js/views/run_state.html',
    controller: 'run_stateCtrl'
    })
    .when('/xq', {
    templateUrl: 'js/views/xq.html',
    controller: 'xqCtrl'
    })
    .otherwise({ redirectTo: '/' });
 }])
});

实践—?模块控制器

被路由绑定的模块控制器,控制着当前模块的业务流程

define(['app'], function(app){  
 return app.controller('run_stateCtrl', ['$scope','$rootScope','$http', function ($scope,$rootScope,$http) {

   $rootScope.headTitle = $rootScope.title = "hello,angular!";
   $rootScope.appName = $rootScope.span = "angular侧导航";
   $scope.getMore = function(){
    angular.element('.state').text('正在运行')
   };
   $http.get('./json/215145.json').
    success(function(data) {
    $scope.branchs = data.branchs;    
    });
  }])
});

总结

整体的模块搭建完之后,具体的业务流程,根据angularjs的API来具体实现功能。

好了,以上就是这篇文章的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

Javascript 相关文章推荐
JavaScript Eval 函数使用
Mar 23 Javascript
javascript天然的迭代器
Oct 29 Javascript
Javascript Memoizer浅析
Oct 16 Javascript
45个JavaScript编程注意事项、技巧大全
Feb 11 Javascript
基于原生JS实现图片裁剪
Aug 01 Javascript
Vue2.0 UI框架ElementUI使用方法详解
Apr 14 Javascript
ES6中Array.find()和findIndex()函数的用法详解
Sep 16 Javascript
详解vue项目打包后通过百度的BAE发布到网上的流程
Mar 05 Javascript
jQuery实现的简单拖拽功能示例【测试可用】
Aug 14 jQuery
Windows下安装 node 的版本控制工具 nvm
Feb 06 Javascript
vue中watch和computed的区别与使用方法
Aug 23 Javascript
element-ui和vue表单(对话框)验证提示语(残留)清除操作
Sep 11 Javascript
Vue学习笔记进阶篇之多元素及多组件过渡
Jul 19 #Javascript
vue中的非父子间的通讯问题简单的实例代码
Jul 19 #Javascript
Vue之Watcher源码解析(2)
Jul 19 #Javascript
Angular.js项目中使用gulp实现自动化构建以及压缩打包详解
Jul 19 #Javascript
JS+canvas实现的五子棋游戏【人机大战版】
Jul 19 #Javascript
Vue学习笔记进阶篇之vue-router安装及使用方法
Jul 19 #Javascript
Vue学习笔记进阶篇之单元素过度
Jul 19 #Javascript
You might like
PHP句法规则详解 入门学习
2011/11/09 PHP
typecho插件编写教程(五):核心代码
2015/05/28 PHP
Symfony生成二维码的方法
2016/02/04 PHP
php禁用cookie后session设置方法分析
2016/10/19 PHP
PHP制作登录异常ip检测功能的实例代码
2016/11/16 PHP
php实现查询功能(数据访问)
2017/05/23 PHP
Ubuntu 16.04中Laravel5.4升级到5.6的步骤
2018/12/07 PHP
PHP自定义错误处理的方法分析
2018/12/19 PHP
javascript 操作select下拉列表框的一点小经验
2010/03/20 Javascript
对javascript的一点点认识总结《javascript高级程序设计》读书笔记
2011/11/30 Javascript
类似php的js数组的in_array函数自定义方法
2013/12/27 Javascript
js实现局部页面打印预览原理及示例代码
2014/07/03 Javascript
直接在JS里创建JSON数据然后遍历使用
2014/07/25 Javascript
Jquery的基本对象转换和文档加载用法实例
2015/02/25 Javascript
javascript实现label标签跳出循环操作
2016/03/06 Javascript
Bootstrap模态框(modal)垂直居中的实例代码
2016/08/18 Javascript
ES6概念 Symbol toString()方法
2016/12/25 Javascript
利用Javascript开发一个二维周视图日历
2017/12/14 Javascript
Vue CLI3 开启gzip压缩文件的方式
2018/09/30 Javascript
微信小程序如何获取手机验证码
2018/11/04 Javascript
深入学习js函数的隐式参数 arguments 和 this
2019/06/24 Javascript
vue 中url 链接左边的小图标更改问题
2019/12/30 Javascript
[54:15]DOTA2-DPC中国联赛 正赛 DLG vs Dragon BO3 第二场2月1日
2021/03/11 DOTA
Python基于numpy灵活定义神经网络结构的方法
2017/08/19 Python
python3的输入方式及多组输入方法
2018/10/17 Python
python 构造三维全零数组的方法
2018/11/12 Python
Python Process多进程实现过程
2019/10/22 Python
英国空调、除湿机和通风设备排名第一:Air Con Centre
2019/02/25 全球购物
美国在线鞋类零售商:LifeStride
2019/06/09 全球购物
New Balance俄罗斯官方网上商店:购买运动鞋
2020/03/02 全球购物
在购买印度民族服饰:Soch
2020/09/15 全球购物
本科生导师推荐信范文
2014/05/18 职场文书
践行党的群众路线心得体会
2014/11/05 职场文书
2014年会计人员工作总结
2014/12/10 职场文书
家装电话营销开场白
2015/05/29 职场文书
python tkinter实现定时关机
2021/04/21 Python