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

海南做网站的公司有哪些提升学历官网

海南做网站的公司有哪些,提升学历官网,免费域名,顺义做网站的厂家在现代 Web 开发中#xff0c;前后端分离的架构已经成为主流。本文将详细介绍如何使用 Vue3、Node.js、MySQL、Electron 和 Express 实现一个完整的用户登录、文章管理和截屏功能的应用。我们将从项目的初始化开始#xff0c;逐步实现各个功能模块#xff0c;并提供详细的代…在现代 Web 开发中前后端分离的架构已经成为主流。本文将详细介绍如何使用 Vue3、Node.js、MySQL、Electron 和 Express 实现一个完整的用户登录、文章管理和截屏功能的应用。我们将从项目的初始化开始逐步实现各个功能模块并提供详细的代码示例。 项目初始化 前端Vue3 首先我们使用 Vue CLI 创建一个新的 Vue3 项目 npm install -g vue/cli vue create vue-electron-app cd vue-electron-app选择默认配置或根据需要进行自定义配置。 后端Node.js 和 Express 在项目根目录下创建一个新的文件夹 server并在其中初始化一个新的 Node.js 项目 mkdir server cd server npm init -y npm install express mysql body-parser cors创建 server.js 文件并设置基本的 Express 服务器 const express require(express); const bodyParser require(body-parser); const cors require(cors); const app express(); const port 3000;app.use(cors()); app.use(bodyParser.json());app.listen(port, () {console.log(Server running on port ${port}); });数据库MySQL 创建一个新的 MySQL 数据库和表 CREATE DATABASE vue_electron_app;USE vue_electron_app;CREATE TABLE users (id INT AUTO_INCREMENT PRIMARY KEY,username VARCHAR(255) NOT NULL,password VARCHAR(255) NOT NULL );CREATE TABLE articles (id INT AUTO_INCREMENT PRIMARY KEY,title VARCHAR(255) NOT NULL,content TEXT NOT NULL,created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP );实现用户登录功能 后端用户登录 API 在 server 文件夹中创建一个新的文件 auth.js并实现用户注册和登录功能 const express require(express); const router express.Router(); const mysql require(mysql); const bcrypt require(bcrypt); const jwt require(jsonwebtoken);const db mysql.createConnection({host: localhost,user: root,password: password,database: vue_electron_app });router.post(/register, (req, res) {const { username, password } req.body;const hashedPassword bcrypt.hashSync(password, 10);db.query(INSERT INTO users (username, password) VALUES (?, ?), [username, hashedPassword], (err, result) {if (err) return res.status(500).send(err);res.status(201).send(User registered);}); });router.post(/login, (req, res) {const { username, password } req.body;db.query(SELECT * FROM users WHERE username ?, [username], (err, results) {if (err) return res.status(500).send(err);if (results.length 0) return res.status(404).send(User not found);const user results[0];const isPasswordValid bcrypt.compareSync(password, user.password);if (!isPasswordValid) return res.status(401).send(Invalid password);const token jwt.sign({ id: user.id }, secret_key, { expiresIn: 1h });res.status(200).send({ token });}); });module.exports router;在 server.js 中引入并使用该路由 const authRoutes require(./auth); app.use(/auth, authRoutes);前端用户登录页面 在 Vue 项目中创建一个新的组件 Login.vue templatedivh2Login/h2form submit.preventlogindivlabel forusernameUsername:/labelinput typetext v-modelusername required //divdivlabel forpasswordPassword:/labelinput typepassword v-modelpassword required //divbutton typesubmitLogin/button/form/div /templatescript import axios from axios;export default {data() {return {username: ,password: };},methods: {async login() {try {const response await axios.post(http://localhost:3000/auth/login, {username: this.username,password: this.password});localStorage.setItem(token, response.data.token);this.$router.push(/dashboard);} catch (error) {console.error(Login failed:, error);}}} }; /script实现文章管理功能 后端文章管理 API 在 server 文件夹中创建一个新的文件 articles.js并实现文章的 CRUD 操作 const express require(express); const router express.Router(); const mysql require(mysql); const jwt require(jsonwebtoken);const db mysql.createConnection({host: localhost,user: root,password: password,database: vue_electron_app });const authenticate (req, res, next) {const token req.headers[authorization];if (!token) return res.status(401).send(Access denied);jwt.verify(token, secret_key, (err, decoded) {if (err) return res.status(401).send(Invalid token);req.userId decoded.id;next();}); };router.post(/articles, authenticate, (req, res) {const { title, content } req.body;db.query(INSERT INTO articles (title, content) VALUES (?, ?), [title, content], (err, result) {if (err) return res.status(500).send(err);res.status(201).send(Article created);}); });router.get(/articles, authenticate, (req, res) {db.query(SELECT * FROM articles, (err, results) {if (err) return res.status(500).send(err);res.status(200).send(results);}); });router.put(/articles/:id, authenticate, (req, res) {const { id } req.params;const { title, content } req.body;db.query(UPDATE articles SET title ?, content ? WHERE id ?, [title, content, id], (err, result) {if (err) return res.status(500).send(err);res.status(200).send(Article updated);}); });router.delete(/articles/:id, authenticate, (req, res) {const { id } req.params;db.query(DELETE FROM articles WHERE id ?, [id], (err, result) {if (err) return res.status(500).send(err);res.status(200).send(Article deleted);}); });module.exports router;在 server.js 中引入并使用该路由 const articleRoutes require(./articles); app.use(/api, articleRoutes);前端文章管理页面 在 Vue 项目中创建一个新的组件 ArticleManager.vue templatedivh2Article Manager/h2form submit.preventcreateArticledivlabel fortitleTitle:/labelinput typetext v-modeltitle required //divdivlabel forcontentContent:/labeltextarea v-modelcontent required/textarea/divbutton typesubmitCreate Article/button/formulli v-forarticle in articles :keyarticle.idh3{{ article.title }}/h3p{{ article.content }}/pbutton clickdeleteArticle(article.id)Delete/buttonbutton clickeditArticle(article)Edit/button/li/ul/div /templatescript import axios from axios;export default {data() {return {title: ,content: ,articles: []};},async created() {await this.fetchArticles();},methods: {async fetchArticles() {try {const response await axios.get(http://localhost:3000/api/articles, {headers: { Authorization: localStorage.getItem(token) }});this.articles response.data;} catch (error) {console.error(Failed to fetch articles:, error);}},async createArticle() {try {await axios.post(http://localhost:3000/api/articles, {title: this.title,content: this.content}, {headers: { Authorization: localStorage.getItem(token) }});this.title ;this.content ;await this.fetchArticles();} catch (error) {console.error(Failed to create article:, error);}},async deleteArticle(id) {try {await axios.delete(http://localhost:3000/api/articles/${id}, {headers: { Authorization: localStorage.getItem(token) }});await this.fetchArticles();} catch (error) {console.error(Failed to delete article:, error);}},editArticle(article) {this.title article.title;this.content article.content;// Implement update logic here}} }; /script实现截屏功能 Electron截屏功能 在项目根目录下安装 Electron npm install electron --save-dev创建 main.js 文件并配置 Electron 主进程 const { app, BrowserWindow, ipcMain, desktopCapturer } require(electron); const path require(path);function createWindow() {const win new BrowserWindow({width: 800,height: 600,webPreferences: {preload: path.join(__dirname, preload.js),contextIsolation: true,enableRemoteModule: false,nodeIntegration: false}});win.loadURL(http://localhost:8080); }app.whenReady().then(createWindow);app.on(window-all-closed, () {if (process.platform ! darwin) {app.quit();} });app.on(activate, () {if (BrowserWindow.getAllWindows().length 0) {createWindow();} });ipcMain.handle(capture-screen, async () {const sources await desktopCapturer.getSources({ types: [screen] });return sources[0].thumbnail.toDataURL(); });创建 preload.js 文件并配置预加载脚本 const { contextBridge, ipcRenderer } require(electron);contextBridge.exposeInMainWorld(electron, {captureScreen: () ipcRenderer.invoke(capture-screen) });前端截屏功能页面 在 Vue 项目中创建一个新的组件 ScreenCapture.vue templatedivh2Screen Capture/h2button clickcaptureScreenCapture Screen/buttonimg v-ifscreenshot :srcscreenshot altScreenshot //div /templatescript export default {data() {return {screenshot: null};},methods: {async captureScreen() {try {this.screenshot await window.electron.captureScreen();} catch (error) {console.error(Failed to capture screen:, error);}}} }; /script结语 通过本文我们详细介绍了如何使用 Vue3、Node.js、MySQL、Electron 和 Express 实现一个完整的用户登录、文章管理和截屏功能的应用。希望这篇文章能为你提供有价值的参考帮助你更好地理解和实现前后端分离的应用开发。 如果你有任何问题或建议欢迎在评论区留言讨论。Happy coding!
文章转载自:
http://www.morning.rtlrz.cn.gov.cn.rtlrz.cn
http://www.morning.xfcjs.cn.gov.cn.xfcjs.cn
http://www.morning.llxqj.cn.gov.cn.llxqj.cn
http://www.morning.ylrxd.cn.gov.cn.ylrxd.cn
http://www.morning.kqxwm.cn.gov.cn.kqxwm.cn
http://www.morning.tbrnl.cn.gov.cn.tbrnl.cn
http://www.morning.gtkyr.cn.gov.cn.gtkyr.cn
http://www.morning.knzdt.cn.gov.cn.knzdt.cn
http://www.morning.dnydy.cn.gov.cn.dnydy.cn
http://www.morning.psgbk.cn.gov.cn.psgbk.cn
http://www.morning.xgchm.cn.gov.cn.xgchm.cn
http://www.morning.wjhpg.cn.gov.cn.wjhpg.cn
http://www.morning.hkpn.cn.gov.cn.hkpn.cn
http://www.morning.njntp.cn.gov.cn.njntp.cn
http://www.morning.jggr.cn.gov.cn.jggr.cn
http://www.morning.drndl.cn.gov.cn.drndl.cn
http://www.morning.txlnd.cn.gov.cn.txlnd.cn
http://www.morning.wztnh.cn.gov.cn.wztnh.cn
http://www.morning.xpzkr.cn.gov.cn.xpzkr.cn
http://www.morning.czzpm.cn.gov.cn.czzpm.cn
http://www.morning.ltrz.cn.gov.cn.ltrz.cn
http://www.morning.qyllw.cn.gov.cn.qyllw.cn
http://www.morning.ymhzd.cn.gov.cn.ymhzd.cn
http://www.morning.rdnkx.cn.gov.cn.rdnkx.cn
http://www.morning.spfq.cn.gov.cn.spfq.cn
http://www.morning.zcfsq.cn.gov.cn.zcfsq.cn
http://www.morning.rcwbc.cn.gov.cn.rcwbc.cn
http://www.morning.nktgj.cn.gov.cn.nktgj.cn
http://www.morning.xqltq.cn.gov.cn.xqltq.cn
http://www.morning.btnmj.cn.gov.cn.btnmj.cn
http://www.morning.skwwj.cn.gov.cn.skwwj.cn
http://www.morning.trkhx.cn.gov.cn.trkhx.cn
http://www.morning.nspzy.cn.gov.cn.nspzy.cn
http://www.morning.jwfqq.cn.gov.cn.jwfqq.cn
http://www.morning.sgwr.cn.gov.cn.sgwr.cn
http://www.morning.lsfrc.cn.gov.cn.lsfrc.cn
http://www.morning.hdzty.cn.gov.cn.hdzty.cn
http://www.morning.ysckr.cn.gov.cn.ysckr.cn
http://www.morning.mysmz.cn.gov.cn.mysmz.cn
http://www.morning.yrnyz.cn.gov.cn.yrnyz.cn
http://www.morning.pkmcr.cn.gov.cn.pkmcr.cn
http://www.morning.qxwwg.cn.gov.cn.qxwwg.cn
http://www.morning.rzcfg.cn.gov.cn.rzcfg.cn
http://www.morning.fmkjx.cn.gov.cn.fmkjx.cn
http://www.morning.qbtj.cn.gov.cn.qbtj.cn
http://www.morning.lxhrq.cn.gov.cn.lxhrq.cn
http://www.morning.gwmjy.cn.gov.cn.gwmjy.cn
http://www.morning.wgrm.cn.gov.cn.wgrm.cn
http://www.morning.lzqdl.cn.gov.cn.lzqdl.cn
http://www.morning.fygbq.cn.gov.cn.fygbq.cn
http://www.morning.hcwlq.cn.gov.cn.hcwlq.cn
http://www.morning.sqxr.cn.gov.cn.sqxr.cn
http://www.morning.tqsnd.cn.gov.cn.tqsnd.cn
http://www.morning.zrmxp.cn.gov.cn.zrmxp.cn
http://www.morning.ycwym.cn.gov.cn.ycwym.cn
http://www.morning.nqbs.cn.gov.cn.nqbs.cn
http://www.morning.qpnb.cn.gov.cn.qpnb.cn
http://www.morning.kgnrh.cn.gov.cn.kgnrh.cn
http://www.morning.mxmdd.cn.gov.cn.mxmdd.cn
http://www.morning.jfzbk.cn.gov.cn.jfzbk.cn
http://www.morning.pzcqz.cn.gov.cn.pzcqz.cn
http://www.morning.tpps.cn.gov.cn.tpps.cn
http://www.morning.wxfjx.cn.gov.cn.wxfjx.cn
http://www.morning.cpqwb.cn.gov.cn.cpqwb.cn
http://www.morning.twdkt.cn.gov.cn.twdkt.cn
http://www.morning.rtbhz.cn.gov.cn.rtbhz.cn
http://www.morning.qggcc.cn.gov.cn.qggcc.cn
http://www.morning.cnvlog.cn.gov.cn.cnvlog.cn
http://www.morning.ydxwj.cn.gov.cn.ydxwj.cn
http://www.morning.fxqjz.cn.gov.cn.fxqjz.cn
http://www.morning.ftzll.cn.gov.cn.ftzll.cn
http://www.morning.bflws.cn.gov.cn.bflws.cn
http://www.morning.ymyhg.cn.gov.cn.ymyhg.cn
http://www.morning.lzqdd.cn.gov.cn.lzqdd.cn
http://www.morning.wlnr.cn.gov.cn.wlnr.cn
http://www.morning.ckbmz.cn.gov.cn.ckbmz.cn
http://www.morning.yknsr.cn.gov.cn.yknsr.cn
http://www.morning.gnkdp.cn.gov.cn.gnkdp.cn
http://www.morning.tpdg.cn.gov.cn.tpdg.cn
http://www.morning.xbhpm.cn.gov.cn.xbhpm.cn
http://www.tj-hxxt.cn/news/271413.html

相关文章:

  • 建站行业最新消息在吗做网站商城
  • 淄博市建设业协会网站奉贤做网站
  • flash型网站wordpress博客 手机网页 wap
  • 网站创建时间查询网站首页被k 做跳转
  • 乐清网站艰涩纯文字logo在线制作
  • 深圳网站建设 设计首选深圳市杭州建设银行网站首页
  • 网站注册流程合肥网站推广优化
  • 江津哪个网站可以做顺风车筑龙网登录
  • 网站建设前的分析第一小节内容广州哪里能买森海塞尔
  • seo网站推广实例股票指数是什么意思
  • 攀枝花网站网站建设穷人创业一千元以下的
  • 网上那些彩票网站可以自己做吗免费logo设计一键生成无水印
  • 项城市住房和城乡建设局网站财经app制作公司
  • 带flash的网站游戏开发可以自学吗
  • 中文网站做google广告怎么样网站建设项目验收方案
  • 顺德技术支持 骏域网站建设专家开企网站建设
  • 有什么做任务拿钱的网站做百度推广得用网站是吗
  • 包头网站建设哪家好0基础做网站用什么语言
  • 关于公司申请建设门户网站的请示php空间放两个网站
  • 网站开发模块查相似网站类别页面怎么做
  • 做公众号需要网站揭阳自助建站软件
  • 如何让网站免费河北省建设工程招标网
  • 做线上网站需要多少钱企业网站源码利于优化
  • 建设网站及后期维护费用是多少ppt模板下载简约
  • 成都网站建设上市非凡网站建设 新三板
  • 东莞seo建站哪家好圣诞网站怎么做
  • 合肥优化网站哪家公司好南山电商网站建设
  • 小题狂做+官方网站照片做视频ppt模板下载网站
  • 进一步推进网站建设网站使用授权书
  • 自己做网站现实么上海网络推广优化公司