Commonjs,CMD,AMD和cortex介绍
这里只是一些入门级别的认识,深入一些的可查看我的阅读笔记模块加载系统
Commonjs 规范
commonjs 是服务器模块的规范,nodejs实现了规范
单独的文件就是一个模块,每个模块拥有自己的作用域;
通过
module.exports
来将对象和方法抛出去;通过
require
来引入,就可以访问挂载的对象,并且直接调用变量;
每个模块
- 每个都有个 module 对象,这个对象不是全局变量,而是本地变量
- exports = module.exports,可以放弃使用 exports,只使用 module.exports
CommonJS就是个同步加载方案,因为服务器一般文件都在本地硬盘,所以加载比较快
AMD 规范
AMD 是异步模块的定义,模块的加载不影响后面的语句,所有的依赖的语句,会被放在一个加载完才执行的回调函数中,AMD 推崇依赖前置
require(['zepto'],function($){
$('body');
});
参考了阮一峰老师的文章
##Requirejs
根据 AMD 实现了异步的加载,并且管理了模块的依赖性
简单使用就是去官网下载下,然后 data-main 指定主入口模块
主模块的代码遵循 AMD:
require([],function(){})
加载的模块的写法:
define([],function(){})
参考了阮一峰老师的文章
Cortex
张颖老师的cortex,是一个前端解决方案,类似于 npm,提供了模块的管理,加载,本地调试。目前用在点评网的所有的前端项目上
###思想
将多余的事情交给框架
让前端工程师注重在业务逻辑上
解决公共模块版本问题
Tip
- 一个页面可以通过引入多个 facade 来引入多个项目的前端资源,这样来解耦了页面
- 这些的模块依赖是在服务器端已然直销并且可以拼装出来了,通过一些算法进行合并和修饰
- cortex 通过 Semver 来区别进行版本的管理,来看是否兼容来决定加载几个依赖的,nodejs 是只要依赖的就加载,maven 是只加载最新的,都不是最优实现
- cortex 将静态资源统一加上了版本号来让 cdn 区分是不是该去拿最新的,当发现要更新时,cdn 会与我们的静态服务器进行通信,来拿取。
- 依赖树的信息通过 neocortex-4j 来吐到页面上,可以并行加载
- combo 的好处在于一个请求把所有的数据拉回来,其实就是这个请求打到 cdn 上,cdn 发现没有这个结果,就回源,打到我们的服务器上,我们的服务器就会去拼装 js
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 981909093@qq.com
文章标题:Commonjs,CMD,AMD和cortex介绍
文章字数:695
本文作者:泽鹿
发布时间:2019-08-28, 16:45:23
最后更新:2019-09-02, 14:33:06
原始链接:http://panyifei.github.io/2019/08/28/前端技术/js/框架以及规范/模块引入/Commonjs,CMD,AMD和cortex介绍/版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。