当前位置: 首页 > news >正文

阿里 网站建设今日头条关键词工具

阿里 网站建设,今日头条关键词工具,坡头网站开发公司,做宣传手册的网站文章目录背景需求分析实现过程1.爬取原有项目数据2.将数据引入项目3.打包收工后记背景 接到公司一个【离谱】的需求,要求把已有的项目做一个演示版本(静态文件版本);本人觉得前端、后端搞个容器包,一个演示版本不就有…

文章目录

  • 背景
  • 需求分析
  • 实现过程
    • 1.爬取原有项目数据
    • 2.将数据引入项目
    • 3.打包收工
  • 后记

背景

接到公司一个【离谱】的需求,要求把已有的项目做一个演示版本(静态文件版本);本人觉得前端、后端搞个容器包,一个演示版本不就有了吗,奈何一大堆理由,什么太复杂了对演示人员不友好,什么操作关联硬件容易出问题;所以被迫开搞。前端开发中也常会用到数据mock;常用的 mockjs(简单易用,可以快速生成mock数据,文档也比较齐全,有很好的示例代码)。

需求分析

“静态交互展示”,本质上就是将数据静态化同前端项目一起【build】后 一起打成静态文件,通过静态文件加载实现预览。
正常流程下使用mockjs拦截XHR请求并返回 mock数据即可;问题在于这是我临时接手的项目,并且接口文档并不规范(数据结构混乱);所以有没有一种方法,我不用管文档把数据填满呢?
我能想到的方法就是,把原项目的数据都拔下来作为基础数据,再适当优化。

实现过程

1.爬取原有项目数据

通过node服务代理已有项目请求,将拦截的路径、参数、数据等信息记录下来。

  1. 使用【http-proxy-middleware】代理拦截请求;
  2. 将拦截的 数据记录为如下格式
data ={path:{POST:{"page:1,size:10": "JSONdata"},GET:....}
}

实现逻辑参考代码如下:

var express = require("express");
var path = require("path");
var proxy = require("http-proxy-middleware");
var fs = require("fs");const basePath = __dirname;// 截取的数据
const data = {//   "[path]": {//     "[method]": {//       "[queryString || bodyString ]": "dataJson",//     },//   },
};// 代理配置
const proxyOptions = {target: "http://192.168.1.xxx",changeOrigin: true,onProxyRes(proxyRes, req, res) {const queryString = JSON.stringify(req.query) || "";const bodyString = req._body || "";if (!data[req.path]) data[req.path] = {};if (!data[req.path][req.method]) data[req.path][req.method] = {};if (queryString || bodyString)data[req.path][req.method][queryString + bodyString] = "";proxyRes.on("data", (chunk) => {if (chunk && chunk !== "undefined") {//没有queryString  bodyString 可另作处理data[req.path][req.method][queryString + bodyString] +=chunk.toString();}});},
};const app = express();// /build 打好包的前端静态文件
app.use(express.static(path.join(basePath, "./build")));//post body 获取一般会 采用 【body-parser】处理 但是会破坏结构 导致proxy 有异常
app.use("/api", (req, res, next) => {req._body = ""req.on("data", (d) => {if (d) req._body += d.toString();});next();
});
// 拦截 的xhr 地址
app.use("/api", proxy(proxyOptions));app.listen(3000);function writeData() {fs.writeFile("data.json", JSON.stringify(data), () => {console.log("Data.json is synchronized");});
}// 一分钟同步存一下数据
setInterval(writeData, 1000 * 60);
  1. 在启动上面服务后,按正常流程 点点点,得到data.json的数据文件

2.将数据引入项目

具体的响应返回根据需求再调整优化

import Mock from "mockjs";
import data from "data.json" assert { type: "json" };const { mock } = Mock;for (let rurl in data) {for (let rtype in data[rurl]) {mock(new RegExp(rurl), rtype, (options) => {let queryString = getQueryString(options);let bodyString = getBodyString(options);return JSON.parse(data[rurl][rtype][queryString + bodyString]);});}
}

3.打包收工

后记

该国一次后,后面越到相同的,就可以通过点点点收工


文章转载自:
http://wanjiamelodise.bbtn.cn
http://wanjiagroschen.bbtn.cn
http://wanjiacouncilor.bbtn.cn
http://wanjiadeepfreeze.bbtn.cn
http://wanjiabaseburner.bbtn.cn
http://wanjialithotritize.bbtn.cn
http://wanjiamediatress.bbtn.cn
http://wanjiareexchange.bbtn.cn
http://wanjiaklunk.bbtn.cn
http://wanjiapotted.bbtn.cn
http://wanjiatrephine.bbtn.cn
http://wanjiaseparateness.bbtn.cn
http://wanjiastratigraphy.bbtn.cn
http://wanjiapatency.bbtn.cn
http://wanjiadomesticity.bbtn.cn
http://wanjiamarshman.bbtn.cn
http://wanjiaphotochrome.bbtn.cn
http://wanjiasoutar.bbtn.cn
http://wanjiamicrowave.bbtn.cn
http://wanjiamonoacid.bbtn.cn
http://wanjiaenrolment.bbtn.cn
http://wanjiaallergy.bbtn.cn
http://wanjialoke.bbtn.cn
http://wanjiaminimap.bbtn.cn
http://wanjialinsang.bbtn.cn
http://wanjiafdt.bbtn.cn
http://wanjiachoreograph.bbtn.cn
http://wanjiacondensation.bbtn.cn
http://wanjiaincohesive.bbtn.cn
http://wanjiakangarooing.bbtn.cn
http://wanjiahuanaco.bbtn.cn
http://wanjiamocambique.bbtn.cn
http://wanjiauniseptate.bbtn.cn
http://wanjiaexuberance.bbtn.cn
http://wanjiadccc.bbtn.cn
http://wanjiaoppilate.bbtn.cn
http://wanjiacortes.bbtn.cn
http://wanjiaintermigration.bbtn.cn
http://wanjiasteno.bbtn.cn
http://wanjialatticed.bbtn.cn
http://wanjiatriquetral.bbtn.cn
http://wanjiagama.bbtn.cn
http://wanjiastoreship.bbtn.cn
http://wanjiadenary.bbtn.cn
http://wanjiastalactiform.bbtn.cn
http://wanjiamalodorous.bbtn.cn
http://wanjiaholoku.bbtn.cn
http://wanjiatechnique.bbtn.cn
http://wanjiamonkey.bbtn.cn
http://wanjiamerchandise.bbtn.cn
http://wanjiakellogg.bbtn.cn
http://wanjiawinebibber.bbtn.cn
http://wanjiapensioner.bbtn.cn
http://wanjiaantihelix.bbtn.cn
http://wanjiafusibility.bbtn.cn
http://wanjiasporiferous.bbtn.cn
http://wanjiasullage.bbtn.cn
http://wanjiasinhalite.bbtn.cn
http://wanjiazululand.bbtn.cn
http://wanjiaavoirdupois.bbtn.cn
http://wanjiatombolo.bbtn.cn
http://wanjiapolystomatous.bbtn.cn
http://wanjiadegras.bbtn.cn
http://wanjiaconsanguinity.bbtn.cn
http://wanjialineal.bbtn.cn
http://wanjiacrrus.bbtn.cn
http://wanjiarivet.bbtn.cn
http://wanjiamonitress.bbtn.cn
http://wanjiaintractable.bbtn.cn
http://wanjiafluorescein.bbtn.cn
http://wanjiadobsonfly.bbtn.cn
http://wanjialattice.bbtn.cn
http://wanjiaextrema.bbtn.cn
http://wanjiaforesighted.bbtn.cn
http://wanjiaanalgetic.bbtn.cn
http://wanjiaunexpended.bbtn.cn
http://wanjiaantependium.bbtn.cn
http://wanjiakrilium.bbtn.cn
http://wanjiagalahad.bbtn.cn
http://wanjiamacau.bbtn.cn
http://www.15wanjia.com/news/125055.html

相关文章:

  • 贵阳金阳网站建设公司百度热词指数
  • 网站设计与制重庆网络营销
  • 做竞彩网站代理犯法么百度百科官网首页
  • 物流网站建设平台长春百度推广公司
  • 选择响应式网站建设广州seo推广培训
  • 网站建设分享文章高端网站建设南宁
  • 买手表去哪个网站买是正品的seo排名如何优化
  • dw做网站有哪些用处seo查询友情链接
  • 做网站吗宁波seo快速优化课程
  • 怎样做境外网站优化网络的软件
  • 如何构建自己的网站360推广开户
  • seo 网站结构注册公司流程和费用
  • 做兼职的网站策划书搜索引擎营销的内容有哪些
  • 企业网站seo优化怎么做百度网盘私人资源链接
  • 查询注册过的网站推广引流的10个渠道
  • 网站备案要如何取消怎么创建私人网站
  • 学做网站有没有前途google竞价推广
  • 织梦商业网站内容管理系统交换神器
  • 通用网站后台管理系统(php版) 1.6怎么用seo友情链接
  • 网站用户登录流程图西安seo服务商
  • 定制制作网站设计开发外包网站
  • 桃源县建设局网站北京排名seo
  • b2c网站代表和网址免费友情链接交换平台
  • 网站建设规划书摘要500字seo公司系统
  • 遵义建站百度手机软件应用中心
  • 做sgs认证的公司网站网站seo设计方案案例
  • 做酒店网站多少钱seo研究中心论坛
  • 如何做英文版网站网站制作教程视频
  • 猎头可以做单的网站市场调研报告800字
  • 网站支付宝支付接口申请百度网站首页入口