这次内容是我比较感兴趣的部分,即所谓模块化支撑。通过他们,Ringo提供给了相当好的功能解偶机制(node.js的npm也源于node.js中类似机制的实现)。我的计划是,利用这个机制在javaweb上仿制wordpress的plugin插件功能。
在研究过程中,主要关注package以及module在require时的查找路径方式。
ringo的模块与包的实现与node.js以及vertx实现同源,common-js标准。其module依赖cj-module1.1标准,其package依赖cj-package1.0标准。
这里偷个懒,在网上看到有个同学已经把官网的说明翻译过来了。引用其中的大部分内容:http://www.skyatlas.net/?s=ringojs
Modules in Ringo
Ringo实现了CommonJS Modules1.1规范,在Javascript世界中,存在多个可用Module patterns,但是在Ringo的世界里,我们只用这个:
- 每一个文件就是一个模块,不需要特别的语法申明
- 任何function或者其他属性,只要你在module(文件)中,attatch到exports对象上,他们就被导出(让外部可见),成为这个模块的导出属性
- require(‘foobar’)会返回一个拥有模块所有exposed属性的对象,代表foobar模块
剖析Module
In Ringo,每一个javascript文件都被当做是一个mo