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

网站建设及托管合同青岛快速排名

网站建设及托管合同,青岛快速排名,宣传片拍摄合同交印花税吗,做营销型网站目录 mock模拟数据:data/static.js 路由:index.js 服务器:server.js yarn /node 启动服务器:yarn start 客户端:修改代理路径(修改设置后都要重启才生效) 示例 后端框架express构建服务器 前端发起请求 静态数…

目录

mock模拟数据:data/static.js

路由:index.js

服务器:server.js

yarn /node 启动服务器:yarn start

客户端:修改代理路径(修改设置后都要重启才生效)

示例

后端框架express构建服务器

前端发起请求

静态数据:res.status === 304

3xx状态码:重定向+缓存

301 Moved Permanently:永久重定向,搜索引擎会更新

302 Found:临时重定向,搜索引擎通常不会更新索引

304 Not Modified:资源未修改,可以使用本地缓存

JSON解析和生成

JSON生成JSON.stringify(value,replacer?,space?)​​​​​​​


Image · nuysoft/Mock Wiki · GitHub

适用于前端先行,api中有设置mock 

mock模拟数据:data/static.js

// 导入 Mock 模块
import Mock from 'mockjs'// 获取 Random 对象
const Random = Mock.Random// 生成随机 ID、邮箱、IP、城市、日期时间等数据
//Random.id() 再@id  等价于 直接使用  Random.id(),推荐用@id,简洁
Random.id()
Random.email()
Random.ip()
Random.city()
Random.datetime()
Random.now()
Random.cname()// 手机号前缀列表
const phonePrefix = ['132', '135', '189']
//Math.random() 函数返回一个 0 到 1 之间的随机小数
//index索引值将被用来选择一个前缀。
const index = Math.floor(Math.random() * phonePrefix.length)
//随机的8位数字串
const phone = phonePrefix[index] + Mock.mock(/\d{8}/)// 静态数据对象
const static_data = {// 登出模拟数据logout: {// 从[0, 200]中随机选择一个元素作为模拟数据"code|1": [0, 200],"data": null,"message|1": ["执行成功"]},// 登录模拟数据login: {"code": 1,"data": {"datas": [{"user": {"status": 1,"userid": "@id","userName": Random.string('lower', 5),  // 随机小写字母用户名"createTime": "@datetime",  // 随机日期时间"modifyTime": "@now",  // 当前时间"leader|1": [true, false]  // 随机领导状态},"resources": null}]},"message": "执行成功"},// 用户信息模拟数据info: {"code": 1,"data": {"datas": [{"userid": "@id","userName": Random.string('lower', 5),  // 随机小写字母用户名"realName": "@cname",  // 随机中文姓名"createTime": "@datetime",  // 随机日期时间"modifyTime": "@now",  // 当前时间// @id() 是 Mock.js 提供的一个占位符,用于生成一个随机的唯一标识符。与之前的 @id 不同,这里使用了括号,这表示它会生成一个新的唯一标识符,而不是使用同一个。"orgId": "@id()",  // 随机组织 ID"email": "@email",  // 随机邮箱"phone": phone,  // 随机手机号// true,生成的城市名会带有省份,例如:"广东省深圳市""city": "@city(true)",  // 随机城市名"ip": "@ip",  // 随机 IP 地址"leader|1": [true, false]  // 随机领导状态}]},"message": "执行成功"}
}// 生成模拟数据并导出
let loginMock = Mock.mock(static_data.login),logoutMock = Mock.mock(static_data.logout),infoMock = Mock.mock(static_data.info)export {loginMock,logoutMock,infoMock
}// 使用Mock.mock来生成模拟数据
const data = Mock.mock({code: 1,data: {pid: '@id',           // 生成随机的IDdate: Random.now(),   // 生成当前时间'list|1-10': [{       // 生成1到10个对象的数组'id|+1': 1,        // 从1开始,递增生成id'valiue|+1': Random.increment()  // 使用Random.increment()生成递增的值}]},message: 'succ'         // 设置消息
})const getItem = JSON.stringify(data, null, 4)

路由:index.js

import { loginMock, logoutMock, infoMock } from './data/static.js'
// 定义 user 函数,用于处理路由和请求
const user = function (app) {// 登录app.get('/api/user/login', (req, res) => {res.send(loginMock);});// 用户信息app.get('/api/user/info', (req, res) => {res.send(infoMock);});// 退出app.get('/api/user/logout', (req, res) => {res.send(logoutMock);});
};export default user

服务器:server.js

node/express都可实现,express代码量更少

import express from 'express'
import bodyParser from 'body-parser'
// chalk加颜色的
import chalk from 'chalk'// 创建一个Express应用程序实例
let app = express();
// 使用body-parser中间件解析urlencoded和json请求体
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());// 用户权限
import user from './user/index.js';
user(app);// 首页
import home from './home/index.js';
home(app);// 上传
import upload from './upload/index.js';
upload(app);// 监听端口以便接受HTTP请求
// 启动监听
app.listen(5899, () => {console.log(chalk.blue('Express mock server listening on port 5899'));
});

yarn /node 启动服务器:yarn start

客户端:修改代理路径(修改设置后都要重启才生效)

​​​​​​​

const configStatic = {title: '后台',  // 网站的标题icon: '//c/favicon.ico',  // 网站的图标路径publicPath: {development: '/',  // 开发环境的公共路径online: '//ment/',  // 在线环境的公共路径uat: '//jment/uat',  // UAT环境的公共路径(User Acceptance Testing”(用户验收测试))test: '//ent/test'  // 测试环境的公共路径},proxy: {'/api': {  // 代理规则,将以 /api 开头的请求转发到指定的目标地址target: 'http://localhost:5899',  // 代理的目标地址changeOrigin: true,  // 设置请求头中的 Origin 字段为目标地址,用于处理跨域//pathRewrite: {// '^/api': '/'  // 修改请求路径,将 /api 替换为空字符串//}}}
}module.exports = configStatic

示例

后端框架express构建服务器

// 引入所需的模块和数据
import express from 'express';
import { applyConfMock } from './data/static.js';const app = express();
const port = 3000; // Replace with your desired port number// 处理 POST 请求
app.use(express.json());app.post('/api/upload/applyconf', (req, res) => {const id = req.body.id; // Get the id from the request bodyconst result = applyConfMock[id]; // Use the id to get the corresponding datares.send(result);
});// 启动服务器
app.listen(port, () => {console.log(`Server is listening at http://localhost:${port}`);
});

前端发起请求

const id = 123; // Replace with the actual id value
const data = { id: id }; // Create an object with the id propertyfetch('/api/upload/applyconf', {method: 'POST',headers: {'Content-Type': 'application/json'},body: JSON.stringify(data)
})
.then(response => response.json())
.then(result => {// Handle the response result
})
.catch(error => {// Handle errors
});

静态数据:res.status === 304

axios默认会处理304响应,不会返回304状态码的内容,而是直接使用之前的缓存数据。

3xx状态码:重定向+缓存

301 Moved Permanently:永久重定向,搜索引擎会更新

302 Found:临时重定向,搜索引擎通常不会更新索引

304 Not Modified:资源未修改,可以使用本地缓存

JSON解析和生成

var str = '{"name": "参宿","id":7}';      //'JSON字符串'
var obj = JSON.parse(str);                //JSON.parse(str)
console.log(obj);                       //JSON的解析(JSON字符串转换为JS对象)//Object { name: "参宿", id: 7 }
var jsonstr = JSON.stringify(obj);        //JSON.stringify(obj)
console.log(jsonstr);                     //JSON的生成(JS对象转换为JSON字符串)JSON.parse(text[, reviver])//reviver函数参数,修改解析生成的原始值,调用时机在 parse 函数返回之前。
//k:key,v:value
JSON.parse('{"p": 5}', function (k, v) {if(k === '') return v;     // 如果到了最顶层,则直接返回属性值,return v * 2;              // 否则将属性值变为原来的 2 倍。
});                            // { p: 10 }//从最最里层的属性开始,一级级往外,最终到达顶层,也就是解析值本身
JSON.parse('{"1": 1, "2": 2,"3": {"4": 4, "5": {"6": 6}}}', function (k, v) {console.log(k); // 输出当前的属性名,从而得知遍历顺序是从内向外的,// 最后一个属性名会是个空字符串。return v;       // 返回原始属性值,相当于没有传递 reviver 参数。
});// 1
// 2
// 4
// 6
// 5
// 3
// ""

JSON生成JSON.stringify(value,replacer?,space?)

  1. value: 要转换的 JavaScript 对象、数组、字符串、数字、布尔值或 null
  2. replacer (可选): 一个函数或数组,用于控制转换过程中的属性过滤和转换操作。
  3. space (可选): 用于控制输出字符串的格式化,可以是一个字符串或数字。

如果是一个数字,表示缩进的空格数;

如果是一个字符串,表示使用该字符串作为缩进。

const data = {name: "Alice",age: 25,address: "123 Main St",secretInfo: "This is a secret"
};// 使用 replacer 函数来过滤掉 secretInfo 属性
const jsonStringWithReplacer = JSON.stringify(data, (key, value) => {if (key === "secretInfo") {return undefined; // 过滤掉 secretInfo 属性}return value;
}, 2);console.log(jsonStringWithReplacer);const data = {name: "Bob",age: 28,hobbies: ["coding", "gaming"],address: "456 Elm St"
};// 使用 replacer 数组来只保留 name 和 hobbies 属性
const jsonStringWithArrayReplacer = JSON.stringify(data, ["name", "hobbies"], 2);console.log(jsonStringWithArrayReplacer);
import Mock from 'mockjs'// 定义模板
const template = {'list|1-10': [{}]
}// 生成模拟数据,转换为 JSON Schema 格式的数据
// JSON Schema 来验证它是否符合预期的数据结构
const data = Mock.toJSONSchema(template)// 测试日志
console.log(JSON.stringify(data, null, 4))


文章转载自:
http://dinncomegatherm.tpps.cn
http://dinncounglue.tpps.cn
http://dinncopotatory.tpps.cn
http://dinncosuperstate.tpps.cn
http://dinncorafvr.tpps.cn
http://dinncovenom.tpps.cn
http://dinncosmasher.tpps.cn
http://dinncokickball.tpps.cn
http://dinnconumeroscope.tpps.cn
http://dinncovilleggiatura.tpps.cn
http://dinncodeviser.tpps.cn
http://dinncodifferentia.tpps.cn
http://dinncowingspan.tpps.cn
http://dinncotransformant.tpps.cn
http://dinncoghaut.tpps.cn
http://dinncopodocarp.tpps.cn
http://dinncosecondarily.tpps.cn
http://dinncoostentatious.tpps.cn
http://dinncouninterruptedly.tpps.cn
http://dinncoinsalubrity.tpps.cn
http://dinncodrudgery.tpps.cn
http://dinncoenepidermic.tpps.cn
http://dinncoglobality.tpps.cn
http://dinncospicewood.tpps.cn
http://dinncopsychometrical.tpps.cn
http://dinncopotecary.tpps.cn
http://dinncoappraisingly.tpps.cn
http://dinncoquarters.tpps.cn
http://dinncoluminescence.tpps.cn
http://dinncoultraliberal.tpps.cn
http://dinncoinstinctive.tpps.cn
http://dinncoecclesiarch.tpps.cn
http://dinncodilettantish.tpps.cn
http://dinncocrazy.tpps.cn
http://dinncoranula.tpps.cn
http://dinncodashdotted.tpps.cn
http://dinncobenzpyrene.tpps.cn
http://dinncosudan.tpps.cn
http://dinncobrasses.tpps.cn
http://dinncorushes.tpps.cn
http://dinncoacerbating.tpps.cn
http://dinncovirl.tpps.cn
http://dinncoastringe.tpps.cn
http://dinncoinadvertency.tpps.cn
http://dinncomarmatite.tpps.cn
http://dinncophotosensitizer.tpps.cn
http://dinncogrumbler.tpps.cn
http://dinnconene.tpps.cn
http://dinncolasecon.tpps.cn
http://dinncotheosophical.tpps.cn
http://dinncomobile.tpps.cn
http://dinncopyrogravure.tpps.cn
http://dinncogoogol.tpps.cn
http://dinncopopsy.tpps.cn
http://dinncocursorial.tpps.cn
http://dinncoangulated.tpps.cn
http://dinncoamu.tpps.cn
http://dinncostereotypy.tpps.cn
http://dinncodefecate.tpps.cn
http://dinncotrimming.tpps.cn
http://dinncoambilingual.tpps.cn
http://dinncoaldohexose.tpps.cn
http://dinncooverset.tpps.cn
http://dinncotv.tpps.cn
http://dinncofilch.tpps.cn
http://dinncovita.tpps.cn
http://dinncodebilitate.tpps.cn
http://dinncopeduncle.tpps.cn
http://dinncorhizome.tpps.cn
http://dinncoheliolithic.tpps.cn
http://dinncodatum.tpps.cn
http://dinncoleverage.tpps.cn
http://dinncoimprecise.tpps.cn
http://dinncobombinate.tpps.cn
http://dinncorooftop.tpps.cn
http://dinncosubcontract.tpps.cn
http://dinncohenhouse.tpps.cn
http://dinncotaberdar.tpps.cn
http://dinncodipping.tpps.cn
http://dinncoschizothymic.tpps.cn
http://dinncoirreligion.tpps.cn
http://dinncoshotmaking.tpps.cn
http://dinncoendoblastic.tpps.cn
http://dinncocornetti.tpps.cn
http://dinncoassignable.tpps.cn
http://dinncodern.tpps.cn
http://dinncoblockship.tpps.cn
http://dinncobushranger.tpps.cn
http://dinncowashland.tpps.cn
http://dinncosiquis.tpps.cn
http://dinncowellesley.tpps.cn
http://dinncorapc.tpps.cn
http://dinncounci.tpps.cn
http://dinncohazily.tpps.cn
http://dinncozeitgeist.tpps.cn
http://dinncoknocker.tpps.cn
http://dinncosaltine.tpps.cn
http://dinncocuneiform.tpps.cn
http://dinncolayperson.tpps.cn
http://dinncoabidance.tpps.cn
http://www.dinnco.com/news/101856.html

相关文章:

  • 接做效果图网站泰安做网站公司哪家比较好
  • 影视网站建设需要学什么seo优化软件有哪些
  • 专门做图的网站网站seo标题是什么意思
  • 广告发布登记管理规定厦门seo关键词优化代运营
  • 专业网站开发培训石家庄网络推广优化
  • 哪个网站做的win10系统好点金推广优化公司
  • 网站设计潮流视频号下载器手机版
  • php网站开发视频网络软文发布
  • 北京模板建站公司打开2345网址大全
  • 电子科技大学网站开发制定合同专业做网站设计
  • wordpress默认账号密码荥阳网站优化公司
  • 做网站销售有前景吗百度开放平台登录
  • 免费外贸网站源码百度竞价推广账户
  • 买奢侈品代工厂做的产品的网站外链群发软件
  • 海南建设厅网站论坛软文案例
  • 济南软件网站建设网站制作的流程是什么
  • 长沙网站建设zh68实时seo排名点击软件
  • 毕业设计心理评测网站开发百度学术官网论文查重免费
  • 怎样为网站做外链b站推广网站2024下载
  • 静态网页素材百度seo提高排名费用
  • 无锡网站优化工作室推广优化seo
  • 北京市建设厅网站深圳网站设计
  • 保山网站建设服务网站排名seo培训
  • 做网站婚介简历怎么写平台推广策略都有哪些
  • 萝岗定制型网站建设俄罗斯网络攻击数量增长了80%
  • 24免费医生在线咨询男科seo描述快速排名
  • 国内做网站最大的公司西安网络推广seo0515
  • phpcms 怎么做网站网络营销和市场营销的区别
  • 江苏建设信息官网网站seo零基础培训
  • 太原在线网站建设seo托管服务