Node.js与Vue.js怎么搭建一个全栈项目

node.js和vue.js是当前非常流行的两个技术,其中node.js是基于javascript运行的服务器端开发平台,而vue.js则是用于构建用户界面的渐进式框架。这两个技术的结合可以极大地提高web应用的开发效率和用户体验。在本文中,我们将通过一个实际的项目来展示如何使用node.js和vue.js搭建一个全栈web应用。

一、项目介绍

我们将开发一个简单的文章发布和管理系统,用户可以通过注册登录发布文章、评论以及查看其他用户发布的文章。为了实现这一功能,我们将使用Node.js作为后端开发语言和技术框架,使用Vue.js作为前端开发框架,并使用MongoDB作为数据库。

二、环境搭建

在开始开发之前,首先需要在本地环境中搭建好Node.js、Vue.js和MongoDB的开发环境。

立即学习“前端免费学习笔记(深入)”;

1、安装Node.js:可以从官网下载Node.js的安装包进行安装。

2、安装Vue.js:可以使用npm命令行工具安装Vue.js。在命令行中输入以下命令:

npm install -g vue-cli

登录后复制

3、安装MongoDB:可以从官网下载MongoDB的安装包并安装。

三、项目结构

我们将项目分为前端和后端两个部分,因此需要分别创建两个文件夹来存放这两部分的代码,我们可以在项目的根目录下创建一个名为“node-vue-app”的文件夹来存放整个项目。

1、创建后端部分

在“node-vue-app”文件夹下创建一个名为“server”的文件夹,在该文件夹下创建一个名为“app.js”的文件,该文件将作为我们的后端服务入口文件。同时,我们需要在“server”文件夹下创建一个名为“routes”的文件夹,用于存放路由代码;并在“server”文件夹下创建一个名为“models”的文件夹,用于存放数据模型代码。

2、创建前端部分

在“node-vue-app”文件夹下创建一个名为“client”的文件夹,我们将在该文件夹下进行前端开发。可以使用Vue.js提供的命令行工具创建一个Vue.js项目:

vue init webpack client

登录后复制

该命令将在“client”文件夹下创建一个名为“src”的文件夹,该文件夹将包含我们的所有前端代码。

四、后端开发

在本案例中,我们将使用Express作为后端框架来完成RESTful API的开发。在“app.js”文件中,我们需要引入相关模块和库,并初始化Express应用程序:

const express = require('express');const bodyParser = require('body-parser');const mongoose = require('mongoose');const app = express();app.use(bodyParser.json());mongoose.connect('mongodb://localhost:27017/node-vue-app', { useNewUrlParser: true });mongoose.connection.once('open', () => {    console.log('connected to database');});app.listen(3000, () => console.log('server is running on port 3000'));

登录后复制

1、定义数据模型

我们需要在“models”文件夹下定义我们的数据模型,创建一个名为“article.js”的文件:

const mongoose = require('mongoose');const Schema = mongoose.Schema;const articleSchema = new Schema({    title: String,    author: String,    content: String,    created_at: Date,    updated_at: Date});module.exports = mongoose.model('Article', articleSchema);

登录后复制

在该文件中,我们定义了一个名为“Article”的数据模型,并定义了相应的数据结构。

2、定义路由

在“routes”文件夹下创建一个名为“articles.js”的文件,我们将在该文件中定义文章相关的路由处理逻辑:

const express = require('express');const router = express.Router();const Article = require('../models/article');// 获取文章列表router.get('/', (req, res) => {    Article.find((err, articles) => {        if (err) {            console.log(err);        } else {            res.json({ articles });        }    });});// 获取单篇文章router.get('/:id', (req, res) => {    Article.findById(req.params.id, (err, article) => {        if (err) {            console.log(err);        } else {            res.json({ article });        }    });});// 新增文章router.post('/', (req, res) => {    const article = new Article(req.body);    article.save()        .then(() => res.json({ success: true }))        .catch(err => console.log(err));});// 更新文章router.put('/:id', (req, res) => {    Article.findByIdAndUpdate(req.params.id, req.body, { new: true }, (err, article) => {        if (err) {            console.log(err);        } else {            res.json({ article });        }    });});// 删除文章router.delete('/:id', (req, res) => {    Article.findByIdAndRemove(req.params.id, (err, article) => {        if (err) {            console.log(err);        } else {            res.json({ article });        }    });});module.exports = router;

登录后复制

在该文件中,我们定义了文章相关的所有路由处理逻辑,包括获取文章列表、获取单篇文章、新增文章、更新文章和删除文章。

五、前端开发

在本案例中,我们将使用Vue.js组件来完成前端开发。在“client/src”文件夹下创建一个名为“components”的文件夹,用于存放Vue.js组件,我们将在该文件夹下创建一个名为“Articles”的组件,该组件将实现文章列表的展示、新增、编辑和删除:

    
ID Title Author Created At Updated At Actions
{{ article._id }} {{ article.title }} {{ article.author }} {{ article.created_at }} {{ article.updated_at }}
export default { data() { return { articles: [], article: { title: '', author: '', content: '' }, isNew: true } }, created() { this.getArticles(); }, methods: { getArticles() { fetch('/api/articles') .then(res => res.json()) .then(data => this.articles = data.articles) .catch(err => console.log(err)); }, createArticle() { fetch('/api/articles', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(this.article) }) .then(res => res.json()) .then(data => { if (data.success) { this.article = { title: '', author: '', content: '' }; this.getArticles(); } }) .catch(err => console.log(err)); }, updateArticle(id) { fetch(`/api/articles/${id}`, { method: 'PUT', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(this.article) }) .then(res => res.json()) .then(data => { if (data.article) { this.article = { title: '', author: '', content: '' }; this.isNew = true; this.getArticles(); } }) .catch(err => console.log(err)); }, deleteArticle(id) { fetch(`/api/articles/${id}`, { method: 'DELETE' }) .then(res => res.json()) .then(data => { if (data.article) { this.getArticles(); } }) .catch(err => console.log(err)); }, submit() { if (this.isNew) { this.createArticle(); } else { this.updateArticle(this.article._id); } }, edit(id) { const article = this.articles.find(a => a._id === id); this.article = { ...article }; this.isNew = false; }, del(id) { const article = this.articles.find(a => a._id === id); if (window.confirm(`Are you sure to delete article: ${article.title}?`)) { this.deleteArticle(id); } } } } table { border-collapse: collapse; width: 100%; } td, th { border: 1px solid #ddd; padding: 8px; text-align: left; } tr:nth-child(even) { background-color: #f2f2f2; } form { display: flex; flex-direction: column; } textarea { height: 100px; } button { margin-top: 10px; padding: 8px 16px; background-color: #1E6FAF; color: #fff; border: none; border-radius: 4px; cursor: pointer; } button:hover { background-color: #15446F; }

登录后复制

在该组件中,我们定义了一个名为“Articles”的Vue.js组件,并实现了文章列表的展示、新增、编辑和删除功能,该组件调用了后端API,通过fetch()函数来获取、创建、更新和删除文章。

六、启动应用程序

在完成了后端和前端开发之后,我们需要启动应用程序来验证我们的代码是否工作正常。在命令行中进入项目根目录,并分别在“server”和“client”文件夹下执行以下命令:

npm installnpm start

登录后复制

该命令将分别启动后端和前端服务,并在浏览器中打开前端应用程序。在浏览器中输入“http://localhost:8080”即可访问我们的文章发布和管理系统。

七、总结

Node.js和Vue.js的结合可以帮助我们快速搭建一个全栈Web应用,并且可以实现高效的开发和良好的用户体验。在本文中,我们通过一个实际的项目展示了如何使用Node.js和Vue.js搭建一个全栈Web应用,相信本文可以帮助各位开发者更好地理解Node.js和Vue.js的应用。

以上就是Node.js与Vue.js怎么搭建一个全栈项目的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2695886.html

(0)
上一篇 2025年3月7日 18:27:55
下一篇 2025年3月7日 18:28:06

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • 三个方面探讨node.js如何处理高并发

    随着互联网技术和应用的不断发展,高并发的处理成为了开发人员关注的焦点之一。而对于node.js开发人员来说,如何应对高并发也是一个必备的能力。本文将从node.js本身特点、使用原则和优化策略三个方面来探讨node.js如何处理高并发。 一…

    编程技术 2025年3月7日
    200
  • 手把手教你用js实现瀑布流布局

    本篇文章给大家带来了关于javascript的相关知识,其中主要跟大家聊一聊用怎么js实现瀑布流布局,有代码示例,感兴趣的朋友下面一起来看一下吧,希望对大家有帮助。 手把手带你攻克 瀑布流布局 前言 瀑布流布局,是现在比较流行的一种页面布局…

    2025年3月7日
    200
  • 常用的JavaScript数值操作技巧

    javascript是一种高级编程语言,它可以用来实现动态网页以及各种交互式的功能。在javascript中,我们可以通过一些简单的代码来修改数值,这个非常重要,因为在实际的项目开发中,我们经常需要进行数值操作。 现在,我将为你介绍一些常用…

    编程技术 2025年3月7日
    200
  • jquery怎么实现超酷的日程安排插件

    在现代高速运转的世界中,日程安排已经变得越来越重要了。人们需要利用各种工具来帮助他们有效地管理自己的日程安排。为此,出现了许多帮助人们管理日程的软件和工具,尤其是基于web的日程安排应用程序。而其中一个使用最广泛的是jquery。jquer…

    编程技术 2025年3月7日
    200
  • javascript怎么实现类似百度分享功能

    百度分享是一个非常流行的社交分享插件,允许网站的访问者方便地分享网站上的内容。这个功能非常受欢迎,因为它允许用户快速地将他们所喜欢的内容分享到不同的社交网络,例如微信、微博、qq等。 但是,你知道吗?你也可以使用javascript实现类似…

    编程技术 2025年3月7日
    200
  • JavaScript 华为设置完全指南

    javascript 是一种广泛使用的编程语言,可以用于为网站和应用程序添加交互性和动态特效。在华为设置中,使用 javascript 可以为用户提供更好的体验和更多的功能。在本文中,我们将深入了解如何在华为设置中使用 javascript…

    编程技术 2025年3月7日
    200
  • 一文搞懂Node的的事件循环

    本篇文章聊聊nodejs中的事件循环,希望带大家搞懂nodejs中的事件循环,从此再也不怕面试官的灵魂发问:谈一下nodejs的事件循环! 想必大家面试的时候,都会被面试官问道:“谈谈Nodejs的事件循环吧”。 因为本人也被问道过,但每一…

    2025年3月7日 编程技术
    200
  • 晕!面试题console.log(([][[]] + [])[+!![]]+([]+{})[+!![]+ + !![]])输出什么

    本篇文章给大家带来了关于前端的相关知识,其中主要跟大家分享一道有关console.log的面试题,感兴趣的朋友下面一起来看一下吧,希望对大家有帮助。 前言 面试题console.log(([][[]] + [])[+!![]]+([]+{}…

    2025年3月7日
    200
  • 深入浅析Node中的util.promisify()函数

    node.js 内置的 util 包有一个 promisify() 函数,可以将基于回调的函数转换为基于 promise 的函数。本文就来给大家介绍一下node.js 中的 util.promisify() 函数,希望对大家有所帮助。 让你…

    2025年3月7日
    200
  • 一文带你快速了解JS正则表达式的使用方法

    javascript中如何使用正则表达式?下面本篇文章带大家深入了解一下javascript正则表达式的使用方法,希望对大家有所帮助! I. 序言:JavaScript中正则表达式的使用场景 本期博客带大家了解一下JavaScript中如何…

    2025年3月7日 编程技术
    200

发表回复

登录后才能评论