我正在开发一个自定义的轻量级JavaScript库,它将需要在主要浏览器以及众多独立站点上稳定运行,而不会损害现有库或 namespace 或使其受到损害。也许最重要的是,该库将需要轻量级(最大约15k)。

更新为了阐明对如此小的库的需求:这是一种第三方服务,网站可以将其拉入其页面。因为我们无法控制现有的库,速度或页面加载,所以我们需要使所有内容都尽可能轻巧,快速且独立。 15k是仅用于该服务的动态内容访问的库的目标编号。

在这一点上,我的想法是从我可以找到的最浓缩的类似jQuery的基础开始,然后再扩展自定义模块。

所需功能:

  • 处理跨浏览器不一致问题,例如冠军(IE 6 +,Chrome,FF 2 +,Safari 3+)。
  • 事件处理(排队/绑定(bind)/广播)
  • 高效的选择器引擎
  • 链接
  • 带有基本动画的DOM操作
  • 可通过
  • 模块轻松构建和版本控制

    我遇到过EnderJSMicroJS,但是我似乎都找不到很多讨论。在这一点上,我对Ender更加熟悉和感兴趣,因为它似乎可以用7.5k的"The Jeesh"开箱即用地解决上述所有功能。在我的情况下,附加几个软件包只会将其推到10k,这是完美的,因为我只需要几k就能充实任何自定义模块。它还将允许我编写和版本化不同的模块,这些模块可以在构建时合并并压缩到主库中,还可以定义一个唯一的命名空间以将其全部保存并希望对其进行保护。 Ender库的另一个引人注目的部分是它对NodeJS的使用,无论如何我都希望可以使用它。综上所述,我仍然对其他想法持开放态度。

    所以我的问题是:

    是否有人对EnderJSMicroJS有任何经验,或者对我要完成的工作有其他解决方案/方法?我意识到这不是"chatty, open-ended questions"的地方,这不是我的目的。我只是在寻找有关构建轻量级自定义库的最佳方法的建议,而无需重新发明轮子,而是插入可用的最新微库。

    最佳答案

    我最近使用过Ender,但实际上没有任何问题。暂时还没有几个jQuery函数,但是任何精通JavaScript的人都可以规避。特别是考虑到Ender具有与jQuery几乎相同的结构和扩展方式的事实。

    我最近在一个实时站点上使用了Ender,而且很有趣,我使用了来自microjs.com的几个脚本以及自己的函数文件,所有JavaScript的重量都在1.5万左右。使您的整个站点代码的重量大约等于或小于该值并不难。

    除了构建Ender的轻量级版本(例如从Jeesh开始)之外,您可能还需要考虑异步加载,Dustin Diaz提供了一个示例:

    <script src="ender.min.js"></script>
    
    <script>
    $.require('/js/core.min.js', 'core')
    
    $.ready('core', function () {
      $(document).ready(function () {
        $('<p>hello world</p>').appendTo('body')
          .bind('click', function (e) {
            $.require('/js/ajax.min.js', function () {
              $(e.target).css('position', 'relative')
                .animate({
                  left: 500
                })
            })
          })
      })
    })
    </script>
    

    通过这样做,您可以从本质上使原始渲染器更轻巧,并减轻一些负担,但是通常来说,如果一开始就比较轻,那您就可以了。

    您可能还想利用Ender允许您访问的Google封闭编译器来与ender一起编译您的站点代码。

    最后,您可能已经知道,在Ender中也可以执行noConflict,以防万一他们已经有了另一个库。

    在构建和配置Ender时,您可能希望利用ender-wallet的优势,这将为您提供一种API View ,从而允许您删除根本不需要的库。

    热链接的屏幕截图:

    关于javascript - 自定义轻量级JavaScript库: EnderJS and MicroJS,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6501706/

    10-11 00:53