Skip to content
This repository has been archived by the owner on Aug 15, 2018. It is now read-only.

调试 CommonJS 源码

偏右 edited this page Jan 29, 2015 · 2 revisions

spm3 一个较大的改变是源码书写规范从 CMD 变为 CommonJS ,带来的好处是和社区打通,更接近 nodejs 的开发体验。坏处是 CommonJS 的源码不能像 CMD 一样在浏览器里直接加载,从而影响线下的调试体验。

CommonJS 和 CMD 写法上最大的区别就是 define(function(require, exports, module) {}) 的包裹,只要在调试阶段无缝的加入这个包裹,就可以比较方便的加载调试了。我们按这个思路探索并使用了以下几个方案:

1. spm doc

使用 spm doc watch 在模块开发中进行调试,适合于标准 spm 模块的调试开发。这个方式相对比较成熟,也是官方文档中默认推荐的模块调试方案。

2. spm-server

使用 spm-server 动态包裹 define 或动态打包为 standalone 模块,适合于项目中的 CommonJS 调试,具体方式可以点过去看它的文档。

3. seajs-wrap

引入通过 seajs 插件 seajs-wrap 直接引入 CommonJS 模块,原理是在浏览器端包裹 define,适合于不想使用本地动态服务的调试方案,缺点是受同源策略限制不能跨域使用。

4. serve-spm

使用 serve-spm 来动态包裹 define 的中间件,兼容于 express 和 koa。1 和 2 方案其实后面都依赖这个库,适合团队搭建自己的调试方案。


以上是在 spm 开发体系下调试 CommonJS 的所有方案,大家可以根据自己的情况挑选合适的方案,如果都不能满足,欢迎自行探索和给我们提建议。