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 相关文章推荐
JS操作select下拉框动态变动(创建/删除/获取)
Jun 02 Javascript
巧用js提交表单轻松解决一个页面有多个提交按钮
Nov 17 Javascript
Jquery插件实现点击获取验证码后60秒内禁止重新获取
Mar 13 Javascript
js+cookies实现悬浮购物车的方法
May 25 Javascript
chrome调试javascript详解
Oct 21 Javascript
JS动态改变浏览器标题的方法
Apr 06 Javascript
ligerUI---ListBox(列表框可移动的实例)
Nov 28 Javascript
JS实现的合并两个有序链表算法示例
Feb 25 Javascript
js 计算图片内点个数的示例代码
Apr 04 Javascript
Vue 2.0 中依赖注入 provide/inject组合实战
Jun 20 Javascript
150行Node.js实现的dns代理工具
Aug 02 Javascript
解决Vue 移动端点击出现300毫秒延迟的问题
Jul 21 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/06/09 PHP
30个php操作redis常用方法代码例子
2014/07/05 PHP
javascript 四则运算精度修正函数代码
2010/05/31 Javascript
初始Nodejs
2014/11/08 NodeJs
js网页滚动条滚动事件实例分析
2015/05/05 Javascript
JS实现淘宝支付宝网站的控制台菜单效果
2015/09/28 Javascript
轻松学习jQuery插件EasyUI EasyUI创建RSS Feed阅读器
2015/11/30 Javascript
Angular.js 实现数字转换汉字实例代码
2016/07/14 Javascript
jquery 一键复制到剪切板的实例
2017/09/20 jQuery
基于Vue的SPA动态修改页面title的方法(推荐)
2018/01/02 Javascript
Node.js中的cluster模块深入解读
2018/06/11 Javascript
JavaScript布尔运算符原理使用解析
2020/05/06 Javascript
Javascript实现简易天数计算器
2020/05/18 Javascript
JS实现放大镜效果
2020/09/21 Javascript
[36:29]2018DOTA2亚洲邀请赛 4.1 小组赛 A组加赛 LGD vs TNC
2018/04/02 DOTA
python中管道用法入门实例
2015/06/04 Python
使用Python通过win32 COM打开Excel并添加Sheet的方法
2018/05/02 Python
Python中asyncio与aiohttp入门教程
2018/10/16 Python
cProfile Python性能分析工具使用详解
2019/07/22 Python
Django REST framework内置路由用法
2019/07/26 Python
python中class的定义及使用教程
2019/09/18 Python
彻底解决Python包下载慢问题
2020/11/15 Python
python Autopep8实现按PEP8风格自动排版Python代码
2021/03/02 Python
使用css3实现的tab选项卡代码分享
2014/12/09 HTML / CSS
Charles&Keith美国官方网站:新加坡快时尚鞋类和配饰零售商
2019/11/27 全球购物
会计出纳员的自我评价
2014/01/15 职场文书
2014年小班元旦活动方案
2014/02/16 职场文书
高中生打架检讨书1000字
2015/02/17 职场文书
2015教师年度工作总结范文
2015/04/07 职场文书
2015年效能监察工作总结
2015/04/23 职场文书
2015年村计划生育工作总结
2015/04/28 职场文书
订货会主持词
2015/07/01 职场文书
毕业晚宴祝酒词
2015/08/11 职场文书
学校远程教育工作总结
2015/08/11 职场文书
2016廉洁从业学习心得体会
2016/01/19 职场文书
Python docx库删除复制paragraph及行高设置图片插入示例
2022/07/23 Python