说实话, 前端开发是一个令人头痛的事情.

nodejs出现了很久了, 一直不是很习惯用nodejs, 当初刚出来的时候, 就下载了express, 想搭建个网站, 结果不是我的菜, 愣是用的不习惯,也就搁置了很久.

直到发现了kissy, aliceui.org, 淘宝支付宝系的前端js框架和css解决方案.

先说kissy, 这东西用在淘宝上, 实际上就是淘宝自己的jQuery+css框架, 功能已经有目共睹了, 淘宝的页面在各种浏览器上显示还是挺一致的.

再说aliceui, 其实应该叫做alice, 是支付宝的前端css解决方案, 是arale的子集.

然后再提到seajs, 现在由淘宝和腾讯的人在维护这个项目.seajs简单来说, 就是类似与labjs, requirejs, labjs是可以动态载入js文件, 然后延迟将js功能加载到内存的工具.

seajs和requirejs类似, 但是seajs不仅仅有labjs的功能, 而且可以加载模块.

实际上来说seajs有了自己的生态系统. 只要按照seajs约定的CMD( 通用模块定义?)来开发js模块, seajs就可以动态加载.

模块的名字为good.js, 只需要seajs.use('good'), 不需要添加扩展名.js.

回头再说aliceui, 现在aliceui自己说, 有了一个CMD的生态圈, 意思是aliceui, 在css解决方案上, 使用了类似于seajs的CMD规范.

它使用的是@import('good'), 最后导入的是good.css而已.

另外, aliceui有自己的一套css的class的命名规范. 具体可以到aliceui.org去看看. 注:aliceui.com是以前的域名, 现在估计已经挂了.

然后再要提到的是spm了, 类似于npm.

前面说了, seajs要做自己的生态系统, 实际上说seajs是想做浏览器端js的nodejs, 然后按照CMD规范开发的模块都使用spm来管理(类似于nodejs的模块使用npm管理是一样的)

一. seajs的简单使用

首先安装nodejs, 到官方网站下载nodejs, 直接安装

然后如果是linux, 应该需要自己装npm, windows版的是自带npm的.

然后再安装seajs, 方法是使用npm, 在命令行下输入命令:

npm install seajs -g #输入-g是装到全局,我的理解, 因为我装stylus的时候没有使用-g参数, 结果stylus就装到我运行命令行程序的那个目录里了. 在 C:\Documents and Settings\Administrator\Application Data\npm\node_modules 这个文件夹里没有stylus. stylus命令也用不了了.

注意, 装好nodejs和npm之后, 需要设置环境变量, 设置 NODE_PATH=C:\Documents and Settings\Administrator\Application Data\npm\node_modules

至于seajs的使用教程: 给几个链接, 再自己百度吧

高富帅seajs使用示例及spm合并压缩工具露脸 http://www.zhangxinxu.com/wordpress/2012/07/seajs-node-nodejs-spm-npm/

JavaScript模块化开发库之SeaJS http://www.cnblogs.com/snandy/archive/2012/03/30/2423612.html

以上链接有实例, 可以好好看看.

二. spm的简单使用

这个是我要重点说的.

因为aliceui也是使用spm来管理的, 可以使用spm来初始化一个seajs模块, 开发完之后, 可以使用spm来压缩js, 压缩css, 把几个js打包到一个js文件, 把几个css打包到一个css文件, 然后还可以使用spm将自己开发的seajs模块, 发布到seajs.org的网站上, 然后在别的地方又可以下载下来, 或者给别人使用.

spm还可以将自己开发完的js模块, 发布到自己的服务器上, 通过ssl账号上传到服务器, 文档是这么说的, 具体我没有试过.

1. spm的安装

使用命令 npm install spm -g 装到nodejs全局

然后需要安装spm的几个子命令, nodejs叫plugin

安装方法很简单,

npm install spm-init   # 一定要装

npm install spm-build # 一定要装

npm install spm-doc   # 一定要装, 这个很好

npm install spm-publish  # 这个命令发布你的模块到seajs.org, 必须注册seajs.org网站用户

npm install spm-deploy  # 这个命令应该是ssh发布到服务器

或者在spm装好了之后, 使用

spm install init

spm install build

spm install doc

spm install publish

spm install deploy

其实这些init, build相当于spm的插件或者说子命令

2. spm使用

这个可以先看 aliceui网上的 构建模块和样式库: http://aliceui.org/docs/build.html

2.1下面我从零开始说说一个模块和css的建立.

假设模块叫 box,

那么到你的项目目录里, 使用命令行方式进入

新建模块box: 使用命令

md box  #创建box文件夹

cd box # 进入box文件夹

spm init # 调用spm的init子命令, 在box文件夹里初始化创建一些文件, 这个命令是使用交互提问的方式来初始化的, 不想回答的话就直接回车, 它自己有默认值, 括号内的就是

交互提问如下:

  1. C:\box>spm init
  2. Running "init:C\:\Documents and Settings\Administrator\.spm\init\cmd" (init) tas
  3. k
  4. This task will create one or more files in the current directory, based on the
  5. environment and the answers to a few questions. Note that answering "?" to any
  6. question will show question-specific help and answering "none" to most questions
  7. will leave its value blank.
  8. Please answer the following:
  9. [?] Project name (box)    #直接回车, 因为spm会使用你的目录名字作为模块名字, 比如这里的box
  10. [?] your CMD family dreamteam  # 输入dreamteam, 回车, 这个是你自己的CMD生态圈家族样式, 因此用你的公司的名字或者项目代号即可
  11. [?] author huyoo # 作者的名字, 这里写我自己
  12. [?] Version (1.0.0) # 版本直接回车, 或者输入一样的格式比如0.0.1,回车
  13. [?] Description (The best project ever.) the box module #输入the box module, 回车, 模块的描述
  14. [?] Project git repository (git://github.com/Administrator/box.git) # 这里直接回车, 可见这个spm不是很智能, 只知道用电脑当前登录用户的名字
  15. [?] Project homepage (https://github.com/Administrator/box) # 直接回车, 其实我觉得应该用上面输入的author那么作为这里的Adminitrator的替换
  16. [?] Licenses (MIT) GPL #默认是MIT, 这里给修改为GPL
  17. [?] Do you need to make any changes to the above before continuing? (y/N) #大写的N是默认的, 也就是说你不需要再修改上面的信息了.不需要修改就直接回车
  18. Writing .gitignore...OK # 这个是给你自己的git建库用的, git init(要装git命令, 这个不是nodejs的包)
  19. Writing .travis.yml...OK
  20. Writing HISTORY.md...OK
  21. Writing README.md...OK
  22. Writing examples/index.md...OK
  23. Writing package.json...OK
  24. Writing src/box.css...OK
  25. Writing src/box.js...OK
  26. Writing tests/box-spec.js...OK  #以上是spm创建的初始化的几个文件. 主要的东西在src目录下, 用你的模块名创建的 box.js和box.css
  27. Initialized from template "cmd".
  28. Done, without errors.

多说几句, 这几个文件是可以修改的, 不要傻里傻气的, 但是不是box创建完毕之后, 才去修改.

实际上每个模块都是通过一个文件夹中的模板来创建的, 这个模板中只提供了你的模块名字作为替换.

这些模板放在C:\Documents and Settings\Administrator\.spm\init\cmd\root 文件夹里, 可以去看看是不是. 这几个模板文件真的是可以修改的, 有时候还必须得修改, 这个放在后面说.

2.2 好了现在, box初始化完毕了,那么可以试试spm build 命令了:

  1. C:\box>spm build
  2. Task: "clean:build" (clean) task
  3. Task: "spm-install" task
  4. Task: "transport:src" (transport) task
  5. transport: 2 files
  6. Task: "concat:css" (concat) task
  7. concated: 2 files
  8. Task: "transport:css" (transport) task
  9. transport: 2 files
  10. Task: "concat:js" (concat) task
  11. concated: 4 files
  12. Task: "copy:build" (copy) task
  13. copied: 1 files
  14. Task: "cssmin:css" (cssmin) task
  15. file: .build/dist/box.css created.
  16. Task: "uglify:js" (uglify) task
  17. file: ".build/dist/box.js" created.
  18. Task: "clean:dist" (clean) task
  19. Task: "copy:dist" (copy) task
  20. copied: 4 files
  21. Task: "clean:build" (clean) task
  22. cleaning: .build...
  23. Task: "spm-newline" task
  24. create: dist/box-debug.css
  25. create: dist/box-debug.js
  26. create: dist/box.css
  27. create: dist/box.js
  28. Done: without errors.

也就是说spm build 创建了一个叫做dist的文件夹,  也就是发布用的文件夹. 这个其实没什么意思, 就是创建了box.js, box.css, 这俩是压缩版的, 然后带-debug后缀的是没有压缩版的, 以便前端开发这可以在浏览器中调试查阅.

2.3 build试过, 就轮到 spm doc了

这个是极好的东西, 哈哈.

spm doc watch --port 8080 # 这个命令在本机8080端口启动了一个web服务, 打开 http://localhost:8080/  就可以看到你的box模块的文档了, 这个文档由box/readme.md 这个文件生成, 可以打开readme.md这个markdown格式的文本文件来看看.

当然, spm doc watch 命令不带port也能运行, 因为它有一个默认端口是8000, 上面是为了让大家明白, 当你的8000端口被其他应用占用的时候, 怎么换个端口看自己开发的box模块了.

我之所以说spm doc是个好东西, 就是因为它直接将你的markdown格式的文档文本, 转换为html了.因为我就是因为这个doc转html才喜欢上spm的, 进而觉得nodejs这个平台的还是有一些很方便的工具的, 通过对spm的使用, 我觉得nodejs挺好的, 感觉nodejs上的东西上手了.

当然, 我对seajs本身是没什么好感的, 因为我本来是冲着aliceui来, 以及aliceui的一些css模块的开发和管理引领着我开始学习spm的.  spm也确实不错, 单就结合nico模块, 把css代码块, 和js代码块直接转换成在html中可以使用的css和js, 就让人很爽了.

2.4 简单修改readme

打开readme, 发现里面全部是英文的, 好吧, 我加几个中文进去:

然后在 http://localhost:8080 刷新 , 结果中文字不显示, 是空白的!

这个算是怪事吧? 其实也简单, 直接将readme.md文件转换为 utf-8编码即可看到中文了.

转换的工具有一些批量转换软件, 也有一些ide, 当然, 我是用ultraedit和notepad++转换的, 最好建议转换为utf-8无BOM编码格式, 至于什么叫无BOM, 自己百度.

好了, 这一篇各种复制粘贴, 已经很长了, 再换一篇继续写spm的使用.

 更多开发学习资料请访问www.javarecord.com

seajs 和spm的使用简介的更多相关文章

  1. seajs中spm压缩工具使用

    seajs是个好东西,用起来很方便,但是她的压缩工具spm确不被网友看好,因为使用起来很麻烦,捯饬了一天多,终于勉强能压缩了,这里就简单记录一下. 按照地址:http://www.zhangxinxu ...

  2. seajs的spm使用

    压缩JS文件 只需要执行这个命令即可 spm build xxx.js 这时候你将得到一个压缩过的__build/xxx.js文件 合并JS文件 如果希望将JS文件中require的其他模块都合并到这 ...

  3. seajs配合spm应用之四弹出框

    前面描述了 seajs的弹出遮罩层, 还没讲到弹出框, 这里接着把那几个例子介绍完. 目前已经有的工作是, 点击toggle按钮,可以弹出一个背投一样的暗灰色遮罩层, 主要的作用就是遮住当前页面上所有 ...

  4. 转:seajs的spm使用摸索

    ~~~spm是基于nodejs的,打开nodejs命令行工具,npm install spm -g 进行spm的安装,过程很漫长 github上的官网不能访问 seajs自带的spm打包工具相关文档略 ...

  5. 我的前端之旅--SeaJs基础和spm编译工具运用[图文]

    标签:seajs   nodejs   npm   spm   js 1. 概述 本文章来源于本人在项目的实际应用中写下的记录.因初期在安装和使用Seajs和SPM的时候,有点不知所措的经历.为此,我 ...

  6. spm使用之二兼谈spm的贱格

    上一篇还没写完, 因为我觉得太长了, 影响阅读, 就截断继续写. 因为还没有写到修改 创建模块的模板啊. 之所以想到要修改spm用来创建模块的模板, 是因为, 有一天我突然上不了网了, 发现spm完全 ...

  7. RequireJS 和 SeaJS

    RequireJS SeaJS CMD规范 CommonJS的规范: 根据CommonJS规范,一个单独的文件就是一个模块.加载模块使用require方法,该方法读取一个文件并执行,最后返回文件内部的 ...

  8. 【整理】 JavaScript模块化规范AMD 和 CMD 的区别有哪些?

    根据玉伯等人在知乎上的回答整理.整理中... AMD 规范在这里:https://github.com/amdjs/amdjs-api/wiki/AMD CMD 规范在这里:https://githu ...

  9. 构建seajs业务模块之grunt VS spm build

    在最开始,我并不知道grunt可以构建CMD模块.(以下spm指代spm build) 当时正困惑于如何用spm方便的构建业务模块,后来看到@twinstony (感谢@twinstony的分享)使用 ...

随机推荐

  1. 使用solrj操作solr索引库,solr是lucene服务器

    客户端开发 Solrj 客户端开发 Solrj Solr是搭建好的lucene服务器 当然不可能完全满足一般的业务需求 可能 要针对各种的架构和业务调整 这里就需要用到Solrj了 Solrj是Sol ...

  2. hibernate.hbm.xml配置文件内容说明

    下面是一个自动生成的配置文件: <?xml version='1.0' encoding='UTF-8'?> <!DOCTYPE hibernate-configuration PU ...

  3. HDU2084JAVA

    数塔 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submissi ...

  4. hdu2047.java递推题

    阿牛的EOF牛肉串 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total S ...

  5. android UI生成器

    可根据选择的效果生成资源 http://jgilfelt.github.io/android-actionbarstylegenerator/#name=example&compat=sher ...

  6. Windows 下多线程编程技术

    (1) 线程的创建:(主要以下2种) CWinThread* AfxBeginThread(AFX_THREADPROC pfnThreadProc, LPVOID lParam, int nPrio ...

  7. Linux文件查找命令find用法整理(locate/find)

    Linux文件查找查找主要包括:locate和find 1.locate 用法简单,根据数据库查找,非实时,用法: locate FILENAME 手动更新数据库(时间可能较长) updatedb 2 ...

  8. Java根据ip地址获取Mac地址,Java获取Mac地址

    Java根据ip地址获取Mac地址,Java获取Mac地址 >>>>>>>>>>>>>>>>>&g ...

  9. oracle如何获取上个月的月份

    --转载   这个要用到add_months()函数 参数 负数 代表 往前 正数 代表 往后.select to_char(add_months(trunc(sysdate),-1),'yyyymm ...

  10. LAMP网站架构方案分析

    本文引自:http://www.williamlong.info/archives/1908.html LAMP(Linux-Apache-MySQL-PHP)网站架构是目前国际流行的Web框架,该框 ...