Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Sea.js 插件整理 #780

Closed
lifesinger opened this issue Jun 16, 2013 · 5 comments
Closed

Sea.js 插件整理 #780

lifesinger opened this issue Jun 16, 2013 · 5 comments
Labels
Milestone

Comments

@lifesinger
Copy link
Member

目前 Sea.js 自带的插件可分为两组,一组是上线后 runtime 时真正需要的:

[已有] plugin-combo.js   -- 请求合并插件
[已有] plugin-flush.js      -- 请求调度插件
[已有] plugin-style.js      -- 增加 seajs.importStyle 方法,让 JS 模块可内置 css 样式
[设想] plugin-health.js   -- 检测模块异常信息

其他插件是开发或线上调试时需要的:

[已有] plugin-debug.js          -- 调试插件
[待整合] plugin-nocache.js       -- 强制加时间戳插件
[待整合] plugin-warning.js    -- 同一模块多版本共存时,给出警告信息
[已有] plugin-text.js              -- 开发时用来直接加载文本(模板、json)文件
[待整合] plugin-handlebars.js    -- 方便 Handlebars 的开发
[待考虑] plugin-coffee.js      -- 方便直接开发 CoffeeScript 脚本
[待考虑] plugin-less.js      -- 方便直接开发 LESS 样式

其中

  1. plugin-health.js 需要仔细规划,可以整合多版本检测、循环依赖检测、模块加载异常等功能,提供出数据接口给 monitor.js 采集并发送到服务器。
  2. plugin-debug.js 需重新开发,考虑 调试方式优化 #751 调试方式优化 以及 当前页面模块关系图工具 #768 模块关系图,同时整合 nocache 插件,并在 debug 为 true 时,输出 console 信息。这个做好了,将会极大方便开发和调试。

这样,Sea.js 默认只内置 runtime 版本的插件:

plugin-combo.js
plugin-flush.js
plugin-style.js
plugin-health.js

其他插件都从 Sea.js 的库中移除出去,各自变成独立库,包括

plugin-debug.js    -- 需要好好考虑功能设计
plugin-text.js        -- 提供接口可扩展出对 handlebars 等模板引擎的支持

coffeeless 等插件,则完全交给社区去做。

对于 Sea.js 本身来说,要好好考虑以下几点:

  1. 插件的启动方式。目前可以通过 config 中的 plugins 来配置,也可以通过 script 标签直接引入插件来激活,或通过 URL 参数中的 sea-xxx 来启动。需要好好想想究竟利弊,尽量能进一步简单。
  2. 插件的升级。runtime 版本的插件可以与 sea.js 共版本。非 runtime 时需要的独立插件升级时,需要考虑升级配置方案。这会对插件的启动方式带来影响。

大家有什么建议?插件这一块对 Sea.js 蛮重要。

@lifesinger
Copy link
Member Author

from #768

模块关系图

debug 插件可以具备模块关系图功能:

  1. 展现出当前页面所有 CMD 模块及其依赖
  2. 通过连线展现出模块之间的依赖
  3. 如果某个链路存在循环依赖,红色警告之
  4. 如果某个模块存在多个版本,黄色警告之

实现思路:

  1. 通过 seajs.cache 拿到所有模块信息
  2. 通过 module.dependenciesmodule._waitings,获取模块的依赖和被依赖信息
  3. 以上两步已经得到了元数据
  4. 分析并展现出来(主要工作量)

@lifesinger
Copy link
Member Author

from #751

调试方式优化

目前

seajs.config({
  debug: true
})

上面的 debug 状态只起到两个作用:

  1. seajs.log 信息会输出
  2. 插入的 script 元素会保留,不会自动删除

通过 url 上添加 ?seajs-debug 的方式,则会自动加载 plugin-debug 插件。

目前 plugin-debug 插件需要通过配置本地 http 可访问的 sea-config.js 来完成各种功能,比如

  • 解 combo(这个目前通过 combo 插件的配置来完成)
  • 将压缩版本映射到 debug 版本

这一块使用成本偏高,很多同事还不知道可以这么用,知道这么用的,也略嫌麻烦而不怎么使用。

如何让调试更方便,还需要仔细考量下。欢迎各种建议。

@Rayi
Copy link
Contributor

Rayi commented Jun 16, 2013

shim插件已经没有了么?现在默认使用alias就行了么?

@antife-yinyue
Copy link
Contributor

@Rayi #744

@lifesinger
Copy link
Member Author

debug 插件的后续完善放到: seajs/seajs-debug#1

health 插件的后续完善放到: seajs/seajs-health#1

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

3 participants