javascript 模块加载器——coolie
1、javascript模块化
javascript 模块化是随着 javascript 的工作量逐步增加而产生的必然结果,近年来,javascript 模块化已经诞生了部分标准,也已经在下一代的 javascript 官方标准里提出了草案。
目前,主流的模块化规范是 AMD、CommonJS等,他们良好的规范,优雅的接口设计,合理的设计模式被很多前端开发工程师所接受,并且也有很多模块化加载器也支持他们,例如 requireJS、seaJS等。
2、javascript模块加载器
2.1、coolie 优势
coolie (苦力)是作者在近期书写的一款模块加载器,相比市面上的其他模块加载器,有以下优势:
轻量,良好的身材,仅支持高级现代浏览器,没有繁多的路径别名,和 NodeJS 一样,仅支持本地模块。
小巧,尽量少的接口(2个接口)和配置(2个配置)。
优雅,合理的接口和配置。
安全,尽量不侵入全局变量(2个,分别是 define 和 coolie),放心编程。
方便,配套的发布构建工具,为之量身打造。
省心,一键构建,无须人工干预,没有繁多和难以理解的构建配置。
2.2、本地开发环境
开发环境下,不显式模块ID和模块依赖,模块路径必须写完整:
模块入口:./index.js
// 开发环境不能写模块ID define(function (require){// 模块依赖,不能省略文件后缀var num = require('./abc.js');var text = require('text!./def.txt');alert(num + text);// => "123这里是一串纯文本" });
依赖模块:./abc.js
// 开发环境不能写模块ID define(function (require, exports, module){// 模块导出module.exports = 123; });
依赖文本:./def.txt
这里是一串纯文本
2.3、生产环境下:
发布之后,模块入口:./index.js?v=abc123
define('0', ['1', '2'], function (a){var b = a('1');var c = a('2');alert(b+c);// => "123这里是一串纯文本" }); define('1', [], function (a, b, c){c.exports = 123; }); define('2', [], function (a, b, c){c.exports = '这里是一串纯文本'; });
2.4、coolie配置
coolie.config({// * 入口模块的基准路径,也可以写绝对路径// `base`是相对于`coolie.js`所在的路径的,因此只要`coolie.js`路径不变,配置文件无论被哪个文件引用都没关系// 可选,默认为`coolie.js`所在的路径base: './',// * 模块文件版本,用于清除文件缓存,常用于发布到生产环境上,具体细节查看`coolie`发布工具// 比如入口文件是`index.js`,那么实际请求的路径为`/path/to/index.js?_=abc123`// 可选,默认为空version: 'abc123' });
注意点
base
参数配置,与sea.js
有些出入,请注意。base
参数是相对于coolie.js
所在路径的。base
参数也是入口模块的相对路径。version
版本号在开发环境下可以为空,构建时会自动更新版本号以便清除生产环境下的缓存。
2.5、coolie 使用
// 运行入口模块路径,注意这里没有回调 // 模块路径相对于`config.base` coolie.use('./index.js');
注意点
必须手动调用
.use()
方法。参数是入口模块路径,不是入口模块名称。
为了配置文件的重用性,当
coolie.js
所在的script
指定了data-main
属性,内联属性优先级最高,因此.use
参数此时可以为空。 如:<script src="./coolie.js" data-main="./index2.js"></script>
,此时入口模块就为相对于config.base
的./index2.js
文件。 此种情况会在控制台输出提示。
3、模块构建工具
3.1、介绍
配套的模块构建工具 coolie(苦力),已在 npmjs 官方上线。作者之前也使用过 spm3 打包,感觉还是太复杂了,后来自制了 apb,再后来就索性自己写了一整套东西,包括模块加载器和模块构建工具。尽量保持它们的良好身材,只做它们擅长和分内的事情。
3.2、优势
相比其他构建工具,他有以下优势:
优雅,大众化和易理解的API。
易用,全部自动生成配置文件,每一步都有详细说明。
安全,不修改任何源文件。
极致,全部模块,压缩所有可压缩的内容,包括模块ID、模块依赖路径、局部变量等。
3.3、特点
更多API说明,请移步 github 项目,链接如下。
3、链接
coolie模块加载器:https://github.com/cloudcome/coolie
coolie模块构建工具:https://github.com/cloudcome/nodejs-coolie
javascript 模块加载器——coolie相关推荐
- javascript模块化、模块加载器初探
最常见网站的javascript架构可能是这样的: 一个底层框架文件,如jQuery 一个网站业务框架文件,包含整站公用业务模块类(如弹框.ajax封装等) 多个业务文件,包含每个具体页面有关系的业务 ...
- Javascript模块加载捆绑器Browserify Webpack和SystemJS用法
Javascript模块加载捆绑器Browserify Webpack和SystemJS用法 转自 http://www.jdon.com/idea/js/javascript-module-load ...
- seajs引入html,SeaJS:一个适用于 Web 浏览器端的模块加载器
什么是SeaJS? SeaJS是一款适用于Web浏览器端的模块加载器,它同时又与Node兼容.在SeaJS的世界里,一个文件就是一个模块,所有模块都遵循CMD(Common Module Defini ...
- angularjs源码阅读-1-模块加载器
angularjs源码-setupModuleLoader 背景和开始 publishExternalAPI引入setupModuleLoader setupModuleLoader下面的逻辑 ens ...
- linux ipv6模块,有关Linux ipv6模块加载失败的问题
有关Linux ipv6模块加载失败的问题 同事一个SUSE11sp3环境配置ipv6地址失败,提示不支持IPv6,请求帮助,第一反应是应该ipv6相关内核模块没有加载. 主要检查内容: ipv6地址 ...
- JS框架设计之加载器所在路径的探知一模块加载系统
1.要加载一个模块,我们需要一个URL作为加载地址,一个script作为加载媒介,但用户在require是都用ID,我们需要一个将ID转换为URL的方法,思路很简单,强加个约定,URL的合成规则是为: ...
- javascript 异步模块加载 简易实现
在javascript是没有类似java或其他语言的模块概念的,因此也不可能通过import或using等关键字来引用模块,这样造成了复杂项目中前端代码混乱,变量互相影响等. 因此在复杂项目中引入AM ...
- webpack中loader加载器(打包非js模块)
通过loader打包非js模块 我这儿用VScode为编辑器 在实际开发过程中,webpack默认只能打包处理以.js后缀名结尾的模块,其他非. js后缀名结 尾的模块,webpack 默认处理不了, ...
- AMD加载器实现笔记(四)
继续这一系列的内容,到目前为止除了AMD规范中config的map.config参数外,我们已经全部支持其他属性了.这一篇文章中,我们来为增加对map的支持.同样问题,想要增加map的支持首先要知道m ...
- js css加载器,webpack的CSS加载器的使用
什么是loader loader用于转换应用程序的资源文件,他们是运行在nodejs下的函数,使用参数来获取一个资源的来源并且返回一个新的来源(资源的位置),例如:你可以使用loader来告诉webp ...
最新文章
- python怎么导入同一包的模块
- 十九、约束作用及常见约束
- axios基础和封装
- 【PyQt5】QT designer + eclipse 集成开发
- idea无法启动Tomcat
- core和node开发小程序_node+微信小程序实现商城案例
- 无法启动程序因为计算机中丢失dev,DevUseAnalyzerTask.dll
- rvm,ruby的安装
- 解决SAP PI Cluster系统故障
- Android下载文件,如何获取实际的文件名
- Adobe Creative Cloud 不能加载APP导致卸载ps失败 解决方案
- UI设计师求职中常被问到的13个面试题及答案总结
- 《伸手系列》之arm架构服务器安装kubernetes
- PDF打开时显示“正在准备文档以供阅读
- 2016计算机技术操作考试题,2016年计算机二级《VB》上机操作题(1)
- debian ELK6.2.2安装教程
- 名帖301 刘墉 行书《自作诗卷》
- VMware 笔试题目:猫和老鼠玩象棋
- Linux基础入门-2
- E-Prime2.0安装问题