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

网站怎么做组织图网站排名在线优化工具

网站怎么做组织图,网站排名在线优化工具,番禺网站建设开发,ai智能建站前言 今天我对比了以下node.js的express与python的fastAPI,我决定我还是出一期关于node.jsmangoDB小程序的小案例吧。 不是python的fastAPI不好用,因为fastAPI是python较新的技术,我不敢果断发出教学文章(这件事情还是留着给pyt…

前言

今天我对比了以下node.js的express与python的fastAPI,我决定我还是出一期关于node.js+mangoDB+小程序的小案例吧。

不是python的fastAPI不好用,因为fastAPI是python较新的技术,我不敢果断发出教学文章(这件事情还是留着给python大佬们叭~)

技术栈

  1. node.js
  2. 微信小程序
  3. JavaScript
  4. mongoDB
  5. express(node.js web框架)
  6. mongoose(mongoDB管理器)

mongDB优点

  1. 灵活的数据模型:

    • MongoDB是一个文档型数据库,使用BSON(Binary JSON)格式存储数据。这种文档型结构使得存储的数据可以非常灵活,可以包含不同类型的数据和嵌套结构,适合处理复杂的数据模型。
  2. 横向扩展(水平扩展):

    • MongoDB支持横向扩展,可以通过添加更多的节点来提高性能和容量。这种能力使得MongoDB在处理大规模数据和高负载时表现出色。
  3. 高性能:

    • MongoDB采用了索引、聚合框架和内置分片等技术,以提供高性能的数据查询和检索。它还具有内置的缓存机制,能够有效地减轻数据库的负载。
  4. 自动分片(Sharding):

    • MongoDB支持自动分片,可以将大型数据集水平划分成小块,分布在多个服务器上。这有助于提高查询性能和负载均衡。
  5. 丰富的查询语言:

    • MongoDB提供强大而灵活的查询语言,支持各种条件查询、范围查询、正则表达式等。同时,它还支持索引,加速查询操作。
  6. 容易扩展和管理:

    • 安装、配置和使用MongoDB相对较简单。它提供了直观的命令行工具和管理界面,使得数据库的维护和监控变得更加容易。
  7. JSON风格的文档:

    • MongoDB的文档采用JSON风格的格式,这使得数据在应用程序和数据库之间的映射更为自然。这种文档存储的方式也使得数据更易于理解和使用。
  8. 社区支持和活跃:

    • MongoDB有一个庞大的开源社区,提供了丰富的文档、教程和问题解答。这种活跃的社区支持使得开发者能够更容易找到解决问题的方法。

node.js优点

  1. 高性能:

    • Node.js采用了非阻塞的I/O模型,使得它能够处理大量并发连接而不会造成阻塞。这使得Node.js在处理I/O密集型任务时表现出色,能够实现更高的吞吐量和更低的响应时间。
  2. 快速开发:

    • Node.js使用JavaScript作为开发语言,这使得前端和后端开发都可以使用同一种语言,简化了开发人员的学习曲线和开发工作流程。此外,Node.js的模块化设计和丰富的第三方模块库也有助于快速开发和构建应用。
  3. 轻量和高效:

    • Node.js本身是一个轻量级的运行时环境,占用资源较少,启动时间短。这使得它适用于构建高效的后端服务和微服务架构。
  4. 生态系统丰富:

    • Node.js拥有庞大而活跃的开源生态系统,包括npm(Node Package Manager)上数以万计的可重用模块。开发人员可以通过npm轻松地引入和管理依赖项,加快开发速度并提高代码质量。
  5. 支持异步编程:

    • Node.js基于事件驱动和非阻塞I/O模型,支持异步编程风格。这使得开发人员能够编写高效的、非阻塞的代码,从而更好地利用系统资源并提高应用的响应能力。
  6. 跨平台:

    • Node.js可以在多个平台上运行,包括Windows、macOS和各种Linux发行版。这使得开发人员能够轻松地在不同的操作系统上开发和部署应用。
  7. 社区支持和活跃:

    • Node.js拥有一个庞大而活跃的社区,提供了丰富的文档、教程和问题解答。这使得开发人员能够更容易地获取帮助、分享经验并解决问题。
  8. 可伸缩性:

    • 由于Node.js采用了事件驱动和非阻塞I/O模型,它非常适合构建高性能、可伸缩的应用。开发人员可以根据需要轻松地扩展应用,满足不断增长的用户需求。

mongoDB下载

Install MongoDB Community Kubernetes Operator | MongoDB

新的mongoDB版本自带可视化工具

安装指令

1. 下载node.js框架

npm install express --save

2. 下载nodemon解决node代码更新的痛点

npm install nodemon -g

3. node.js连接mongodb数据库

npm install mongoose --save

后端目录

db.js

const mongoose = require('mongoose')//连接mongodb数据库
mongoose.connect("mongodb://localhost:27017/node_one").then(() => {console.log("数据库连接成功!")}).catch((err) => {console.log("数据库连接失败!", err)})// 创建表
const LoseSchema = new mongoose.Schema({name: {type: String,},nianling: {type: String},
})const Lose = mongoose.model("LoseSchema", LoseSchema);
module.exports = {Lose
}

index.js

const express = require('express');
const app = express();
const { Lose } = require('./db');app.use(express.urlencoded({ extended: true }));
app.use(express.json())// 增加数据
app.post("/publish", async (req, res) => {try {const { name, nianling } = req.body;await Lose.create({name, nianling});res.send("success")} catch (error) {res.send(error, "error")}
})
// 删除指定数据
app.post("/del", async (req, res) => {console.log(req.body.name)try {const { name } = req.body;// 使用 deleteOne 删除指定 name 的数据const result = await Lose.deleteOne({ name });if (result.deletedCount === 1) {res.send("success");} else {res.send("未找到匹配的记录");}} catch (error) {res.send(error, "error");}
})
// 修改指定数据
app.post("/upd", async (req, res) => {try {const { name, newNianling } = req.body;// 使用 updateOne 更新指定 name 的数据记录的 nianling 字段const result = await Lose.updateOne({ name }, { $set: { nianling: newNianling } });if (result.nModified === 1) {res.send("success");} else {res.send("未找到匹配的记录或未进行任何修改");}} catch (error) {res.send(error, "error");}
});// 查询指定数据
app.get("/find/:name", async (req, res) => {try {const name = req.params.name;// 使用 find 查询所有匹配指定 name 的数据记录const results = await Lose.find({ name });if (results.length > 0) {// 如果找到匹配的记录,则返回所有匹配的记录res.json(results);} else {res.send("未找到匹配的记录");}} catch (error) {res.send(error, "error");}
});app.listen(3000, () => {console.log('server running')
})

小程序

index1.js

// pages/index1/index1.js
Page({/*** 页面的初始数据*/data: {},// 增加// 输入框1的输入事件(姓名)input1Change(e) {this.setData({inputValue1: e.detail.value,});},// 输入框2的输入事件(年龄)input2Change(e) {this.setData({inputValue2: e.detail.value,});},tijiao(){wx.request({url: 'http://localhost:3000/publish',method:'POST',data:{name:this.data.inputValue1,nianling:this.data.inputValue2},})},// 删除input1Change_del(e){this.setData({inputValue_del: e.detail.value,});},shanchu(){wx.request({url: 'http://localhost:3000/del',method:'POST',data:{name:this.data.inputValue_del,},})},// 修改input1Change_upd(e){this.setData({inputValue1_upda: e.detail.value,});},input2Change_upd(e){this.setData({inputValue2_upda: e.detail.value,});},xiugai(){wx.request({url: 'http://localhost:3000/upd',method:'POST',data:{// 名字name:this.data.inputValue1_upda,// 修改后的年龄newNianling:this.data.inputValue2_upda,},})},// 查询input1Change_find(e){this.setData({inputValue1_find: e.detail.value,});},find(){wx.request({url: 'http://localhost:3000/find/' + this.data.inputValue1_find,method: 'GET',success: function(res) {// 请求成功,处理从服务器返回的数据console.log('服务器返回的数据:', res.data);// 检查是否找到匹配的记录if (res.data && res.data.length > 0) {// 处理返回的记录数据const records = res.data;records.forEach(record => {console.log('记录:', record);// 在这里进行您的处理逻辑,例如显示在界面上});} else {console.log('未找到匹配的记录');// 在界面上显示相应的消息,告知用户未找到匹配的记录}},fail: function(error) {// 请求失败,处理错误console.error('请求失败:', error);// 在界面上显示错误信息,告知用户请求失败}});},/*** 生命周期函数--监听页面加载*/onLoad(options) {},/*** 生命周期函数--监听页面初次渲染完成*/onReady() {},/*** 生命周期函数--监听页面显示*/onShow() {},/*** 生命周期函数--监听页面隐藏*/onHide() {},/*** 生命周期函数--监听页面卸载*/onUnload() {},/*** 页面相关事件处理函数--监听用户下拉动作*/onPullDownRefresh() {},/*** 页面上拉触底事件的处理函数*/onReachBottom() {},/*** 用户点击右上角分享*/onShareAppMessage() {}
})

index1.wxml

<!-- 添加姓名与年龄 -->
<view class="container"><view><text>请输入第一个值:</text><input placeholder="输入框1" bindinput="input1Change" /></view><view><text>请输入第二个值:</text><input placeholder="输入框2" bindinput="input2Change" /></view><button bindtap="tijiao">增加</button>
</view><!-- 根据指定字段(姓名)删除数据记录 -->
<view class="container"><view><text>请输入第一个值:</text><input placeholder="输入框1" bindinput="input1Change_del" /></view><button bindtap="shanchu">删除</button>
</view><!-- 根据指定字段(姓名)修改数据记录 -->
<view class="container"><view><text>请输入第一个值:</text><input placeholder="名字" bindinput="input1Change_upd" /></view><view><text>请输入第一个值:</text><input placeholder="修改后的年龄" bindinput="input2Change_upd" /></view><button bindtap="xiugai">修改</button>
</view><!-- 根据指定字段(姓名)修改数据记录 -->
<view class="container"><view><text>请输入第一个值:</text><input placeholder="名字" bindinput="input1Change_find" /></view><button bindtap="find">查询</button>
</view>

index1.wxss

/* inputPage.wxss */.container {padding: 20rpx;
}text {font-size: 16rpx;margin-right: 10rpx;
}input {height: 30rpx;border: 1rpx solid #ccc;padding: 5rpx;margin-bottom: 10rpx;
}button {width: 200rpx;background-color: #4CAF50;color: #fff;border: none;border-radius: 5rpx;
}
http://www.zhongyajixie.com/news/2973.html

相关文章:

  • 网站安全 重要性中国今天刚刚发生的新闻
  • 协会网站建设seo网站优化方案摘要
  • 新手怎么做外贸企业seo推广
  • 用vue做pc端网站好吗医院网站建设方案
  • 怎样建一个个人网站快速排名软件哪个好
  • 图片设计师网站营销软件有哪些
  • 自己做网站地图广州搜索排名优化
  • 外贸led网站建设营销策划方案内容
  • 免费文档模板素材网站高质量软文
  • 定制型网站建设平台西安seo优化排名
  • excel做网站网络营销介绍
  • 南阳网站建设.com天津seo托管
  • 企业邮箱是什么?电脑优化工具
  • 建站公司用的开源框架旺道网站优化
  • 功能型企业网站有哪些关联词有哪些五年级
  • tp做的网站封装成app娄底地seo
  • 临漳企业做网站推广软文技巧
  • 自学做动态网站bt种子搜索
  • 网站页头页尾怎么做浏览器缓冲设置网络产品及其推广方法
  • 微信网站怎么建立网上电商怎么做
  • 安康免费做网站深圳网络推广培训学校
  • 淘宝客网站主营销渠道策略有哪些
  • b2b网站产品群发工具如何免费推广网站
  • php 跳转到其他网站手机app推广平台
  • 做pop网站如何在手机上制作网站
  • 企业网站建设对企业客户的意义品牌公关具体要做些什么
  • 做网站设计有哪些网页网络工程师培训机构排名
  • 网站开发开题报告关键问题武汉网站推广优化
  • 怎么给自己喜欢的人做网站seo优化教程培训
  • 59网一起做网站站长工具收录查询