AngularJs与RequireJs整合

*

参考文章:基于RequireJs和AngularJs的前端技术架构

一:预备知识

1,require([module], callback);

2,AMD规范

参考:javascript模块化编程

但是,由于一个重大的局限,使得CommonJS规范不适用于浏览器环境。还是上一节的代码,如果在浏览器中运行,会有一个很大的问题,你能看出来吗?

var math = require(‘math‘);

  math.add(2, 3);

第二行math.add(2, 3),在第一行require(‘math‘)之后运行,因此必须等math.js加载完成。也就是说,如果加载时间很长,整个应用就会停在那里等。

这对服务器端不是一个问题,因为所有的模块都存放在本地硬盘,可以同步加载完成,等待时间就是硬盘的读取时间。但是,对于浏览器,这却是一个大问题,因为模块都放在服务器端,等待时间取决于网速的快慢,可能要等很长时间,浏览器处于"假死"状态。

因此,浏览器端的模块,不能采用"同步加载"(synchronous),只能采用"异步加载"(asynchronous)。这就是AMD规范诞生的背景。

AMD是"Asynchronous Module Definition"的缩写,意思就是"异步模块定义"。它采用异步方式加载模块,模块的加载不影响它后面语句的运行。所有依赖这个模块的语句,都定义在一个回调函数中,等到加载完成之后,这个回调函数才会运行。

AMD也采用require()语句加载模块,但是不同于CommonJS,它要求两个参数:

require([module], callback);

require([‘math‘], function (math) {

    math.add(2, 3);

  });

math.add()与math模块加载不是同步的,浏览器不会发生假死。所以很显然,AMD比较适合浏览器环境。

目前,主要有两个Javascript库实现了AMD规范:require.jscurl.js。本系列的第三部分,将通过介绍require.js,进一步讲解AMD的用法,以及如何将模块化编程投入实战。

二:整体架

main.js


‘use strict‘;

var min = ".min";var appMin = "";
require.config({
    baseUrl: ‘js/‘,
    paths: {
        //libs
        //‘jQuery‘: ‘libs/jquery/jquery‘ + min,
        //‘bootstrap‘: ‘libs/bootstrap/js/bootstrap‘ + min,
        ‘angular‘: ‘libs/angular/angular‘ + min,
   },
    shim: {
        //libs
        ‘angular‘: {
            exports: ‘angular‘
        },
    }
});

require([
    //libs    ‘angular‘,
...
], function (domReady, angular) {
    require([‘domReady‘], function () {
        angular.bootstrap(document, [‘ftApp‘]);//引导程序
    });
});

通过angular.bootstrap(document, [‘app‘])手动初始化静态页面使其支持angularJS

*

app.js

通过主函数入口main.js注册的应用app.js来注册整个应用程序的各个模块,每个模块中定义各自的路由。

define(["angular"], function (angular) {
    ‘use strict‘;

    var ftApp = angular.module(‘ftApp‘,[...]).run([‘$rootScope‘, ‘$http‘, function ($rootScope, $http) {        }]);

...

    return ftApp;
});

*

时间: 2024-10-14 15:20:50

AngularJs与RequireJs整合的相关文章

angularjs和requirejs整合

目录 [TOC]1. 概述1.1 为何整合? 由于angularjs的各种依赖必须按照js的脚本按照循序进行加载(app开发ty300.com),这令开发者非常头疼    脚本多次导入多次执行的冲突,以及性能效率的影响    1.2 脚本加载框架(AMD/CMD)    requirejs 支持AMD和CMD seajs 支持AMD,京东目前使用 笔者了解不甚浅,笔者采用requirejs进行测试    1.3 angularjs新特性 angularjs-1.5加入了许多新特性,我最感兴趣的是

基于angularJS和requireJS的前端架构

1.概要描述 1.1.angularJS描述:angularJS是可以用来构建WEB应用的,WEB应用中的一种端对端的完整解决方案.通过开发者呈现一个更高层次的抽象来简化应用的开发.最适合的就是用它来构建一个CRUD应用,它提供了非常方便的且统一高效的解决方案,其数据绑定.基本模版标识符.表单验证.路由.深度链接.组件重用.依赖注入.以及HTML标记等,最受欢迎的莫过于它的双向数据绑定. 1.2.requireJS描述:requireJS是来解决传统的页面加载script标记操作,通过其初始化配

AngularJS分别RequireJS做文件合并压缩的那些坑

小心!AngularJS合并RequireJS做文件离开压缩的那些坑 小心!AngularJS合并RequireJS做文件离开压缩的那些坑,各人正在做文件离开压缩的时辰一定要注意,感乐趣的网友可以参考一下正在项目运用了AngularJS框架,用RequireJS做异步模块加载(AMD),正在做文件离开压缩时,遇到了一些坑,有些只是搞定了,但不大白原因. 那些坑1. build.js内里的paths必须跟main.js内里的保持等同. 这个build.js便是r.js运用的设置文件,而main.j

AngularJS与RequireJS集成方案

关于angularjs.requirejs的基础知识请自行学习 一.简单事例的项目目录如下: -index.html -scripts文件夹 --controller文件夹 --- mianController.js --- controller1.js ---controller2.js --directives文件夹 ---mainDirective.js ---directive.js --app.js --router.js --main.js 二.首页 首先你的index.html大概

angularjs+requirejs整合

通过requirejs的配置让angularJS可以正常运行.以下是配置的步骤: 环境需求 require.js angular.js 有了这两文件,就可以进行下一步了,具体将文件放到哪个目录,可以跟项目的目录结构走,无所谓. 配置步骤 首先要配置require.js的入口文件main.js require.config({ //配置angular的路径 paths:{ "angular":"js/angular", }, //这个配置是你在引入依赖的时候的包名 s

angularJS和requireJS和angularAMD

最近因为要用到angularJS开发项目,因为涉及到的静态资源比较多,所以想把js文件通过requireJS来按需加载,这两个框架以前都使用过,但是结合到一起还没有用过,那就试一下,看能否达到目的. requireJS是为了实现js文件异步加载和管理模块之间依赖性的框架,详情请看阮一峰 require.js的用法和RequireJS 中文网这里就不做介绍了. 我们先来创建模版容器index.html <!DOCTYPE html> <html> <head> <t

从Java的角度理解前端框架,nodejs,reactjs,angularjs,requirejs,seajs

[突然领悟] 今天看了一遍reactjs,突然发现和自己一直用的freemarker的宏十分相似, 突然领悟了很多前端吊炸天的概念,框架,特写此文,欢迎批评指正. [nodejs] 官网:https://nodejs.org/ 简介:对前端来说极其重要的一个"框架",简直可以说是开天辟地 类比Java中:JVM 详述: 就前端来说nodejs具有划时代的意义,做前端的没用过nodejs都不好意思说自己是前端, 做后端的没听过nodejs,或者说不出nodejs和java的优缺点,也不是

AngularJS结合RequireJS做文件合并压缩的那些坑

我在项目使用了AngularJS框架,用RequireJS做异步模块加载(AMD),在做文件合并压缩时,遇到了一些坑,有些只是解决了,但不明白原因. 那些坑 1. build.js里面的paths必须跟main.js里面的保持一致. 这个build.js就是r.js使用的配置文件,而main.js就是RequireJS的main文件.在合并压缩时候,build.js文件里面也需要写paths,而且还是跟main.js一样,我很奇怪为什么就不能识别main里面的require.config的pat

Integrating AngularJS with RequireJS

When I first started developing with AngularJS keeping my controllers and directives in separate .js files for better maintainability I ended up including lots of .js files on my pages. This approach has led to some obvious drawbacks. For example, ea