如何管理构建自己的 js lib

牢骚

javascript 不愧是10天写出来的渣语言( js 的拥护者不要喷我)

唯一的优势就是命好

各大浏览器厂商一个不服一个, 各个派系拥簇的皇子都被干死了, 于是这个渣语言莫名其妙的登上了皇位, 一统 web 开发的天下.

可是他渣语言的本质依然没有改变.

比如我今天要说的渣地方在于没有 import

遇到的问题是, 我想建立一个自己的 javascript library.

可以自行 google, 网上的答案没一个靠谱的,无论是 http://stackoverflow.com/ 还是任何地方都没有

我的要求是能够类似 python 的 import, 但是目前的实现方案都有各种问题, 我们一一来说

一个大 js

其中一个方案还挺流行的:

比如这里说的:http://stackoverflow.com/questions/16279519/how-to-create-javascript-library-of-self-written-functions

你需要建立一个 mylibrary.js 文件, 然后将你自己写的 function 一一写在里面

用这样的方式来隔离名字空间

var myLibrary = {

    makeStartRefresher: function(refresh, refreshTime) {
    //function code
    },
    readData: function(address){
    //function code
    }
    ...
}

这样来使用:

myLibrary.makeStartRefresher(refresher, 1000);

我们先说好处吧:

  • 确实还挺省事的, 反正不停地往里面添加 function
  • 解决了依赖的问题, 如何自己的 function 之间有相互依赖, 那根本不是问题. 因为我已经整整个的粗暴的弄过来了

坏处

  • 即使我只用其中一个简单的函数, 我也必须要整个的弄过来, 好粗暴简单. 用户必须要加载一个很庞大的包(如果我以后写的很庞大的话)
  • 泄露我的 library, 因为依赖解决不了, 我只有整个的弄过来, 别人已经拿到我的 library 了.

模块化

http://www.v2ex.com/t/157932

基本上就是无解

boom11235 说的好:

前端模块化一直是个麻烦的问题,也有很多相关的解决方案出来,requirejs,seajs,duo,webpack,spm等。模块粒度过细,如果不打包或者服务器做combo,会导致请求过多,性能不好,一般不考虑在线上直接使用加载多个的方案,而combo和打包则需要考虑缓存失效问题,稳定下来的模块或者不怎么更新的第三方模块和经常变动的模块需要分开处理。细化下去,还有各种各样的细节问题,楼主请自行挖掘。

划分的过细吧, 一堆 http 请求, 你的网站用户能等得了么?

不划分吧. 各种依赖, 一个巨大的 js 文件, 你的网站用户等得了?

再者一说了, 各种 js 的包管理工具能解决这个问题? 不在一个频道说话嘛…

看一下这个, 知道 nodejs 和 npm 的水有多深么? https://github.com/fouber/blog/issues/2

把人都吓死了.

我们为什么要为一个不成熟的语言和技术架构来买单? 人生苦短, 我用 python !