CNode

[文档翻译] 全栈速成,最适合前端的后端服务框架: Parse

分享
Jjaweii发布于9 年前最后回复8 年前26 回复10187 浏览0 收藏

就在最近,我完成了Parse JavaScript SDK指南的翻译,并在指南中加入了一些教程、示例,以保证新手能够快速上手。

我在QQ群里面贴出地址宣传了下,然后发现大部分人听都没听说过Parse,果然,我是站在潮流之巅的弄潮儿啊hhhhhh~

那么,Parse到底是什么?

三个字就可以概括:去后端。

Parse服务其实已经推出很多年了,在4年前被Facebook 8500万美元收购,在去年被Facebook开源,但是在国内几乎一直无人问津。

国内同类的服务平台,即BasS(Backend as a Service)服务平台主流的有Leancloud、Bmob。

其中Leancloud我使用过,Bmob也注册过。Leancloud达到免费阈值以后的收费方案是每天最低消费30元,Bmob达到免费阈值以后的收费方案有99元/月的套餐。对于原型开发阶段的应用,其服务的免费额度使用还是绰绰有余的。

就像刚才说的,BaaS服务就是去后端,也就是说,后端几乎完全不需要你自己开发了,数据库、用户系统、安全系统、Hook回调、API查询等都为你搭建好了。而且,比你搭建的还好。你只需要在项目中集成SDK,然后直接调用方法传参就可以完成前后端交互。

打个比方,我要写一个按钮的用户注册方法:

//集成SDK
import parse from 'parse'
parse.serverURL = 'http://localhost:2018/parse'
parse.initialize('myAppId', '123456')

//在按钮点击实践中调用注册方法:
button.on('click',function(username,password){
  let user = new parse.User()
  user.set('username', '000001')
  user.set('password', 'lzhlmcl,yhblsqt')
  user.set('email', 'xxxxx@qq.com')
  user.signUp().then(user => {
  alert('注册成功')
}).catch(console.error)
})

完成!

只需要十几行代码,不需要写后端和接口。当上面代码弹出注册成功后,后台还会发送验证邮箱的邮件给用户,然后后台数据库就会出现新注册的用户。

怎么样,so easy吧。

简直就是,前端抢后端饭碗系列。

当然了,使用Leancloud、Bmob这样的商业服务平台,数据是存储在他们的服务器上的。使用Parse自己搭建后端,则是保存在自己的服务器上。

对比一下:

Parse开源,数据库绝对私有,完全免费,这是Parse的优点。

Leancloud、Bmob则是本地化做的非常优秀,比如对微信接口、短信验证的集成,这是他们的优点。

上述优点,双方都不具备对方的优点,所以,让你选的话,你选胸大的还是腿长的?

我一般是结合业务,如果我觉得这个应用就是玩玩,肯定做不大,为了省去维护和服务器维护,我会选择使用Leancloud,Bmob不熟练。如果说这个应用以后会有很大访问量,打算认真做做,预期会超过L、B的免费额度,出于平穷限制,我会选择Parse。

不管你选择哪个,Parse其实都值得你掌握的。

身为一个前端,如果你会使用L、B,首先也是不错的,至少开发效率很高了;不过,依赖于第三方商业平台,还是不够独立,算不得全栈开发者。如果你会使用Parse,你就相当于快速掌握了一种后端技术栈,算得上是全栈了。

我为什么这么推荐Parse,并把Parse的文档翻译中文,整合详细的教程和实例呢?Parse是一个开源项目,也不是我的项目,我就是非常喜欢这类框架,你知道,发现一个好东西,总是特别想推荐给朋友们的。

接下来,我还会继续写几个教程和例子,虽然,不是非常必要,有的人文档过一遍就会用了。

最后附上Parse JavaScript SDK中文文档地址

查看回复

回复 (26)

M
MiYogurt#1·8 年前

一直在关注这个项目,感觉挺好的,一直想阅读它的源码,不过没有时间深究它。不阅读它的源码还有些许担忧。

F
fairyly#2·8 年前

还不错的哈,以前用过 Valine + Leancloud 很简洁的品论系统;自己完全没有后端开发,以前 test 地址:https://front-ends-developers.github.io/valine_comment_page/index.html

W
wen495713#3·8 年前

只有框架,后端环境也需要搭建的吧,完全前端还是选L or B吧

J
jaweii#4·8 年前
引用 wen495713只有框架,后端环境也需要搭建的吧,完全前端还是选L or B吧

@wen495713 文档包含了Parse后端搭建的脚手架

X
xiaozhongliu#5·8 年前

坐等被端饭碗

L
liangtongzhuo#6·8 年前

Leancloud 忠实用户

Y
yuedun#7·8 年前

Leancloud用过,我觉得这类产品做运营活动很合适,产品出原型,前端直接开发调用这类api,不需要后端参与写接口。但对于其他类型的系统不一定合适,否则不就成安卓,iOS自己操作数据的模式了

Y
YuanChenmang#8·8 年前

我擦,这里厉害!

P
phpsmarter#10·8 年前

哈哈! 什么时候的文档?
我现在用 graphcool,新版叫 prisma. 五分钟建好Graphql 服务器. 远程服务0配置, 本机装好 docker, 基本也是0配置. 建好 schema以后, query和 mutate 的方法自动生成了, 分页也设置好了.
grpahcool console 生成的view 看起开不知道有多爽. 技术更新速度很快啊,骚年

P
phpsmarter#11·8 年前

最后一张图,使用了 graphql的 resolver 函数, 通过 resolver 函数 ,可以把 REST API 转为 graphql API. 这样 客户端的灵活性就打多了.
下面的就是通过 graphcool resolver 转换的Cnode api. 列表中是没有 content 这一项, 这一项的体积太大,所以在加载列表时,没有不要使用,所以可以在前端做查询是直接去掉, 这样带宽压力就小了.

如果单单是后端使用 Graphql, 那用处不见得有多大, 如果在前端配套使用 apollo-client 的话, 那威力无穷. 我可以斗胆下这个结论, 在异步请求很多的 app里 , redux-thunk, redux-saga都可以入土了. 其实我在测试区发了一贴,如果感兴趣可以看看.哈哈

下面这张是在一个查询里返回两个 REST API 的数据.

REST wrapper 这个技能, parser 没有吧 . 哈哈

P
phpsmarter#12·8 年前

有兴趣 可以看这一贴 graphql

J
jaweii#13·8 年前
引用 phpsmarter有兴趣 可以看这一贴 graphql

@phpsmarter 这里比的是简单敏捷上手快 GraphQL 看起来似乎不错,就差你给他翻译成中文了

J
jaweii#14·8 年前
引用 phpsmarter有兴趣 可以看这一贴 graphql

@phpsmarter 我上手试了试,感觉API写法并不友好,比如:

const createPost = gql ` mutation createPost($description: String!, $imageUrl: String!) { createPost(description: $description, imageUrl: $imageUrl) { id imageUrl description } }

    this.$apollo.mutate({
      mutation: createPost,
      variables: {
        description,
        imageUrl,
      },
      updateQueries: {
        allPosts: (prev, {
          mutationResult
        }) => {
          return {
            // append at head of list because we sort the posts reverse chronological
            allPosts: [mutationResult.data.createPost, ...prev.allPosts],
          }
        },
      },
    })

代码太多了

P
phpsmarter#15·8 年前
引用 jaweii@phpsmarter 我上手试了试,感觉API写法并不友好,比如: const createPost = gql ` mutation createPost($description: St...

@jaweii 你说的这是 apoll-client 前端代码, 和后端没关系啊! 主题说的是啥问题? 我回复的是什么问题?

J
jaweii#16·8 年前
引用 phpsmarter@jaweii 你说的这是 apoll client 前端代码, 和后端没关系啊! 主题说的是啥问题? 我回复的是什么问题?

@phpsmarter 主题说的是最适合前端开发者使用的,包括主题内附上的代码,也是前端的示范代码。这个文档,也是讲前端如何使用SDK

P
phpsmarter#17·8 年前
引用 jaweii@phpsmarter 主题说的是最适合前端开发者使用的,包括主题内附上的代码,也是前端的示范代码。这个文档,也是讲前端如何使用SDK

@jaweii 不好意思. 怎么看你的标题都是在写 parse-server. 看到第一段代码之前,看不下去了,后面的代码没看. 服务需要的 schema 和 resolver 一个都不少. 具体功能的shcema和处理方法那是需要自己来写的. 不如你想的那么美好. 我看到这里的描述,实在是看不下去了 另外就是 apollo-client 中查询用的是 graphql-tag. 实际就是用 tag,描述下面的图 查询字符串和返回结果是类似的.

M
MiYogurt#18·8 年前

@phpsmarter 如何做权限校验的。 parse 有 acl,prima 之前看过,没发现有 acl 的文档。

M
MiYogurt#20·8 年前

。。。。。 @phpsmarter 用不到? 你在客户端发起请求,怎么保密你的 url? 只要会写代码,提交gql mutaiton,谁都可以删除你的帖子?这是最基本的校验逻辑。

M
MiYogurt#21·8 年前

@phpsmarter 里面提到的还是要自己写的,graphql-yoga 是 ts 跟 expess 的一个脚手架。

P
phpsmarter#22·8 年前
引用 MiYogurt。。。。。 @phpsmarter 用不到? 你在客户端发起请求,怎么保密你的 url? 只要会写代码,提交gql mutaiton,谁都可以删除你的帖子?这是最基本的校验逻辑。

@MiYogurt 这不告诉你是初学, 权限关掉了么 你先部署一个 graphcool的服务, console里打开就行了.

graphcool 不仅能控制整个 schema的读写权限 ,每个字段的权限也可以控制.

P
phpsmarter#23·8 年前
引用 MiYogurt@phpsmarter 里面提到的还是要自己写的,graphql yoga 是 ts 跟 expess 的一个脚手架。

@MiYogurt 你可以回过头去用 graphcool 的 console. 可以实现权限的可视化管理. 新prisma 的 console还没有上线. 如果部署服务,执行 prisma console会有提示的. 配置文件上也可以做, prisma github 上有 demo.
实际上默认是没有读写权限的. 这个你部署之后,不改默认配置,提示信息上网搜会搜到一堆的问题. 这部分你不说确实是忘了. 怎么感觉我我欠你钱似的, 追着我要. 呵呵.

M
MiYogurt#24·8 年前

@phpsmarter 那倒没有,之前以为你说用不着是没有,后来看到了下面的链接才发的第二条,没用过 graphcool 创建 api,因为这个上线要付费,而且在国外,速度不敢保证,所以就没研究。了解的不深入,这是深切的求知欲。哈哈,在ramda fpchina 看到你了。新年快乐。

P
phpsmarter#25·8 年前
引用 MiYogurt@phpsmarter 那倒没有,之前以为你说用不着是没有,后来看到了下面的链接才发的第二条,没用过 graphcool 创建 api,因为这个上线要付费,而且在国外,速度不敢保证,所以就没研...

@MiYogurt 现在免费的,容量500MB.也够用了. 本地部署 有 docker, 很简单. 速度是有点慢, 现在应该是在日本搞了一个节点,速度还可以. 万一用于实际生产了, 部署方法也很多. 刚添加了一个什么 k8s的部署, 我不懂.

M
MiYogurt#26·8 年前

@MiYogurt k8s 就是 docker-compose 的升级版,可以生命检测,当宕机了自动重启,用来部署微服务。对于 java 那套什么 springcloud 不是很熟,上次听一个人演讲说可以不需要 k8s 使用,而用 Consul。

参与回复
登录后即可参与回复。登录