本來想用 Node 寫爬蟲和服務(wù)端接口的, 不過感覺 cheerio 的 CSS selector 用起來特別不爽, 而 Python 的 Scrapy 庫, 寫爬蟲特別好用, 遂用 Python 寫了 V2EX 的爬蟲 V2EX_Crawler
Node 爬蟲不錯(cuò)的教程
Scraping the Web With Node.js
Simple web scraping with Node.js / JavaScript
MongoDB For Beginners: Introduction And Installation (Part 1/3)
Api
-
由于完全沒有接觸過服務(wù)端, 學(xué)起來還是一臉懵逼的... 找了一門稍微熟悉一點(diǎn)的語言 JS, 來寫服務(wù)端
吐槽下前端這兩年一直在搞事情, 弄出來不少幺蛾子... 學(xué)的我屁股都大了...- Vue, React
- ES6
- Webpack
當(dāng)年整過的一些 SQL 各種 join 查詢忘得也差不多了..
遂折騰下 NOSql - MongoDB, 聽說了一段時(shí)間了, 但始終沒有嘗試過-
學(xué)習(xí)寫接口主要是下面 2 個(gè)教程, 先看了第一個(gè).. 對(duì)服務(wù)端涉及的知識(shí)點(diǎn)有個(gè)大概了解, 然后通讀并寫了寫第二本書的代碼, 第二本書很棒棒哦, 非常全面, 深度對(duì)我這 Node 新手來說也剛好, 感謝作者把它開源 ~
- 學(xué)起來倒也沒有坎, 路由之前做 iOS 的模塊化時(shí)接觸過 JLRoutes, 所以看 express 的 router 很熟悉
- MongoDB 對(duì)新手也很友好, 上手很快, 文檔式的存儲(chǔ)結(jié)構(gòu)寫小項(xiàng)目很方便, 用起來和 ORM 差不多, 666
極力推薦的教程
《Node.js 包教不包會(huì)》 by alsotang
Practical Node.js, 1st and 2nd Editions [Apress]
RESTFul
我寫的 Api 比較簡單, 就是查數(shù)據(jù)庫, 吐 JSON, 每接觸到分布式, 多線程, Session, 各種緩存啥的
接口是 RESTFul 風(fēng)格的.. 這個(gè)是一個(gè)很成熟的規(guī)范了.. 以為能找到一個(gè)好用的框架, 直接結(jié)合 mongoose 幫我實(shí)現(xiàn)默認(rèn)的 RESTFul 接口呢, 不過沒找到合適的, 但手寫也非常簡單...
GraphQL
- 無聊用 Charles 抓了下 手機(jī)版的 Lynda, 一個(gè)類似網(wǎng)易云課堂的在線課程網(wǎng)站, 發(fā)現(xiàn)他的各種接口請(qǐng)求賊奇怪, 傳了很多像數(shù)據(jù)庫字段的東西
- 后來想到, 之前看過 Github v4 API 出了新格式之類的東西, 看了半天沒懂, 一查果然是這個(gè)東西
- GraphQL 國外已經(jīng)在用了, 我還沒寫過 Demo, 不過大概了解了一下思路
例子 : 比如微信用戶數(shù)據(jù)庫, 存儲(chǔ)用戶的各種詳細(xì)信息
- 接口 1 : 加好友, 要用戶的基本數(shù)據(jù), 名字, 頭像, 性別等
- 接口 2 : 用戶點(diǎn)擊好友, 查看好友全部詳細(xì)資料, 年齡, 地區(qū), 相冊(cè)等,
- 這就需要服務(wù)端提供 2 個(gè)接口, 接口1 返回用戶的部分字段, 接口2 返回用戶的全部字段
GraphQL 實(shí)現(xiàn) : 相當(dāng)于客戶端傳過來一個(gè) SQL 語句, 告訴我查哪個(gè)表, 要哪些字段
- 這么一來, 服務(wù)端不管處理什么都一個(gè)接口足夠了, 客戶端告訴我要哪些數(shù)據(jù), 我去執(zhí)行查詢就行了, (當(dāng)然這里肯定有校驗(yàn), SQL 防注入之類的),
- 這大大減輕了服務(wù)端的壓力, 前端, 移動(dòng)端, 經(jīng)常需要的數(shù)據(jù)不同, 所以 服務(wù)端要維護(hù)好多接口, 甚至還要有好多版本 V1,V2 等等
- So, 以后有時(shí)間一定要實(shí)踐下 GraphQL
Heroku 部署 Node 工程
Heroku 是非常好用的后端部署平臺(tái), 提供各種運(yùn)行環(huán)境, Node, python , PHP 等, 可以直接把代碼部署運(yùn)行在 Heroku 上, 非常方便
我現(xiàn)在的使用方式是 :
- 代碼 commit push 到 github
- CI 跑 unit test (根本不寫測試代碼)
- Heroku 關(guān)聯(lián) github 項(xiàng)目, push 觸發(fā) Heroku deploy hook, 自動(dòng) pull 并部署代碼
- 完成后 Slack 通知我部署狀態(tài)
學(xué)習(xí)成果
就是最基本的 MongoDB 實(shí)現(xiàn)的 RESTFul API
V2EX_Nodejs : V2EX 最近的文章, 登錄, 注銷接口
類似云課堂的接口 : 這個(gè)代碼質(zhì)量還不錯(cuò)... 部署在我的 Vultr VPS 上
不錯(cuò)的文章
RESTful API design with Node.js
10 Best Practices for Writing Node.js REST APIs