前端小趴菜
私有仓库 账户密码身份验证在2021-08-13日已取消,换成令牌的认证方式
1 | git remote set-url origin https://<your_token>@github.com/<USERNAME>/<REPO>.git |
1 | // clone 项目后每次拉去提交代码 需要输入密码验证 |
这一步并非必要,却十分重要。主要用于多个 python 项目时,同名依赖不同版本情况。创建虚拟环境可以隔离项目之间的依赖(也可以使用 docker 来实现项目隔离)
1 | python -m venv venv # Windows/macOS/Linux 通用命令 |
1 | # Windows |
1 | pip install flask # 仅安装到当前虚拟环境 |
1 | pip list |
1 | deactivate |
虚拟环境是 Python 开发的标准实践,虽然不是强制要求,但它能避免 90% 的环境相关问题。建议养成 “每个项目一个虚拟环境” 的习惯,从一开始就使用它!
自动生成项目中的依赖 到 requirements.txt 文件
1 | pip freeze > requirements.txt |
类似于yarn 的一键安装项目依赖
1 | pip install -r requirements.txt |
pyproject.toml**1 | # pyproject.toml |
安装方式
1 | pip install . # 安装项目及其依赖 |
setup.py(传统方法)**1 | # setup.py |
1 | pip install . # 安装项目及其依赖 |
项目推荐使用 .env 文件放置,通过 dotenv 第三方模块来加载。.env 文件不提交。生产环境时可以
在生产环境新建一个.env 文件
1 | FLASK_APP=app |
在运行环境设置环境变量
1 | # 临时环境变量 |
docker 容器部署
docker run 命令直接传入
1 | docker run -e "SECRET_KEY=prod_secret" -e "FLASK_DEBUG=False" your-image |
docker-compose.yml 文件配置
1 | # docker-compose.yml |
1 | flask_project/ |
数据库使用的是 pymysql,连接池 dbutils.pooled_db
.env 环境配置
1 | # 数据库配置 |
1 | ''' |
db.py 中的 fetch_one 方法 可以到 mudules.test.test.py 中 引入使用
1 | # mudules.test.test.py |
| 框架 | 定位 | 优势 | 劣势 | 适用场景 |
|---|---|---|---|---|
| Django | 全栈框架( batteries-included ) | 功能全面、安全稳定、生态丰富、后台管理强大 | 略厚重、同步性能一般 | 企业级应用、后台系统、API 服务 |
| Flask | 微框架(轻量灵活) | 体积小、可定制化强 | 需手动拼接第三方库(如 ORM、表单) | 小应用、原型开发、API 原型 |
| FastAPI | 异步 API 框架 | 异步性能优、自动生成 API 文档 | 无内置后台管理、生态较新 | 高并发 API 服务、实时数据接口 |
1 | pip设置安装源 |
1 | 1、Express |
Sequelize 是一种基于 promise 的 Node.js 对象关系映射器 (ORM) 使用,它使开发人员更容易使用关系数据库。
支持 PostgreSQL、MySQL、MariaDB、SQLite 等数据库。
它使用 Connect/Express 提供跨域资源共享 (CORS) 作为中间件。
Nodemailer简化了从Node.js服务器发送电子邮件的过程。
Passport 是一个模块化的 Node.js 身份验证中间件。
支持 500 多种身份验证方案,包括 Google、Facebook、Twitter 和其他自定义和单点登录 (SSO) 提供商。
Async 是一个强大的 Node.js 实用程序模块,可帮助开发人员通过使用 JavaScript“异步”或回调接受方法使用异步 JavaScript。
提供 70 多种实用方法,用于轻松开发异步控制流。
Winston 是 Node.js 的日志记录包,允许在许多传输上进行通用日志记录。
Mongoose 是一个 Node。基于 js 的 MongoDB 对象建模工具,通常称为对象数据建模 (ODM) 库,提供钩子、模型验证、连接和查询等功能。
Socket.IO 是一个 Node .js通信包,它允许客户端浏览器和服务器实时、双向和基于事件进行通信。
Lodash 是一个 JavaScript 实用程序包,可帮助开发人员编写简单且可维护的代码。
Puppeteer 是一个 Node.js 框架,它允许您通过提供用于通过 DevTools 协议控制 Chrome/Chromium 的高级 API,从而实现 Chrome 的自动化。
它可以自动执行前端测试,例如请求处理测试、识别和比较 UI 组件以及性能测试等。
Multer 是一个 Node.js 中间件库。它建立在 HTML 表单解析器 Busboy 之上,支持多部分和多表单数据。
初始化 Multer 实例后,其参数之一是测试对象,它指定上传的文件在服务器上的保存位置。
Dotenv 是一个 Node.js 实用程序模块,用于维护应用程序环境变量并保护关键配置数据。
MQTT是一种轻量级的、基于发布/订阅模式的物联网通信协议,专为计算能力有限并在低带宽、不可靠网络环境下工作的远程传感器、控制设备通信而设计。
MQTT和Socket的主要区别在于它们的应用场景和目的。MQTT更适用于物联网场景,特别是需要发布/订阅模式以及低带宽、不可靠网络环境的场景;而Socket则更偏向于网络编程中的基础通信手段,用于建立可靠的连接和数据传输。在实际应用中,可以根据具体需求选择合适的协议或技术。
1 | npm install fluent-ffmpeg |
该库将 ffmpeg 的复杂命令行用法抽象为一个流畅、易于使用的node.js模块。为了能够使用此模块,请确保您的系统上安装了 ffmpeg(包括所有必要的编码库,如 libmp3lame 或 libx264)。
Nodemailer 是一个用于Node.js应用程序的模块,可以像蛋糕一样轻松发送电子邮件。
1 | const nodemailer = require("nodemailer"); |
对输入数据(如用户提交的表单、API 请求参数)进行规则校验,确保数据格式、类型、范围等符合预期,避免无效或恶意数据进入系统。
1 | const Joi = require('joi'); |
bcryptjs:密码加密库对用户密码进行单向哈希加密(不可逆),将明文密码转换为乱码字符串(哈希值),避免密码明文存储在数据库中,提升安全性。
1 | const bcrypt = require('bcryptjs'); |
该库提供了简单的 API,实现 JWT 的生成(sign)、验证(verify) 和解码(decode)
1 | import jwt from 'jsonwebtoken'; |
laf是一个集「函数计算」、「数据库」、「对象存储」等于一身的一站式开发平台。支持get,post 等常规请求。支持socket长连接。功能很齐全
收费方式按时间计算,可随时关停
AirCode 是一个在线开发和部署 Node.js 应用的平台,为全栈工程师量身定制,目标是让开发变得简单。
我们通过提供极致简单的 WebIDE 和开箱即用的云服务,让开发者无需再操心后端选型、环境搭建和线上运维等一系列繁琐之事,只需打开浏览器即可完成产品开发,并部署到全球节点。
功能与laf 类似,没有提供socket 长连接服务。但是拥有免费的额度可以白嫖
// 版本查询
1 | node -v |
// 如果上面查看的版本比较低,则可以开始升级
// 清除 npm cache
1 | npm cache clean --force |
//升级之前还需要安装n模块,n模块是专门用来管理nodejs的版本
输入npm install -g n
// 如果上边命令报错,则使用下边这个
1 | npm i -g n --force |
//升级
还可以直接输入n stable,升级到nodejs最新稳定的版本
网上下载安装包,然后上传至服务器,解压
修改profile文件
打开文件
1 | vim /etc/profile |
添加
1 | export PATH ="$PATH:YOUR_PATH" |
问题出现就是,xshell 上执行命名 运行一个js文件没有问题,但是通过nodo-ssh远程执行一个js脚本则会出现 Cannot find module xxx,因为脚本中引用了 某个全局的js依赖包,而我在etc/peofile 设置的 全局变量,在这种通过 远程指令 方式下执行会出现读取不到设置的全局变量。
解决方法,在 etc/bashrc 文件中 再设置一次变量(此方式设置所有用户都能访问),或 用户HOME中的 .bashrc 文件中设置变量(此方式只此用户能访问此变量)
tag:
缺失模块。
1、请确保node版本大于6.2
2、在博客根目录(注意不是yilia-plus根目录)执行以下命令:
npm i hexo-generator-json-content --save
3、在根目录_config.yml里添加配置:
jsonContent:
meta: false
pages: false
posts:
title: true
date: true
path: true
text: false
raw: false
content: false
slug: false
updated: false
comments: false
link: false
permalink: false
excerpt: false
categories: false
tags: true
LiYongci
衔蝉
哈希米