Skip to content

Commit 20b8859

Browse files
committed
add package/get-started
1 parent 66e4782 commit 20b8859

File tree

2 files changed

+150
-1
lines changed

2 files changed

+150
-1
lines changed

package/get-started.md

Lines changed: 149 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,149 @@
1+
2+
# 组件入门
3+
4+
下面会一步步教你如何通过 [spm](https://github.com/spmjs/spm) 来开发一个组件。
5+
6+
## 脚手架
7+
8+
```bash
9+
$ mkdir now
10+
$ cd now
11+
$ spm init
12+
```
13+
14+
```bash
15+
Creating a spm package:
16+
[?] Package name: (now)
17+
[?] Version: (1.0.0)
18+
[?] Description:
19+
[?] Author: afc163 <[email protected]>
20+
21+
Initialize a spm package Succeccfully!
22+
```
23+
24+
这样,你就有了一个叫 now 的组件。
25+
26+
## 安装依赖
27+
28+
先安装默认依赖:
29+
30+
```bash
31+
$ spm install
32+
```
33+
34+
然后我们需要 moment 依赖,这里 有他的详细信息。
35+
36+
```
37+
$ spm install moment --save
38+
```
39+
40+
## 开发
41+
42+
编辑 index.js ,和在 nodejs 里一样:
43+
44+
```javascript
45+
var moment = require('moment');
46+
var now = moment().format('MMMM Do YYYY, h:mm:ss a');
47+
48+
module.exports = now;
49+
```
50+
51+
然后编辑 `examples/index.md`:
52+
53+
<pre>
54+
# Demo
55+
56+
---
57+
58+
## Normal usage
59+
60+
````javascript
61+
var now = require('now');
62+
alert(now); // add this
63+
````
64+
</pre>
65+
66+
## 本地调试
67+
68+
执行 `spm doc` 开启一个文档服务 127.0.0.1:8000 :
69+
70+
```bash
71+
$ spm doc
72+
```
73+
74+
然后在浏览器里打开 [http://127.0.0.1:8000/examples/](http://127.0.0.1:8000/examples/) 即可看到结果。
75+
76+
你可以在 Markdown 文件里用 3 个 &#96; 来引用代码,也可以用 4 个 &#96;
77+
78+
这是一条特殊规则,引用的代码首先会高亮显示,然后还会被插入一个 script 标签来同步执行。这一点非常有用,在调试 demo 的同时,还可以写出优雅的文档。
79+
80+
如果想在 demo 中插入 iframe,需声明代码为 frame 类型:
81+
82+
<pre>
83+
````iframe:600
84+
I am in a iframe of 600px high
85+
````
86+
</pre>
87+
88+
如果不想用 `spm doc` 来调试代码,你还可以试试 spm server 来调试开发模式下的 CommonJS 代码。
89+
90+
## 添加测试用例
91+
92+
编辑测试文件 `tests/now-spec.js`,我们默认引用了一个断言方案 [expect.js](http://spmjs.io/package/expect.js)
93+
94+
```javascript
95+
var expect = require('expect.js');
96+
var now = require('../index');
97+
98+
describe('now', function() {
99+
100+
it('normal usage', function() {
101+
expect(now).to.be.a('string'); // add this
102+
});
103+
104+
});
105+
```
106+
107+
看看测试结果:
108+
109+
```bash
110+
$ spm test
111+
```
112+
113+
![](https://t.alipayobjects.com/images/T1GjRfXiBaXXXXXXXX.png)
114+
115+
你也可以在浏览器里打开 [http://127.0.0.1:8000/tests/runner.html](http://127.0.0.1:8000/tests/runner.html) 查看结果。
116+
117+
此外,还可以打开 `coverage/lcov-report/index.html` 查看测试覆盖率。
118+
119+
## 发布
120+
121+
现在你已拥有一个包含完整功能和完善测试用例的组件里,尝试把他发布到 [spmjs.io](http://spmjs.io/) 吧。
122+
123+
```bash
124+
$ spm publish
125+
```
126+
127+
你应该要先执行 `spm login` 来获取权限,否则会提示验证失败。
128+
129+
```bash
130+
$ spm login
131+
```
132+
133+
`username` 是你的 github 账号,而 `authkey` 可以在你登陆后在 http://spmjs.io/account 找到。
134+
135+
> 当然,组件 `now` 是我发布的。你应该先改个名字然后重新试一次。
136+
137+
## 文档
138+
139+
spmjs.io 可以托管组件文档。你只需要编辑 `README.md``examples` 目录,通过 `spm doc watch` 预览,然后发布到 spmjs.io.
140+
141+
```bash
142+
$ spm doc publish
143+
```
144+
145+
最新版文档的 url 是 `http://spmjs.io/docs/{{name}}/` ,也可以通过 `http://spmjs.io/docs/{{name}}/{{version}}/` 访问到所有版本。
146+
147+
比如:http://spmjs.io/docs/now/
148+
149+

project/debug.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11

22
# 项目调试
33

4-
spm3 一个较大的改变是源码书写规范从 CMD 变为 CommonJS ,带来的好处是和社区打通,更接近 nodejs 的开发体验。坏处是 CommonJS 的源码不能像 CMD 一样在浏览器里直接加载,从而影响线下的调试体验。
4+
SPM3 一个较大的改变是源码书写规范从 CMD 变为 CommonJS ,带来的好处是和社区打通,更接近 nodejs 的开发体验。坏处是 CommonJS 的源码不能像 CMD 一样在浏览器里直接加载,从而影响线下的调试体验。
55

66
CommonJS 和 CMD 写法上最大的区别就是 `define(function(require, exports, module) {})` 的包裹,只要在调试阶段无缝的加入这个包裹,就可以比较方便的加载调试了。在 spm 3.6 之前的都是通过这个思路去解决的。
77

0 commit comments

Comments
 (0)