一歩ずつ、Vue.js+Vuexを使って、WeChat公式アカウントを収集するアプリを作成するように教えます.
7907 ワード
見てもいいですか?それとも所蔵だけしてもいいですか?痴漢です.学校から出ないでください.兄を呼んで片付けます.
プロジェクトの住所:https://github.com/jrainlau/wechat-subscriptor
ダウンロード&実行
WeChatでは多くの公衆番号に注目しています.中身をよく見ています.しかし、往々にして私が文章を読む時、いつも各種の微信のニュースに中断されて、切って行かなければならなくて、返事のニュース、それからいっしょに公衆号に帰って、再び文章を開けて、繰り返して、煩にたえません.その後、WeChatは犬の捜索と協力して、犬を探して直接公衆番号を検索することができますが、なぜこの資源を利用しないで公衆番号を専門に収集するアプリケーションをしますか?このアプリは公衆番号を簡単に検索して収集できます.見たい時はそのまま開けて見ることができます.はい、実は難しくないです.アーキテクチャから発想します.
全体構造
国際慣例は、まずアーキテクチャ図を見ます.
次に技術の選択です.は、検索犬のAPIを利用して公衆番号を照会するインターフェース とする.クロスドメインの問題があるので、 を通しては とする.は、 に包装するのに便利である.は、 .
まず、赤圏の
クライアントのすべてのコンポーネントは、
最も重要な
簡単ですか?codingを始めましょう.
初期化項目
具体的な内容は直接プロジェクトをご覧ください.
サーバ&爬虫類
サーバがオープンしたら、パラメータ要求
状態管理に
まず
上記のアーキテクチャ図から分かるように、すべてのデータ流通は
まず、
次に、
コードを通して、三つの に保存する. コンポーネントデータ処理
私たちのAPPには全部で二つのコンポーネントがあります.
検索コンポーネント を使用する. に配信する責任がある.
公式の例を見ると、コンポーネント中の
結果、コンポーネントの一部
終わりに
肝心なロジック部分のコードの分析が終わりました.このアプリはこのようなことになります.UI部分は詳しく言わなくて、プロジェクトのソースコードを見てみます.パッケージがAPPになると、まずHBuiderをダウンロードして直接包装すればいいです.セットで
検索犬が提供しているAPIはとても強いですが、注意してください.あまり頻繁に操作しないでください.そうしないとIPは封鎖されます.私のは封鎖されました.
最後の最後に、読んでくれてありがとうございます.私の文章がいいと思ったら、私のコラムに注目してください.またお会いしましょう.
プロジェクトの住所:https://github.com/jrainlau/wechat-subscriptor
ダウンロード&実行
git clone [email protected]:jrainlau/wechat-subscriptor.git
cd wechat-subscriptor && npm install
npm run dev // run in dev mode
cd backend-server && node crawler.js // turn on the crawler server
open `localhost:8080` in your broswer and enjoy it.
プロジェクト紹介WeChatでは多くの公衆番号に注目しています.中身をよく見ています.しかし、往々にして私が文章を読む時、いつも各種の微信のニュースに中断されて、切って行かなければならなくて、返事のニュース、それからいっしょに公衆号に帰って、再び文章を開けて、繰り返して、煩にたえません.その後、WeChatは犬の捜索と協力して、犬を探して直接公衆番号を検索することができますが、なぜこの資源を利用しないで公衆番号を専門に収集するアプリケーションをしますか?このアプリは公衆番号を簡単に検索して収集できます.見たい時はそのまま開けて見ることができます.はい、実は難しくないです.アーキテクチャから発想します.
全体構造
国際慣例は、まずアーキテクチャ図を見ます.
次に技術の選択です.
node
爬虫類使用インターフェースvue
を用いて開発し、vuex
は状態管理mui
をUIフレームとして使用し、後で携帯アプリvue-cli
を用いてプロジェクトを初期化し、webpack
を介して構築するまず、赤圏の
vuex
部分を分析する.APP全体の核心であり、すべてのデータの処理センターでもあります.クライアントのすべてのコンポーネントは、
action
において、非同期要求などの流入データに対する処理を完了し、action
をトリガするmutation
によってstate
によってstate
によってgetter
を介して各コンポーネントに配信され、「単一のデータストリーム」の特徴を満たすとともに、公式に推奨されるやり方にも合致する.最も重要な
vuex
を理解してから、他の部分も無事に章になりました.矢印はデータの流れを表しています.LocalStorage
はお気に入りの内容を保存しています.次のアプリケーションを開く時に内容が失われないようにしてください.nodeサーバはキーワードに基づいて検索犬APIから提供されたデータを収集しています.簡単ですか?codingを始めましょう.
初期化項目
npm install vue-cli -g
は最新版のvue-cli
をインストールし、vue init webpack wechat-subscriptor
は提示の通りに一ステップずつ設置して依存パッケージをインストールした後、プロジェクトのディレクトリに入り、少し変更します.最終ディレクトリ構造は以下の通りです.具体的な内容は直接プロジェクトをご覧ください.
サーバ&爬虫類
/backend-server
フォルダに入り、crawler-server.js
という名前のファイルを新たに作成します.コードは以下の通りです./*** crawler-server.js ***/
'use strict'
const http = require('http')
const url = require('url')
const util = require('util')
const superagent = require('superagent')
const cheerio = require('cheerio')
const onRequest = (req, res) => {
// CORS options
res.writeHead(200, {'Content-Type': 'text/plain', 'Access-Control-Allow-Origin': '*'})
let keyWord = encodeURI(url.parse(req.url, true).query.query)
// recieve keyword from the client side and use it to make requests
if (keyWord) {
let resultArr = []
superagent.get('http://weixin.sogou.com/weixin?type=1&query=' + keyWord + '&ie=utf8&_sug_=n&_sug_type_=').end((err, response) => {
if (err) console.log(err)
let $ = cheerio.load(response.text)
$('.mt7 .wx-rb').each((index, item) => {
// define an object and update it
// then push to the result array
let resultObj = {
title: '',
wxNum: '',
link: '',
pic: '',
}
resultObj.title = $(item).find('h3').text()
resultObj.wxNum = $(item).find('label').text()
resultObj.link = $(item).attr('href')
resultObj.pic = $(item).find('img').attr('src')
resultArr.push(resultObj)
})
res.write(JSON.stringify(resultArr))
res.end()
})
}
}
http.createServer(onRequest).listen(process.env.PORT || 8090)
console.log('Server Start!')
簡単な爬虫類は、クライアントから提供されたキーワードを通じて検索犬に要求を送り、cheerio
を用いて分析して鍵となる情報を得る.ここには検索犬の公式サイトが貼ってあります.自分で試してみてもいいです.http://weixin.sogou.com/サーバがオープンしたら、パラメータ要求
localhost:8090
を持ってコンテンツを取得することができます.状態管理に
Vuex
を使用する.まず
vuex
公式文書を貼り付けます.http://vuex.vuejs.org/en/index.html私を信じてください.中国語版を見ないでください.でないと、英語版で十分です.上記のアーキテクチャ図から分かるように、すべてのデータ流通は
vuex
によって行われ、上記の文書によってvuex
の使用法を理解した後、/vuex
フォルダに入り、コアstore.js
コードを構築する./*** store.js ***/
import Vue from 'vue'
import Vuex from 'vuex'
Vue.use(Vuex)
const state = {
collectItems: [],
searchResult: {}
}
localStorage.getItem("collectItems")?
state.collectItems = localStorage.getItem("collectItems").split(','):
false
const mutations = {
SET_RESULT (state, result) {
state.searchResult = result
},
COLLECT_IT (state, name) {
state.collectItems.push(name)
localStorage.setItem("collectItems", state.collectItems)
},
DELETE_COLLECTION (state, name) {
state.collectItems.splice(state.collectItems.indexOf(name), 1)
localStorage.setItem("collectItems", state.collectItems)
}
}
export default new Vuex.Store({
state,
mutations
})
中のコードについて重点的に分析します.まず、
state
オブジェクトを定義しました.中の2つの属性はお気に入りの内容に対応しています.言い換えれば、APP全体のデータはstate
オブジェクトに保存されています.次に、
mutations
オブジェクトをもう一つ定義します.mutations
を「state
の状態を変更するための一連の方法」と理解することができる.vuex
の概念では、state
だけでmutation
によって修正できるという利点は、アプリケーションの状態をより直感的に明確に管理することができることであり、データをどこに捨ててもいいということではない.コードを通して、三つの
mutation
の役割はそれぞれ:SET_RESULT
:検索結果をstate
COLLECT_IT
:お気に入り操作(localstorage
を含む)に追加するDELETE_IT
:お気に入りからの取り外し操作(localstorage
を含む)私たちのAPPには全部で二つのコンポーネントがあります.
SearchBar.vue
とSearchResult.vue
はそれぞれ検索部分のコンポーネントと結果部分のコンポーネントに対応しています.検索部分にはお気に入り部分が含まれていますので、三つの部分があるとも理解できます.検索コンポーネント
SearchBar.vue
/*** SearchBar.vue ***/
vuex: {
getters: {
collectItem(state) {
return state.collectItems
}
},
actions: {
deleteCollection: ({ dispatch }, name) => {
dispatch('DELETE_COLLECTION', name)
},
searchFun: ({ dispatch }, keyword) => {
$.get('http://localhost:8090', { query: keyword }, (data) => {
dispatch('SET_RESULT', JSON.parse(data))
})
}
}
}
コードが長いです.ここではvuex
部分だけを重点的に紹介します.完全コードはプロジェクトを参照できます.getters
は、store
の中のデータを取得して、サブアセンブリとしてactions
の2つの方法は、store
のためにmutation
を使用するためにデータを公式の例を見ると、コンポーネント中の
action
への参照は複雑であるようだが、実際にはmethods
を介してパラメータを処理することができ、トリガactions
と同時にパラメータを送ることができる.結果、コンポーネントの一部
SearchResult.vue
/*** SearchResult.vue ***/
vuex: {
getters: {
wordValue(state) {
return state.keyword
},
collectItems(state) {
return state.collectItems
},
searchResult(state) {
return state.searchResult
}
},
actions: {
collectIt: ({ dispatch }, name, collectArr) => {
for(let item of collectArr) {
if(item == name) return false
}
dispatch('COLLECT_IT', name)
}
}
}
結果の一部は主に展示にあり、action
をトリガーする必要があるところはお気に入りに追加するだけである.注意すべき点は、重複した追加を避けるべきであるため、for...of
サイクルが使用され、配列中に現在の要素がある場合は追加されなくなる.終わりに
肝心なロジック部分のコードの分析が終わりました.このアプリはこのようなことになります.UI部分は詳しく言わなくて、プロジェクトのソースコードを見てみます.パッケージがAPPになると、まずHBuiderをダウンロードして直接包装すればいいです.セットで
mui
を使ってもっといい効果を体験できます.なぜこんなに多くの人が黒いのですか?検索犬が提供しているAPIはとても強いですが、注意してください.あまり頻繁に操作しないでください.そうしないとIPは封鎖されます.私のは封鎖されました.
Weex
はもう出てきました.Nativeアプリケーションを構築することができます.考えてみると興奮します.気が向いたら本論文のプロジェクトをWeex
バージョンにして遊びます.最後の最後に、読んでくれてありがとうございます.私の文章がいいと思ったら、私のコラムに注目してください.またお会いしましょう.