spm作用及使用

虽然说,我们需要的弹框效果已经实现了,但是,却是不能直接上线使用的,为何?

我们看下其http请求,如下截图:
http请求们 张鑫旭-鑫空间-鑫生活

哎呀呀,这么多JS请求,吓着乌索普脆弱的小心脏了。虽然,seajs模块化的书写提高了维护性,但是,也带来了前端性能的问题!如何解决?

现在,就是救世主spm出场的时候了,spm → seajs package manage?

spm可以合并并压缩seajs中的各个模块JS文件。还是上面的弹框demo页面,我们在地址后面增加”?spm=1“,如下图所示,访问之:
spm下seajs模块合并并压缩后的demo页面 张鑫旭-鑫空间-鑫生活

再次刷新页面,查看HTTP请求数,额哈哈,原本6个JS请求,现在合并成1个啦:
只有一个JS相关的HTTP请求截图 张鑫旭-鑫空间-鑫生活

命令行中如下代码即实现效果:

spm build main.js --combine --app_url zxx

然后,main.js中所用到的相对路径require的所有模块就会合并并压缩,新生成的文件(如果没有指定输出路径)会是__build/main.js
smp合并并压缩main.js命令行中运行 张鑫旭-鑫空间-鑫生活

spm的安装与使用
spm安装与使用github上有介绍。大致如下:

安装
先安装node和npm, http://nodejs.org/#download;然后安装spm, 如下命令行代码:

$ npm install spm -g

smp的安装进度示意图 张鑫旭-鑫空间-鑫生活

build[option]模块
压缩一个JS模块:

$ spm build a.js

压缩并合并:

$ spm build a.js --combine

压缩并合并所有独立模块(包括绝对路径的):

$ spm build a.js --combine_all

清除创建的文件:

$ spm build --clear

通过定义build-config.js可以做更多的事情:
build-config.js:

module.exports = {
  "base_path": "/path/to/libs/",
  "app_url": "http://test.com/js/app/",
  "app_path": "/path/to/app/",
  "loader_config": "path/to/init.js"
};

更多信息,可以调用:

$ spm help build

以上为我觉得常用的。这里推荐一篇关于smp使用的文章:seajs的spm使用摸索。这篇文章对spm各个参数都有解释,另外,还提供了自定义输出路径等参数的使用示例。可以说是对github上使用的很好补充。

你可能感兴趣的:(spm作用及使用)