博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
从 RequireJS 到 SeaJS(5)
阅读量:5248 次
发布时间:2019-06-14

本文共 1545 字,大约阅读时间需要 5 分钟。

这是该系列的最后一篇。

作为模块加载器,最核心的是:模块书写格式。从表层看,RequireJS 和 SeaJS 最大的差异就是各自默认推荐的模块书写格式不同。

由于 RequireJS 支持 Simplified CommonJS Wrapper, 一定程度上可以说 SeaJS 是 RequireJS 的一个子集。甚至可以认为:SeaJS 是 RequireJS 中的 The Good Parts.(RequireJS 作者肯定不会同意,不过从社区中可以看出很多人很喜欢 Simplified CommonJS Wrapper 格式,这与 SeaJS 遵循的 Wrappings 基本一致。)

功能差异

从功能上讲,RequireJS 很丰富。下面这些功能是 RequireJS 有,而 SeaJS 没有的:

  1. domReady 插件
  2. i18n 插件
  3. order 插件
  4. 通过 r.js 支持 packages
  5. 支持 Web Worker
  6. 支持 Rhino

这些功能,SeaJS 现在没有,以后也不打算提供。因为 SeaJS 的定位是:浏览器端的模块加载器

SeaJS 也有一些非常好用的功能,RequireJS 却没有的:

  1. 映射插件,可用来做 
  2. 通过 map 配置,对版本和时间戳提供更方便的管理
  3. 通过 preload 配置,可以预加载模块
  4. 更开放的插件机制,并默认提供 plugin-json 和 plugin-less
  5. 支持 css 文件的加载
  6. 由于延迟执行机制,可以很便捷地探测 404 等错误请求

场景差异

在使用场景上,两者之间的差异不小。

RequireJS 的例子一直是单项目,类库和业务脚本都放在一起:

project-- scripts   -- require-jquery.js   -- main.js   -- sub      -- some.js   ...-- project.html

 

这种使用场景下,RequireJS 和 SeaJS 半斤八两,彼此彼此。

但上面的组织方式不是 SeaJS 推荐的。SeaJS 推荐通用类库独立存放:

libs--seajs/1.0.2/sea.js--jquery/1.6.4/jquery.js--underscore/1.2.1/underscore.js...project-assets-- main.js-- sub   -- some.js...project-- project.html

 

这样,不同项目之间,可共用 libs. libs 的版本维护也很方便。比如:在 requirejs 里,如果用到 jquery, 当 jquery 更新时,得重新打包 require-jquery.js. 在 SeaJS 里则不需要更新 sea.js, 只需要更新配置中的 alias.

SeaJS 很适合大型网站,伸缩性很好,能适应的场景很广。这受益于 SeaJS 的广义定位:浏览器端的 NodeJS.

写在最后

RequireJS 我不是很喜欢,主要是因为其定位不纯粹,以及 API 在我看来不够优雅。但 RequireJS 的作者依旧是很让人敬佩的一个牛人。从在 CommonJS 积极讨论,到非常有激情地开发 RequireJS,以及后续坚持不懈布道,这些工作,看起来不难,实际上非常不易,很佩服这份激情、执着和毅力

作为 SeaJS 的作者,我尽可能公平公正评价 RequireJS. 如果上面的文字有失偏颇,还希望你热心指正,欢迎所有真心诚恳的交流讨论。

(完)

 

感谢玉伯!!!!

转载于:https://www.cnblogs.com/zhepama/articles/3079504.html

你可能感兴趣的文章
STL uva 11991
查看>>
MY SQL的下载和安装
查看>>
自定义OffMeshLink跳跃曲线
查看>>
寄Android开发Gradle你需要知道的知识
查看>>
简述spring中常有的几种advice?
查看>>
牛客网——华为机试(题21:简单密码)(Java)
查看>>
学习Redux之分析Redux核心代码分析
查看>>
ABAP 创建和调用WebService
查看>>
C# 实例化顺序
查看>>
CSS水平垂直居中总结
查看>>
委托又给我惹麻烦了————记委托链的取消注册、获取返回值
查看>>
ps怎么把白色背景变透明
查看>>
gource 安装教程
查看>>
字符串转 Boolean 的正确方式
查看>>
给你的网站404页面加上“宝贝寻亲”公益页面
查看>>
整理推荐的CSS属性书写顺序
查看>>
协程, IO阻塞模型 和 IO非阻塞模型
查看>>
NSLog 和printf区别
查看>>
NSArray 与字符串
查看>>
Floyd(稠密图,记录路径)
查看>>