前端模块加载规范AMD与CMD小记】的更多相关文章

AMD代表:requirejs:    CMD代表:seajs:   AMD CMD 代表 requirejs seajs  执行  提前加载,不管是否调用模块,先解析所以模块 提前加载,在真正需要使用(依赖)模块时才解析该模块 优点 速度快 按需解析 缺点 有可能浪费资源 性能比AMD差 写法 define(['./a','./b'],function(a,b){ a.doSomthing(); b.doSomthing(); }) define(function(require,export…
当我写这篇文章的时候,sea.js已经逐渐退出历史的舞台,详细链接.不过任何新事物的出现都是对旧事物的取其精华,去其糟粕,所以了解一下以前模块的加载也是一件好事. js模块化的原因自不比多说,看看HUX同学的js模块加载七日谈就知道了,将的非常详细. 一 .CMD模块加载规范 一个js文件就是一个模块,定义如下:define(factory); factory可以使一个函数,一个对象,或者一个字符串. 1.factory是一个函数 define(function(require,exports,…
JavaSript模块化 在了解AMD,CMD规范前,还是需要先来简单地了解下什么是模块化,模块化开发?     模块化是指在解决某一个复杂问题或者一系列的杂糅问题时,依照一种分类的思维把问 题进行系统性的分解以之处理.模块化是一种处理复杂系统分解为代码结构更合理,可维护性更高的可管理的模块的方式.可以想象一个巨大的系统代码,被整合优 化分割成逻辑性很强的模块时,对于软件是一种何等意义的存在.对于软件行业来说:解耦软件系统的复杂性,使得不管多么大的系统,也可以将管理,开发,维护 变得“有理可循”…
为什么有模块概念 理想情况下,开发者只需要实现核心的业务逻辑,其他都可以加载别人已经写好的模块. 但是,Javascript不是一种模块化编程语言,在es6以前,它是不支持”类”(class),所以也就没有”模块”(module)了. require时代 Javascript社区做了很多努力,在现有的运行环境中,实现”模块”的效果. 原始写法 模块就是实现特定功能的一组方法.只要把不同的函数(以及记录状态的变量)简单地放在一起,就算是一个模块. function m1(){ //... } fu…
最近在看许多React的资料,发现了大部分的项目都是用webpack行模块化管理的工具.这次也是借着写了一个React-Todos的小应用,对webPack最基本实用的功能体验了一番,顺带做个小记录. #为什么用webpack CommonJs与AMD 在一开始,我们先讲一下它和以往我们所用的模块管理工具有什么不一样.在最开始的阶段,Js并没有这些模块机制,各种Js到处飞,得不到有效妥善的管理.后来前端圈开始制定规范,最耳熟能详的是CommonJs和AMD. CommonJs是应用在NodeJs…
模块加载的简单实现 (function(win) { var baseUrl; var paths; var script_cache = {}; var script_queue = []; var setConfig = function(options) { if (!options) { options = { baseUrl: "/", paths: {} }; } if (options.baseUrl) baseUrl = options.baseUrl; if (opt…
前言 主要学习一下四种模块加载规范: AMD CMD CommonJS ES6 模块 历史 前端模块化开发那点历史 require.js requirejs 为全局添加了 define 函数,你只要按照这种约定的方式书写这个模块即可. define(function () { //Do setup work here return { color: "black", size: "unisize" } }); //my/shirt.js now has some d…
运行和编译的概念 编译包括编译和链接两步. 编译,把源代码翻译成机器能识别的代码或者某个中间状态的语言. 比如java只有JVM识别的字节码,C#中只有CLR能识别的MSIL.还简单的作一些比如检查有没有粗心写错啥关键字了啊.有啥词法分析,语法分析之类的过程. 链接,是把编译生成的二进制文件,组合成为一个系统可以执行的可执行文件. 运行: 把编译出来的可执行文件代码在系统中执行的过程,此时被装载到内存中. (代码保存在磁盘上没装入内存之前是个死家伙.只有跑到内存中才变成活的). 运行时类型检查就…
1 在html文件中,通过require方式来加载指定的入口文件:2 然后通过正则表达式来匹配入口文件中的所有require的依赖文件:注意,此时入口文件已加载完毕,不过,还没执行而已.3 之后逐一通过script来添加到dom中,进行加载所有依赖的js文件:4 等所有依赖的js文件都加载完毕,再执行入口文件:5 执行入口文件的关键方法是:Module.export方法中的var result = self._factory.call(window, _require, module.expor…
本文原文地址:http://trock.lofter.com/post/117023_1208040 . 引言:  在前端开发领域,相信大家对AMD/CMD规范一定不会陌生,尤其对requireJS.seaJS等模块加载器更是耳熟能详,不少网站目前也正在使用.requireJS.seaJS的出现,极大程度的促进了前端模块化编程方式的发展,前端的代码风格趋近标准化.而两者的共同特点都是运行在浏览器端的模块加载器,可以智能解析模块依赖关系,并自动加载相关模块.而我们今天介绍的是服务端的AMD/CMD…