本来想用 Node 写爬虫和服务端接口的, 不过感觉 cheerio 的 CSS selector 用起来特别不爽, 而 Python 的 Scrapy 库, 写爬虫特别好用, 遂用 Python 写了 V2EX 的爬虫 V2EX_Crawler
Node 爬虫不错的教程
Scraping the Web With Node.js
Simple web scraping with Node.js / JavaScript
MongoDB For Beginners: Introduction And Installation (Part 1/3)
Api
-
由于完全没有接触过服务端, 学起来还是一脸懵逼的... 找了一门稍微熟悉一点的语言 JS, 来写服务端
吐槽下前端这两年一直在搞事情, 弄出来不少幺蛾子... 学的我屁股都大了...- Vue, React
- ES6
- Webpack
-
当年整过的一些 SQL 各种 join 查询忘得也差不多了..
遂折腾下 NOSql - MongoDB, 听说了一段时间了, 但始终没有尝试过 -
学习写接口主要是下面 2 个教程, 先看了第一个.. 对服务端涉及的知识点有个大概了解, 然后通读并写了写第二本书的代码, 第二本书很棒棒哦, 非常全面, 深度对我这 Node 新手来说也刚好, 感谢作者把它开源 ~
- 学起来倒也没有坎, 路由之前做 iOS 的模块化时接触过 JLRoutes, 所以看 express 的 router 很熟悉
- MongoDB 对新手也很友好, 上手很快, 文档式的存储结构写小项目很方便, 用起来和 ORM 差不多, 666
极力推荐的教程
《Node.js 包教不包会》 by alsotang
Practical Node.js, 1st and 2nd Editions [Apress]
RESTFul
我写的 Api 比较简单, 就是查数据库, 吐 JSON, 每接触到分布式, 多线程, Session, 各种缓存啥的
接口是 RESTFul 风格的.. 这个是一个很成熟的规范了.. 以为能找到一个好用的框架, 直接结合 mongoose 帮我实现默认的 RESTFul 接口呢, 不过没找到合适的, 但手写也非常简单...
GraphQL
- 无聊用 Charles 抓了下 手机版的 Lynda, 一个类似网易云课堂的在线课程网站, 发现他的各种接口请求贼奇怪, 传了很多像数据库字段的东西
- 后来想到, 之前看过 Github v4 API 出了新格式之类的东西, 看了半天没懂, 一查果然是这个东西
- GraphQL 国外已经在用了, 我还没写过 Demo, 不过大概了解了一下思路
例子 : 比如微信用户数据库, 存储用户的各种详细信息
- 接口 1 : 加好友, 要用户的基本数据, 名字, 头像, 性别等
- 接口 2 : 用户点击好友, 查看好友全部详细资料, 年龄, 地区, 相册等,
- 这就需要服务端提供 2 个接口, 接口1 返回用户的部分字段, 接口2 返回用户的全部字段
GraphQL 实现 : 相当于客户端传过来一个 SQL 语句, 告诉我查哪个表, 要哪些字段
- 这么一来, 服务端不管处理什么都一个接口足够了, 客户端告诉我要哪些数据, 我去执行查询就行了, (当然这里肯定有校验, SQL 防注入之类的),
- 这大大减轻了服务端的压力, 前端, 移动端, 经常需要的数据不同, 所以 服务端要维护好多接口, 甚至还要有好多版本 V1,V2 等等
- So, 以后有时间一定要实践下 GraphQL
Heroku 部署 Node 工程
Heroku 是非常好用的后端部署平台, 提供各种运行环境, Node, python , PHP 等, 可以直接把代码部署运行在 Heroku 上, 非常方便
我现在的使用方式是 :
- 代码 commit push 到 github
- CI 跑 unit test (根本不写测试代码)
- Heroku 关联 github 项目, push 触发 Heroku deploy hook, 自动 pull 并部署代码
- 完成后 Slack 通知我部署状态
学习成果
就是最基本的 MongoDB 实现的 RESTFul API
V2EX_Nodejs : V2EX 最近的文章, 登录, 注销接口
类似云课堂的接口 : 这个代码质量还不错... 部署在我的 Vultr VPS 上
不错的文章
RESTful API design with Node.js
10 Best Practices for Writing Node.js REST APIs
网友评论