相关文档¶
这个教程会简单说明一个模块的开发流程,通过 一个示例 让你有切身体会,你也可以跟着一起做哦。
源码地址为:https://github.com/sorrycc/puzzle
安装¶
请仔细参考 环境与工具配置 。
初始化模块项目¶
模块和目录的名称要符合 [a-z\d-.],并以英文字母开头,首选合适的英文单词, 禁止使用驼峰 。
先来看看整个模块的结构,这样会有一个直观的感受。
puzzle
-- docs markdown 文档,除了 README 的其他文档
-- overlay.md
-- dialog.md
-- examples 例子
-- assets 例子中如果有用到 img 等资源时,存放在该目录
-- test.png
-- index.md
-- dialog.md
-- src 存放 js, css 文件
-- overlay.css
-- overlay.js
-- dialog.js
-- tests 单元测试
-- overlay-spec.js
-- dialog-spec.js
-- spm_modules spm install 生成,存放依赖的其他模块
-- _site nico 生成,存放站点
-- HISTORY.md 版本更新说明
-- README.md 模块总体说明
-- package.json 版本等元信息
-- .gitignore git 忽略某些文件
-- .travis.yml travis 持续集成的配置那我们初始化一个项目看看
$ mkdir puzzle $ cd puzzle $ spm init Creating a spm package: [?] Package name: puzzle [?] Version: 0.0.0 [?] Description: [?] Author: chencheng <sorrycc@gmail.com> Initialize a spm package Succeccfully!
初始化完成后会生成一个骨架,在这个基础上进行开发更方便,之后可以提交到版本库了,当然你可以在 github 上建一个库。
git init git add . git commit -m 'first commit' git remote add https://github.com/sorrycc/puzzle.git git push origin master
进行开发¶
首先分析模块的依赖,比如 puzzle 需要 jquery 和 arale-popup。
可以使用 spm install 下载依赖。
$ spm install jquery arale-popup --save
install: jquery@stable
install: arale-popup@stable
saved: in dependencies arale-popup@1.2.0
download: http://spmjs.io/repository/arale-popup/1.2.0/arale-popup-1.2.0.tar.gz
saved: in dependencies jquery@2.1.1
download: http://spmjs.io/repository/jquery/2.1.1/jquery-2.1.1.tar.gz
extract: ~/.spm/cache/arale-popup-1.2.0.tar.gz
installed: $CWD/spm_modules/arale-popup/1.2.0
depends: jquery@1.7.2, arale-overlay@1.2.0
install: jquery@1.7.2
install: arale-overlay@1.2.0
...这样 spm 会自动在 package.json 中添加依赖,你也可以手动添加并 install 。
"spm": {
"dependencies": {
"jquery": "1.7.2",
"arale-popup": "1.2.0"
}
}并且,所有依赖的模块都会被下载到 spm_modules 下。
修改 index.js 进行开发
var popup = require('popup');
var $ = require('jquery');
var puzzle = function() {};
module.exports = puzzle;启动本地服务进行调试。
$ spm doc通过浏览器访问 http://127.0.0.1:8000/
本地调试¶
examples 也使用 md 编写,这样写起来非常方便,除了基本的 markdown 语法还支持额外的特性。
在 examples/index.md 添加实例化代码,用 require 来调用模块。
var Puzzle = require('puzzle');
// use Puzzle通过四个 ```` 所包裹的代码不仅会显示成代码片段,也会插入 HTML 中进行实际运行,这样你调试好代码后,演示页面的文档也同时生成好了。
spm doc 支持 livereload,只要通过 spm doc 启动服务,修改文件后都会自动构建和刷新浏览器(更多 Markdown 写文档的技巧请参考 https://github.com/spmjs/nico-cmd#%E6%96%87%E6%A1%A3%E7%BC%96%E8%BE%91 )。
编写测试用例¶
Arale 提供 mocha 作为测试框架,开发者只要关注如何写好测试用例。
工具会到 tests 目录下的通过 命名 + '-spec.js' 拼装去找文件。
修改 tests/puzzle-spec.js 文件,开始写测试用例,可以直接看示例。
访问 http://127.0.0.1:8000/tests/runner.html 查看是否正确。
运行下面命令可以在命令行里跑测试用例:
$ spm testArale 已经配置 travis,只要开通就可以 持续集成 。登录 travis,开启 travis。
部署文件¶
修改 package.json 配置打包方式,主入口用 main 字段标识,其余构建入口可以使用 output: ['other.js']。
"spm": {
"main": "index.js"
}这样 spm build 将打包 index.js 文件,并将这个文件中的本地依赖文件也打包进来。
接下来就可以开始打包,build 后会在 dist 目录生成打包的文件和 -debug 文件。
$ spm build发布到源中¶
只有发布到源中,你的模块才能被其他模块调用。通过 spm publish 命令将会把你的模块发布到默认的源服务器中。(默认为 http://spmjs.io ,这个源服务器需要用户校验,请自行注册账号进行发布)
$ spm publish部署模块文档¶
模块的文档地址为 http://spmjs.io/docs/{{模块名}} ,开发完模块后,只需要运行如下代码就可以把文档部署上线。
$ spm doc publish使用这个模块¶
我们现在已经写好了这个模块,那么如何使用呢?
script 引用¶
使用 spm3 ,我们强烈推荐使用 standalone 的方式进行构建,然后用 script 直接引用构建后的文件。
$ spm build
<!-- use it without loader -->
<script src="build.js"></script>seajs.use¶
或者按照传统的 seajs 的方式,首先要把构建后的文件按目录部署到你的 assets 服务器上。
$ npm install spm-sea $ spm-sea
比如 arale 的 position 模块:
http://static.alipayobjects.com/position/1.1.0/index.js
然后就可以像《5 分钟上手指南》里那样用 seajs.use 来启动模块了。