国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

使用LeanCloud服務做一站式Chrome插件開發——Favorite Image

JohnLui / 3616人閱讀

摘要:云存儲問題,帳號系統,多端同步最開始只想做瀏覽器本地的存儲,使用提供的存在本地就。具體解決方案云存儲及帳號系統使用提供的存儲服務解決。

0. 目錄

要開發的是什么項目

1.1 想法開端
1.2 應該有什么功能?

開發需要解決的核心問題

具體解決方案

3.1 帳號系統
3.2 存儲服務
3.3 使用`LeanEngine`做反防盜鏈中轉接口
3.4 Chrome 插件實現

對去后端化的看法

1. 要開發的是什么項目?

一個Chrome插件,用來保存瀏覽網頁時看到的喜歡的圖片。

1.1 想法開端

在 pixiv 翻圖時看到一些喜歡的插畫,看完就隨手翻過去了,沒有保存。為什么呢? 因為以我對自己的了解,圖片下載下來,就相當于放進了垃圾桶。 并不是因為本地的文件管理有多亂,而是因為,幾乎沒有用鼠標打開文件管理器的習慣。

現在我獲取信息的流量入口最常用的只有兩個:1. 終端 2. 瀏覽器

于是乎,一個想法油然而生:

把插畫存到瀏覽器吧!

于是就立刻構思,動手寫了這款插件。

1.2 應該有什么功能?

功能很簡單,
保存操作:1. 對圖片點擊右鍵 2. 選擇"保存到瀏覽器.." 之類的選項
查看操作:1. 點擊插件圖標 查看保存過的圖片。
其它:1. 圖片同步到云端,也可保存到瀏覽器本地。2. 既然要保存到云端,自然需要賬號系統

2. 開發需要解決的核心問題

核心問題有兩個,一個是數據云存儲問題,一個是圖片防盜鏈問題。

云存儲問題,帳號系統,多端同步
最開始只想做瀏覽器本地的存儲,使用Chrome提供的localStorage存在本地就。
后來因為localStorage并不支持數據庫語法查詢,有很多不便。使用過程中又發現多端同步在體驗上的優越性,決定要把存儲放到云上。

圖片防盜鏈問題
看了些資料,解決方式基本可以分為兩種。

一類使用前端js嵌入iframe解決,優點是解決方式簡單,問題是Chrome插件不支持頁面嵌入式的js腳本。所以這個方案pass。

第二類使用后臺服務器做反防盜鏈措施,作為中轉給前端使用。優點是不受chrome插件的各種安全機制的限制,缺點是需要后臺支持,增加工作量和資源成本。
使用第二類完成。

3. 具體解決方案

云存儲及帳號系統使用LeanCloud提供的存儲服務解決。

反防盜鏈接口使用LeanCloud提供的云引擎搭建NodeJs后臺。

啰嗦一句,為什么要使用LeanCloud?
一是對我的需求可以做到完全免費,二是它們的文檔實在是太xx的好用了。

3.1 帳號系統

參照:數據存儲入門教程 · JavaScript

實現過程基本照抄這個教程的代碼。后臺賬號系統包括對賬號的重復檢測、密碼加密、session等都已經實現。

我們要做的,就是調用前端的這幾個關鍵方法,實現簡單的注冊、登陸、退出:

  // LeanCloud - 注冊
  // https://leancloud.cn/docs/leanstorage_guide-js.html#注冊
  var user = new AV.User();
  user.setUsername(username);
  user.setPassword(password);
  user.setEmail(email);
  user.signUp().then(function (loginedUser) {
    // 注冊成功
  }, (function (error) {
      alert(JSON.stringify(error));
  }));


  // LeanCloud - 登錄
  // https://leancloud.cn/docs/leanstorage_guide-js.html#用戶名和密碼登錄
  AV.User.logIn(username, password).then(function (loginedUser) {
    // 登錄成功
  }, function (error) {
    alert(JSON.stringify(error));
  });


  // LeanCloud - 當前用戶信息
  // https://leancloud.cn/docs/leanstorage_guide-js.html#當前用戶
  var currentUser = AV.User.current();


  // 退出登陸
  AV.User.logOut();
3.2 存儲服務

使用賬號系統為每個用戶添加身份信息后,存儲部分就只需要把數據 + 用戶身份信息一同上傳或下載就可以了。

照樣只貼關鍵方法

// 初始化類(在數據庫中表現為數據表`ImageRepo`)和實例(數據庫中表現為一條數據)
this.ImageRepo = AV.Object.extend("ImageRepo");
var repo = new this.ImageRepo();
// 填充數據
repo.put("username", "xxx");
// 上傳數據
repo.save().then(function (repo) {
    }, function (error) {
    });

// 下載數據
// 初始化對"ImageRepo"表的查詢
var query = new AV.Query("ImageRepo");
// 查詢條件為 username字段等于"xxx"
query.equalTo("username", "xxx");
// 查詢
query.find().then(function(results) {
    // 遍歷results
    // 在頁面添加解決防盜鏈問題后的圖片
}, function(error) {
});
3.3 使用LeanEngine做反防盜鏈中轉接口

要實現的效果是:

我有一個防盜鏈圖片連接abc.com/xxx.png

我的接口url是http://codeli.leanapp.cn/image?url=xxx

訪問http://codeli.leanapp.cn/image?url=abc.com/xxx.png可訪問原圖,不受防盜鏈措施限制。

主要原理很簡單,后臺處理圖片請求時更改header中的referer字段,將結果作為response返回。

關于這部分的實現,歡迎閱讀我的另一篇文章,就不再贅述:
服務器作防盜鏈圖片中轉,nodejs 上手項目簡明教程

關于LeanEngin的使用,文檔如下,使用方法非常簡單。

云引擎快速入門

云引擎支持NodeJS Python PHP JAVA

只需要下載云引擎命令行工具lean,然后輸入幾行命令就可以建立一個你熟悉的web框架。
然后,使用你熟悉的語言編寫反防盜鏈實現就行了。

3.4 Chrome 插件實現

有了 3.1~3.3 的實現,這部分就是簡單的插件部署和業務邏輯了。

Chrome 插件結構如圖:

主要業務:

popup窗口中添加注冊 登陸 退出 等業務。

打開popup 窗口時從云端獲取指定賬號下保存的圖片信息,并展示。若未登陸,則從瀏覽器localStorage獲取并展示。

background script 中添加右鍵菜單項: 當目標是圖片時,顯示Keep image in browser

點擊Keep image in browser, 執行保存業務邏輯: 若登陸了,保存到云端。若未登錄,保存到瀏覽器localStorage

具體實現見我的github項目: KeepImageInBrowser
插件Web Store地址: Favorite Image

4. 最后,對去后端化的看法

前段時間在知乎上看到了一個問題,我也順便說下自己的看法。

web后端會不會變得越來越不需要?

像bmob和leancloud這類后臺云服務的流行有一段日子了,使用這些服務使一些web、app的開發周期大大縮減。這對于小團隊和初創公司尤為方便。

但這并不意味著不再需要自己開發后臺。不是因為他們提供的服務不夠全面(相反,我倒認為這類服務將向著全面、便捷、快速發展),而是因為很多公司和產品,為了保持服務的質量和穩定,突出自己產品的特性,需要自己定制自己的后臺,有針對性的去優化某些模塊。
云服務作為大眾服務平臺難以為每個產品做定制。

類似于游戲引擎,如今各個平臺都不缺乏優秀的游戲引擎。可是仍有公司和團隊耗費大量的成本自研游戲引擎,就是希望能配合自己的游戲系統,完美地展現自己的游戲。

一樣的,后臺云服務和自定制的后臺,是相交但永遠不會重合的關系。 他們彼此之間相互影響,共同進步。

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/81419.html

相關文章

  • 我的 2015 年度小結(技術方面)

    摘要:因為路由層面受業務影響很大,經常修改一些功能的行為,所以后來大部分測試都是針對層面的單元測試。在我了解的過程中,我發現中文網絡上對的討論非常分散,于是我創建了中文社區,到年末已經有個注冊用戶和個帖子了。 https://jysperm.me/2016/02/programming-of-2015/ 從 2014 年末開始開發的一個互聯網金融項目終于在今年三月份上線了,這是一個 Node...

    宋華 評論0 收藏0
  • 我的 2015 年度小結(技術方面)

    摘要:因為路由層面受業務影響很大,經常修改一些功能的行為,所以后來大部分測試都是針對層面的單元測試。在我了解的過程中,我發現中文網絡上對的討論非常分散,于是我創建了中文社區,到年末已經有個注冊用戶和個帖子了。 https://jysperm.me/2016/02/programming-of-2015/ 從 2014 年末開始開發的一個互聯網金融項目終于在今年三月份上線了,這是一個 Node...

    Nosee 評論0 收藏0
  • 微信小程序資源匯總

    awesome-github-wechat-weapp 是由OpenDigg整理并維護的微信小程序開源項目庫集合。我們會定期同步上的項目到這里,也歡迎各位 UI組件開發框架實用庫開發工具服務端項目實例Demo UI組件 weui-wxss ★1873 - 同微信原生視覺體驗一致的基礎樣式庫zanui-weapp ★794 - 好用易擴展的小程序 UI 庫wx-charts ★449 - 微信小程...

    Olivia 評論0 收藏0
  • chrome擴展應用開發快速科普

    摘要:擴展應用模塊功能介紹擴展應用由很多部分組成,其中主要模塊為為了避免由于翻譯原因導致的問題,因此在下文中對相關模塊的稱呼一律采用上面的英文。附錄官方開發文檔英建議有英文閱讀能力的人閱讀此文檔。 概述 本文通過對chrome插件的各個部分進行快速的介紹,從而讓大家了解插件各個部分的關系,并且知道如何將其進行組裝成一個完整的chrome插件。 由于chrome官方文檔中對于如何從零開發一個c...

    MockingBird 評論0 收藏0
  • 3年,從工程師到創始人

    摘要:我們的產品覆蓋了和,目前項目全都架在的云引擎之上。我們的方案是把業務代碼從中抽出來了,做成了移動端,這樣業務能在和中共用,移動端是基于的云引擎環境下開發的。在這個過程中,云引擎和都發揮了重要作用。 【玩轉 LeanCloud 】活動開發經驗分享: 作者:黃濤 大家好,我是 htoooth,在一家電商公司做 Node.js 開發,愛折騰,喜歡追新語言,像 golang、elixir、cl...

    AlienZHOU 評論0 收藏0

發表評論

0條評論

JohnLui

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<