亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

Nuxt配合Node在實際生產中的應用詳解

2019-11-19 13:19:52
字體:
來源:轉載
供稿:網友

上個星期,甲方說要在應用上做一個促活活動(其實就是讓用戶領OFO的騎車券),考慮到之前在我另一個應用上已經做過客戶端token驗證,想想,擼起袖子直接在之前的Node上開搞吧。

Nuxt

這個東西類似與React中的Next,做Vue服務端渲染在Nuxt確實挺方便的,整個目錄結構與Vue-Cli也差不多,但我覺得更清晰明了,而且有很豐富的配置,包括我最喜歡的頂部Loadding條啊、Layer主題模板啊、服務端渲染有益于SEO啊、自動生成Router啊等等等等。這里我就不詳細展開了,選擇他主要是用習慣了,而且性能也很不錯。

Express

它就是一個Koa、egg等的一個服務端的工具,封裝很多便捷的方法。這里也不詳細展開。

第一步 完成靜態頁面

在這里就不詳細說明HTML怎么構建、Vue使用方法等等等不相關的問題,首先頁面效果如下圖:

 

點擊確認領取后,向后端發送請求,獲取券碼:

 

大致業務流程就是這樣子了。

第二步 基于webview完成token驗證

甲方公司的token是怎么給到用戶的呢?

  1.  用戶登錄客服端
  2. 戶在webview訪問相應的地址
  3. 客戶端把token等信息綁定在地址上讓服務端接受,并向服務端發送GET請求
  4. 服務端接受到Token后,根據Token信息驗證用戶身份并返回頁面給用戶

所以也就是相當于,此時我手上的Node需要完成一個Token驗證的需求,開搞:

這里必須說一下Session這個東西,一開始當我完成了Token驗證的時候,可是發現兩個用戶同時訪問的時候,后訪問者會重新執行一次對應請求里的方法,相當于很多數據都初始化甚至重新賦值。完全不知道怎么把用戶分開,問了一下JAVA的同學,他們說框架自帶會分開,這就讓我很憂郁了。其實,他們也知道Session這個東西,只是一直這樣用后習慣了也就突然說不清楚甚至想到它的存在了。

我一開始想到的是用Cookie驗證對應瀏覽器,但總覺得這種方法有點古老,不夠高大上(個人主觀看法,勿噴),儲存量也很有限。所以又探索了一天,得知有個Session這個東西可以驗證對應瀏覽器(好吧,其實也就是把Cookie當成數據索引)。知道了有這么一回事之后也就茅塞頓開了。

// 引入一些工具const http = require('http')const express = require("express");const session = require('express-session');const nuxtapp = express(); // 創建一個express應用// 設置SESSION配置nuxtapp.use(session({ secret: 'key' // 建議使用 128 個字符的隨機字符串 }));// 處理OPTIONS請求(axios發送POST請求時會先發送一個OPTION請求驗證服務器的連通情況)nuxtapp.use(function (req, res, next) { if ('OPTIONS' === req.method) {  res.sendStatus(200); } else {  next(); }});// 寫一個驗證Token的接口nuxtapp.get('/getphone', (req, res) => {  if (!req.query.token) {   // if else ...   res.sendStatus(200)   return;  }  // 這里創建請求只是舉一個例子,有的Token可以本地解析,有的需要服務端向另一個服務端請求解析。(參考微信)  const request = http.request({   host: "api.example.com",   headers: {    'Content-Type': ' application/json',    'Accept-Encoding': 'utf-8', //這里設置返回的編碼方式 設置其他的會是亂碼    'Accept-Language': 'zh-CN,zh;q=0.8',    'Connection': 'keep-alive',   },   path: '/getTokenorSth',   port: 'port',   method: 'POST'  }, response => {   let data = ""; // 創建變量記錄數據   response.on("data", function (chunk) {    data += chunk   })   response.on("end", function () { // 設置seesion    try {     if (!req.session.id) {      // set session like : req.session.id= JSON.parse(data)     }     res.sendStatus(200)    } catch (err) {     console.log(err);     res.sendStatus(500)    }   })  }).on('error', (e) => {   console.log(`錯誤信息: ${e.message}`);   res.sendStatus(500)  });  // POST Data  request.write(JSON.stringify({    example:example,    token: req.query.token  })); // 用戶傳過來的數據 post  request.end();})nuxtapp.listen(port || 80, '0.0.0.0')console.log("已開啟服務器,請訪問 ―― localhost:" + port || 80)

第三步 服務端代理(這里我也有個點不是很確定,所謂淘寶Node+JAVA是不是就是這種模式)

畢竟我還是個前端,功能方面的實現還是交給資深大JAVA吧(若是給我時間,我還真的想寫一下SQL復習一下)

用戶訪問的時候還是向Node請求,這里需要提一點的就是,假如后端提供了很多接口,你不一定每個都要寫一個app.get(‘/api')或者什么,express的文檔上有提到類似這種寫法:

nuxtapp.all(["/api1/*","/api2/*"], requestFunction)

其他就跟上面token驗證差不多了

第四步 用Express執行Nuxt

在Nuxt官網上其實也有部分代碼教你如何用自己寫的Node去運行,但一直不是很完善,有點差強人意。我在這里就補充一下我的理解, 哪里寫得不對,請盡管噴,謝謝噴我的每一個人 。

// nuxtconst { Nuxt, Builder} = require('nuxt') // 引入核心構建屬性// 判斷開發環境const isProd = (process.env.NODE_ENV === 'production')const port = process.env.PORT || 80// 引入nuxt配置const config = require('./nuxt.config.js')config.dev = !isProd;const nuxt = new Nuxt(config);// 判斷生產模式 dev(開發者模式)表示重新構建 ;pro(生產模式)表示直接從yanr build的文件直接執行if (config.dev) { new Builder(nuxt).build()  .then(listen)  .catch((error) => {   console.error(error)   process.exit(1)  })} else { listen()}

以上的listen就是我在第二、三步寫的相應接口的express服務器啦。

那么nuxt其實還并沒有在代碼中執行,new Nuxt一個Nuxt實例后返回一個nuxt方法,它其實是根據request,response去執行相應的渲染,其中我們要考慮到express()的各種接口的執行順序,假如一開始就匹配到了第二步的代碼的get請求,那么寫在第二步代碼后的all方法中的各種接口是接收不到的。

我考慮到的是接口不是無緣無故執行的,但用戶請求是必然發生的。那么也就是當用戶除了故意發送請求,全部由Nuxt接手。所以Nuxt會是放在最后讓其渲染頁面并交給用戶,為了方便驗證Token,我把驗證Token的請求放在首頁讓瀏覽器捕獲Token以及相應信息后交給Node執行手動登陸。(其實也可以通過在nuxt渲染前判斷是否存在Token來決定是否進行token驗證,我就不在這里再進行大量代碼的展示了)

結合以上思路,也就是在最后捕獲所有GET請求并交手給Nuxt即可:

// 最后捕獲nuxt渲染nuxtapp.get('/*', (req, res) => { nuxt.render(req, res)})

Demo:jasontan.cn

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国内精品在线一区| 国内精品久久久| 亚洲xxxx在线| 一区二区三区精品99久久| 国产成人精品视频在线观看| 国产一区玩具在线观看| 日韩精品极品毛片系列视频| 亚洲人成亚洲人成在线观看| 欧美激情伊人电影| 国产精品老女人精品视频| 久久久精品2019中文字幕神马| 亚洲乱码国产乱码精品精| 亚洲国产成人在线视频| 国产精品成人一区| 日韩**中文字幕毛片| 亚洲欧美另类国产| 成人免费午夜电影| 成人黄色在线播放| 欧美一区二区三区精品电影| 日韩大胆人体377p| 国产亚洲欧美一区| 亚洲欧美日韩网| 久久成人精品电影| 大量国产精品视频| 亚洲欧美制服综合另类| …久久精品99久久香蕉国产| 久久精品这里热有精品| 久久久久久久久久久网站| 国产自摸综合网| 国产精品9999| 青草青草久热精品视频在线网站| 琪琪第一精品导航| 亚洲国产第一页| 国产一区二区三区久久精品| 日韩精品丝袜在线| 亚洲欧美在线第一页| 国产成人精品一区| 成人av番号网| 欧美极品在线视频| www.日本久久久久com.| 成人免费xxxxx在线观看| 精品国产鲁一鲁一区二区张丽| 国产日韩精品在线观看| 91精品国产91久久久久久最新| 久久视频在线直播| 欧美激情亚洲精品| 日韩va亚洲va欧洲va国产| 日韩精品视频在线免费观看| 久久综合电影一区| 久久国产精品视频| 国产福利精品在线| 91国产美女在线观看| 亚洲色无码播放| 亚洲欧美另类自拍| 欧美色视频日本高清在线观看| 57pao国产成人免费| 久久999免费视频| 亚洲无线码在线一区观看| 久久久精品国产亚洲| 97久久伊人激情网| 亚洲午夜精品视频| 精品露脸国产偷人在视频| 亚洲色图国产精品| 日韩激情片免费| 亚洲精品成人av| 性欧美暴力猛交69hd| 国产欧美中文字幕| 欧美精品在线视频观看| 亚洲精品在线看| 国内精品久久久久久久| 成人激情视频在线| 久久精品国产69国产精品亚洲| 国产精品狼人色视频一区| 欧美亚洲午夜视频在线观看| 疯狂欧美牲乱大交777| 国内精品久久久久久久久| 国产精品美女www爽爽爽视频| 欧美电影院免费观看| 亚洲性av在线| 免费99精品国产自在在线| 91成人免费观看网站| 日本伊人精品一区二区三区介绍| 亚洲国产中文字幕久久网| 91av在线免费观看视频| 欧美国产日韩一区二区三区| 日韩精品一二三四区| 一区二区三区日韩在线| 亚洲成人精品视频在线观看| 亚洲国产美女久久久久| 国产成人精品av在线| 国产精品吴梦梦| 97成人在线视频| 亚洲精品v欧美精品v日韩精品| 亚洲一区二区中文| 久久视频免费观看| 欧美久久精品午夜青青大伊人| 精品国产一区二区三区久久狼5月| 久久久免费电影| 成人黄色av免费在线观看| 国产裸体写真av一区二区| 欧美精品videos| 国产精品日日摸夜夜添夜夜av| 奇门遁甲1982国语版免费观看高清| 日韩欧美一区二区三区久久| 国产成人一区二区三区小说| 97国产在线视频| 伊人久久五月天| 国产精品女视频| 久久亚洲精品一区| 国产成人久久精品| 国产91在线播放精品91| 免费成人高清视频| 久久久99久久精品女同性| 国产激情视频一区| 国产日本欧美一区二区三区在线| 国产精品久久久久久亚洲调教| 精品欧美一区二区三区| 亚洲娇小xxxx欧美娇小| 欧美精品在线免费播放| 国产丝袜视频一区| 日韩在线小视频| 国产一区二区激情| 国产精品wwwwww| 国内精品中文字幕| 2019中文字幕在线观看| 欧美精品在线播放| 午夜精品一区二区三区av| 亚洲va久久久噜噜噜| 亚洲最新中文字幕| 精品国产乱码久久久久久天美| 最近2019中文字幕第三页视频| 97人人模人人爽人人喊中文字| 亚洲性猛交xxxxwww| xvideos成人免费中文版| 亚洲欧美在线一区二区| 日韩电影大片中文字幕| 日韩欧美aaa| 亚洲国产一区自拍| 精品久久久久久久久中文字幕| 欧美视频免费在线| 日本高清不卡的在线| 色综合男人天堂| 91香蕉嫩草神马影院在线观看| 91经典在线视频| 欧美电影免费观看高清完整| 亚洲精品av在线| 国内精品久久影院| 欧美性20hd另类| 日韩久久午夜影院| 黑人与娇小精品av专区| 亚洲乱码一区av黑人高潮| 亚洲美女精品成人在线视频| 亚洲丁香婷深爱综合| 国产精品久久久久一区二区| 久久精品久久精品亚洲人| 亚洲日本欧美日韩高观看| 啪一啪鲁一鲁2019在线视频| 国产精品自拍网| 91精品视频免费看| 日韩一区二区三区在线播放| 亚洲男人天天操| 亚洲视频在线观看网站| 91久久嫩草影院一区二区| 亚洲新声在线观看|