使用 Meteor 快速搭建TODO APP

代码在 https://github.com/gongbaodd/MeteorTodoAPP 这里做一下简单记录。

把冰箱门打开

meteor create app

打开 app 文件夹,可以看到 meteor 项目了,官网有各个文件夹的说明, 在此不赘述。

meteor

可以在 localhost:3000 看到初始项目了。

.meteor/package下删除autopublish 和 insecure,添加 apollo 和 accounts-passwd

把大象放进去

下面记录一下踩到的坑。

CSS

css很尴尬,我想用postcss,但貌似meteor的postcss包并不是很给力。自带的css的打包功能貌似不能用(起码我没整出来)。好在 ecmascript 包可以引用 css。

项目直接使用了bulmaCSS, 很方便。

Apollo增加用户token

要用到Apollolink,在请求头里面添加meteor-login-token,在后面的 resolver 里面的 context 对象里面就有 userId 这个值了。

const apolloLink = new ApolloLink(
    (operation, forward) => {
        const token = Accounts._storedLoginToken();
        operation.setContext(
            _ => ({
                headers: {
                    'meteor-login-token': token,
                }
            })
        );
        return forward(operation);
    }
);

Graphql

graphql文件修改了并不能触发重启,而且有的时候甚至一直读缓存而不在乎文件有修改,要把 makeExecutableSchema 参数做修改之后才能正常运行。

总结

用 Meteor 做项目的确是目前我知道的最快速了,主要是不用考虑数据库的种种,要知道,即使是黑盒,对于前端工程师来说,数据库还是很少触碰的。

Graphql,最大的优势就是给接口做了个强制定义,以后不必去维护什么v1、v2的接口了。