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

网站设计开发环境建网站的宽带多少钱

网站设计开发环境,建网站的宽带多少钱,莆田网站建站建设,网站建设哪家学校好需求 博客系统升级,本来是用 express 写的,最近发现 Egg 不错,正好学习升级一下。边学边写。 Ps:相同的功能,迭代的写法,由浅入深,做个记录。 开发 初始化 安装 node版本需要 >14.20.0…

需求

博客系统升级,本来是用 express 写的,最近发现 Egg 不错,正好学习升级一下。边学边写。

Ps:相同的功能,迭代的写法,由浅入深,做个记录。

开发

初始化

安装

node版本需要 >=14.20.0, LTS版本最低要求 8.x,npm版本 >=6.1.0

mkdir egg-blogs && cd egg-blogs
npm init egg --type=simple
npm install
npm run dev

默认启动的是 7001 端口。

创建目录结构

egg-blogs
├── package.json
├── app
|   ├── router.js
│   ├── controller
│   |   └── home.js
│   ├── service
│   |   └── user.js
│   ├── middleware
│   └── extend
│       ├── helper.js
├── config
|   ├── plugin.js
|   ├── config.default.js

安装&配置插件

npm i --save egg-mysql

在 config/plugin.js 中配置

/** @type Egg.EggPlugin */
module.exports = {// had enabled by egg// static: {//   enable: true,// }mysql: {enable: true,package: 'egg-mysql'}
};

在 config/config.default.js 中配置数据库信息

/* eslint valid-jsdoc: "off" *//*** @param {Egg.EggAppInfo} appInfo app info*/
module.exports = appInfo => {/*** built-in config* @type {Egg.EggAppConfig}**/const config = exports = {};// use for cookie sign key, should change to your own and keep securityconfig.keys = appInfo.name + '123';// add your middleware config hereconfig.middleware = [];// 关闭安全配置config.security = {xframe: {enable: false,},csrf: {enable: false,}};// 添加mysql配置config.mysql = {client: {host: '127.0.0.1',port: 3306,user: 'root',password: '12345678',database: 'blogs',charset: 'utf8'},app: true,agent: false,};// add your user config hereconst userConfig = {// myAppName: 'egg',};return {...config,...userConfig,};
};

开发逻辑

Controller

创建 app/controller/tags.js

const {Controller} = require('egg');class TagsController extends Controller {/** 获取标签列表 */async getTagList() {await this.ctx.service.tags.getTagList(this.ctx.request.query);}/** 新建标签 */async createTag() {await this.ctx.service.tags.createTag(this.ctx.request.body);}/** 更新标签 */async updateTag() {await this.ctx.service.tags.updateTag(this.ctx.request.body);}/** 删除标签 */async deleteTag() {await this.ctx.service.tags.deleteTag(this.ctx.request.query);}
}module.exports = TagsController;

Service

创建 app/service/tags.js

const {Service} = require('egg');class TagsService extends Service {async getTagList(params) {const {ctx, app} = this;const tagName = params?.tagName || '';const result = await app.mysql.query('SELECT * FROM tag WHERE tagName LIKE "%' + tagName + '%" ORDER BY create_time DESC')// 判断是否成功const isSuccess = result && Array.isArray(result);if (isSuccess) {ctx.state = 200;ctx.body = {code: 200,success: true,data: result,msg: '获取标签数据成功',show: false}} else {ctx.state = 200;ctx.body = {code: 500,success: false,msg: '获取标签数据失败',show: true}}}async createTag(params) {const {ctx, app} = this;const tagInfo = {id: ctx.helper.snowflakeId(),tagName: params.tagName,tagColor: params.tagColor,remark: params.remark,create_time: app.mysql.literals.now,update_time: app.mysql.literals.now}const result = await app.mysql.insert('tag', tagInfo);if (result.affectedRows === 1) {ctx.status = 200;ctx.body = {code: 200,success: true,data: tagInfo,msg: '创建标签成功',show: true}} else {ctx.status = 200;ctx.body = {code: 500,success: false,msg: '创建标签失败',show: true}}}async updateTag(params) {const {ctx, app} = this;const tagInfo = {id: params.id,tagName: params.tagName,tagColor: params.tagColor,remark: params.remark,update_time: app.mysql.literals.now}const result = await app.mysql.update('tag', tagInfo);const isSuccess = result && result.affectedRows === 1;if (isSuccess) {ctx.status = 200;ctx.body = {code: 200,success: true,data: tagInfo,msg: '修改标签成功',show: true}} else {ctx.status = 200;ctx.body = {code: 500,success: false,msg: '修改标签失败',show: true}}}async deleteTag(params) {const {ctx, app} = this;const ids = params.ids.split(',');const result = await app.mysql.beginDoomedTransactionScope(async (conn) => {for (let i = 0; i < ids.length; i++) {await app.mysql.delete('tag', {id: ids[i]});}return {success: true}}, ctx);if (result.success) {ctx.status = 200;ctx.body = {code: 200,success: true,msg: '删除标签成功',show: true}} else {ctx.status = 200;ctx.body = {code: 500,success: false,msg: '删除标签失败',show: true}}}
}module.exports = TagsService;

暴露路由

在 app/router.js 中暴露路由接口

/*** @param {Egg.Application} app - egg application*/
module.exports = app => {const {router, controller} = app;router.get('/', controller.home.index);// 操作标签router.get('/tags/getTagList', controller.tags.getTagList);router.post('/tags/createTag', controller.tags.createTag);router.put('/tags/updateTag', controller.tags.updateTag);router.delete('/tags/deleteTag', controller.tags.deleteTag);
};

总结

基础增删改查完成,但是当前状态最好不要部署在服务器上。

问题:

  1. 安全防护并未打开
  2. SQL防注入语法不对
  3. 直接操作数据库不规范、不标准
  4. 各类安全措施没有增加
  5. 各类数据校验没有增加
http://www.yayakq.cn/news/79624/

相关文章:

  • 如何用ip地址做网站wordpress怎么增加页面
  • 重庆网站网页设计培训机构深圳模板网站建设公
  • 视频网站建设费用明细网站的关键字 设置
  • 成都网站推广营销微信成都住建局官网住建智慧建管
  • aspcms网站地图模板logo设计公司前十名
  • 淘宝运营跟做网站哪种工资高厦门行业网站建设
  • wordpress 搜狐视频合肥seo收费
  • 中国建设银行网站宁波网点企业文化建设方案
  • aspcms手机网站源码珠海关键词优化平台
  • 珠宝类网站建设中国铁建大桥工程局集团有限公司
  • html静态网站开发实验报告网站流量高有什么用
  • 找兼职做网站建设cms开发
  • 快速建立平台网站开发设计建站流程wordpress母公司
  • 加强和改进网站建设建设方案广州市建设厅官方网站
  • 贵安新区网站建设推广百度关键词指数查询工具
  • 福田做网站公司怎么选择专门做养老院的网站
  • 优化一个网站需要多少钱免费下载应用市场
  • 传业做微采商城网站owo表情添加wordpress
  • 如何使用qq空间做推广网站iis wordpress安装教程
  • 营销网站的优势是什么电商视觉设计是干什么的
  • 网站建设公司哪个好自己做的视频发什么网站吗
  • 太原中小学网站建设手机建设银行网站进不去
  • 遵义市双控体系建设网站房产网系统
  • 黄页直播免费观看大全网站山西电商网站开发
  • vs2010怎么做网站前台做科技汽车的视频网站
  • 有什么字体设计网站网站做系统叫什么软件有哪些
  • 江门公司网站建设网站编辑简历
  • 济南槐荫区做网站的怎么自己制作游戏
  • 苏州网站建设logo广州机械加工
  • 做班级网站的素材上海手机网站制作哪家好