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

資訊專欄INFORMATION COLUMN

手動(dòng)搭建vue+node單頁(yè)面(二)

陳江龍 / 2633人閱讀

手動(dòng)搭建vue+node單頁(yè)面(二)
環(huán)境搭建好了,開始寫業(yè)務(wù)和后端接口代碼,這一篇講的內(nèi)容也比較簡(jiǎn)單,只適合小白參考;

環(huán)境搭建請(qǐng)參考 《手動(dòng)搭建vue+node單頁(yè)面(一)》:https://segmentfault.com/a/11...

項(xiàng)目地址:https://github.com/liubingyan...

內(nèi)容提要:
1.jsonp獲取baidu搜索框內(nèi)容;
2.node調(diào)用juejin接口獲取前端文章列表;

開發(fā)過程中不會(huì)講的太細(xì),有疑問多百度;

一、獲取baidu搜索框內(nèi)容
就是輸入的同時(shí)下來框展示的內(nèi)容;

在用node調(diào)用百度接口時(shí)候發(fā)現(xiàn)返回的是gbk格式的內(nèi)容,node解析遇到困難,所以改用jsonp的方式;

首先在控制臺(tái)分析接口:

返回值:

很容易看出內(nèi)容中json數(shù)據(jù)的‘s’就是我們想要的內(nèi)容;

接口地址的url內(nèi)容過長(zhǎng),我們將這個(gè)地址復(fù)制到地址欄中經(jīng)過反復(fù)測(cè)試,最終得到:

對(duì)我們有用的參數(shù)只有兩個(gè):wd(輸入框的內(nèi)容)和cb(返回時(shí)調(diào)用的方法名),接下來就可以開發(fā)了;

這個(gè)小功能的開發(fā)涉及的:
1.app.vue:將導(dǎo)航和路由寫在其中,并做簡(jiǎn)單布局;
改之前在src目錄下創(chuàng)建common文件夾,存放公共樣式和方法(base.css等):
比如:

//base.css
//...
.fl{float:left}
.fr{float:right}
//...
//類似這樣的預(yù)定義樣式

app.vue做如下修改:(之后的樣式都不再做詳細(xì)說明)






看效果之前先引入路由,不然頁(yè)面沒東西,src/router文件夾下創(chuàng)建index.js,創(chuàng)建router文件夾的原因還是模塊化開發(fā)的思想,將作用相同的代碼放在一起,利于維護(hù)和開發(fā);

//router/index.js
import Vue from "vue"
import Router from "vue-router"
import Home from "../views/home"

Vue.use(Router)

export default new Router({
    routes: [{
        path: "/",
        name: "home",
        component: Home
    }]
})

別忘了安裝插件

npm i vue-router -save

main.js引入路由配置

//main.js
import Vue from "vue"
import App from "./app"

import router from "./router"http://默認(rèn)加載index文件
new Vue({
    el: "#app",
    router,//注冊(cè)到vue實(shí)例
    render: h => h(App)
})

效果如下:

導(dǎo)航和路由頁(yè)面放在左邊,右邊欄留著放小插件;

3.根據(jù)導(dǎo)航最起碼要有一個(gè)首頁(yè),一個(gè)論壇頁(yè),先做首頁(yè),在src下創(chuàng)建home.vue;
home頁(yè)內(nèi)容有兩個(gè),搜索框和juejin拿到的列表,先做搜索框;

//home.vue





編寫搜索框組件,在src/views下創(chuàng)建search.vue

//search.vue





在src/common下創(chuàng)建base.js添加公共方法(vue有自己的方式將自定義函數(shù)屬性添加到實(shí)例上,自己百度學(xué)習(xí)吧,是通過組件的方式引入,然后通過vue.的方式調(diào)用),這里東西不多,我們就簡(jiǎn)單粗暴點(diǎn)兒,直接在windows下添加方法,調(diào)用也簡(jiǎn)單;

//src/common/base.js代碼比較簡(jiǎn)單,不多解釋了
window.log=console.log;

window.searchFunction = function(val) {
    window.searchInfo = val
    //將搜索結(jié)果保存在searchInfo 中
};

window.creatScript=function(url) {
//選擇promise是它的then方法用起來方便
    return new Promise((resolve, reject) => {
        let script = document.createElement("script");
        script.id = "removeScript";
        script.src = url;
        document.body.appendChild(script);
        script.onload = function() {
            resolve(window.searchInfo);
            document.body.removeChild(document.getElementById("removeScript"));
        }
    });    
};    

在main.js中引入

import "./common/base" 

再看頁(yè)面,效果出來了:

二、獲取juejin文章列表

到目前為止還是沒有寫后端代碼,接下來通過調(diào)用juejin接口來看看一個(gè)簡(jiǎn)單接口怎么寫

寫之前先整理下思路:要寫個(gè)展示組件,一個(gè)后端接口,在把它們聯(lián)系起來;

1.寫組件,在src/views下創(chuàng)建juejinResources.vue文件

//juejinResources.vue(業(yè)務(wù)代碼不再贅述)
  



安裝vue-resource插件

npm i vue-resource -save

將vue-resource注冊(cè)到vue中,修改main.js

//main.js
//....
import VueResource from "vue-resource" 
Vue.use(VueResource)
//....

2.寫后端接口,在service目錄下創(chuàng)建juejinResources.js

//juejinResources.js
var http = require("http");
var log = console.log;
var express = require("express");
var router = express.Router();

//這樣的地址獲取方式跟baidu的一樣,慢慢試;
var url = "http://timeline-merger-ms.juejin.im/v1/get_entry_by_rank?src=web&limit=20&category=5562b415e4b00c57d9b94ac8";

//express自帶路由分配
router.get("/", function(req, res) {
    http.get(url, function(resquest) {
        var html = "";
        resquest.setEncoding("utf-8"); //防止中文亂碼

        //監(jiān)聽data事件,每次取一塊數(shù)據(jù)
        resquest.on("data", function(chunk) {
            html += chunk;
        });

        //監(jiān)聽end事件,如果接口返回獲取完畢,就執(zhí)行回調(diào)函數(shù)
        resquest.on("end", function() {
            //接口返回的是字符串,中文是unicode碼,做了處理才返回給前端
            html=JSON.parse(unescape(html.replace(/u/g, "%u")))
            res.status(200)
            res.json(html)
        })
    })
})

module.exports=router;

3.接口寫好以后就把它們聯(lián)系起來,修改server.js

//server.js
//....在代碼最后添加
//node分配路由的方式,多個(gè)服務(wù)就多寫幾個(gè)分配就行了
//juejinResources.js中用的router.git("/")會(huì)自動(dòng)把"/juejinResources"拼在前面
app.use("/juejinResources",require("./service/juejinResources"))

其實(shí)挺簡(jiǎn)單,來看看效果:

如果接口是https請(qǐng)求,node環(huán)境可能會(huì)出現(xiàn)這樣的報(bào)錯(cuò):

解決辦法網(wǎng)上有很多,但不一定有效,我的就不知道怎么解決了,所以都改成了http請(qǐng)求;

到這里:?jiǎn)雾?yè)面組件-路由-后端接口-服務(wù)就都有了,開發(fā)模式,生產(chǎn)模式也都具備,爬蟲也是用http或則https多次訪問,獲取方式跟這個(gè)其實(shí)是一樣的,拿到數(shù)據(jù)想怎么玩都可以,放到自己數(shù)據(jù)庫(kù)都沒問題。

這個(gè)demo項(xiàng)目還不完整,缺少數(shù)據(jù)庫(kù)和admin后臺(tái)管理,結(jié)構(gòu)已經(jīng)有了,剩下的基本上就是板磚了,不再贅述。

到目前為止的目錄結(jié)構(gòu):

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/94246.html

相關(guān)文章

  • 手動(dòng)搭建vue+node頁(yè)面(一)

    摘要:這里提供手動(dòng)搭建單頁(yè)面開發(fā)生產(chǎn)環(huán)境,并使用寫后臺(tái)代碼,僅供小白參考代碼雖然沒多少,但牽扯的知識(shí)很多,需要逐個(gè)研究后續(xù)內(nèi)容手動(dòng)搭建單頁(yè)面二項(xiàng)目地址內(nèi)容提要,這一章會(huì)從到開發(fā)環(huán)境,生產(chǎn)環(huán)境的搭建思路先實(shí)現(xiàn)單頁(yè)面的然后實(shí)現(xiàn)服務(wù)下的開發(fā)環(huán)境再實(shí) 這里提供手動(dòng)搭建vue單頁(yè)面開發(fā)生產(chǎn)環(huán)境,并使用node寫后臺(tái)代碼,僅供小白參考;代碼雖然沒多少,但牽扯的知識(shí)很多,需要逐個(gè)研究; 后續(xù)內(nèi)容《手動(dòng)搭建...

    The question 評(píng)論0 收藏0
  • 使用webpack手動(dòng)搭建一個(gè)基于vue頁(yè)面應(yīng)用

    摘要:當(dāng)我們面對(duì)復(fù)雜的代碼,當(dāng)我們看到各種配置文件的時(shí)候,你是否會(huì)為此感到頭疼,是否會(huì)覺得心累今天,大家可以跟著我一起,自己來是用構(gòu)建一個(gè)基于單頁(yè)面的應(yīng)用,廢話不多,立即開始創(chuàng)建項(xiàng)目創(chuàng)建項(xiàng)目需要的基礎(chǔ)文件和文件夾安裝以及一些其他的依賴包配置 當(dāng)我們面對(duì)vue-cli 復(fù)雜的代碼,當(dāng)我們看到各種配置文件的時(shí)候,你是否會(huì)為此感到頭疼,是否會(huì)覺得心累?今天,大家可以跟著我一起,自己來是用webpa...

    maybe_009 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<