IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> node+vue前后端分离初体验 -> 正文阅读

[JavaScript知识库]node+vue前后端分离初体验

认识前后端分离

前后端分离简单的理解就是前端与后端看做两个不同的项目,分开进行开发,互不干扰,前端只关注页面,后端只关注业务逻辑。后端提供接口,前端来调用。这里使用node作为服务器后端,前端使用vue,使用axios进行前后端交互,在本地测试一个简单的前后端分离案例。

前端配置

#使用vue-cli@3.0创建项目

vue create myapp

#进入myapp项目中

cd myapp

#引入axios

npm install axios --save

#在main.js中导入axios

import axios from 'axios'
Vue.prototype.$axios = axios
 

#在src下面的components下创建组件user.vue

<template>
    <div id="">
        <p>这是从服务器拿来的数据 {{msg}}</p>
        
    </div>
</template>
?
<script>
    export default {
     ?name: 'user',
     ?data() {
         ?return {
             ?msg: ''
          }
      },
     ?created () {
     ? ? ?this.$axios({
     ? ? ? ?method: 'get',
     ? ? ? ?url: 'http://localhost:3000/api/users'
     ? ?  }).then(response => {
     ? ? ? ?this.msg = response.data
     ? ? ? ?console.log(response.data)
     ? ?  }).catch(error => {
     ? ? ? ?console.log('error:' + error)
     ? ?  })
     ?  }
    }
</script>
?
<style>
</style>
?

#App.vue

<template>
 ?<div id="app">
    <user></user>
 ?</div>
</template>
?
<script>
import user from './components/user.vue'
export default{
    name: 'app',
    components: {
        user
    }
}
</script>
?
<style>
?
</style>
?

后端配置

#创建项目app-api

#使用npm初始项目

npm init
npm install

#在项目根目录下创建文件夹routers,在routers下创建users.js

var express = require('express'); ? ? ?
var router = express.Router(); ? ? ? ?
?
router.get('/api/users', function (req, res, next) {
 ?const data = {
    id: 1,
 ? ?name: '张三',
    sex: '男',
    age: 18
  }
 ?res.json(data);
});
module.exports = router;

#在项目根目录下创建app.js文件

//引包
const express = require('express');
//创建服务器
const app = express();
?
//导入路由文件
const routers = require('./routers/users.js');
?
//挂载路由
app.use(routers);
?
//设置服务器端口号
app.listen(3000,function(){
    console.log('server is running at port 3000');
});

跨域问题

这时候启动前端项目是不能访问的后端的api的,前后端互相访问需要跨域,

#解决之道,跨域可以在前端配置,也可以在后端配置

后端解决跨域

#在app-api项目中安装cors

npm install cors --save

#在app.js中配置

const cors = require('cors'); 
app.use(cors());
//注意这两行配置必须放在挂载路由之前

前端解决跨域

#在myapp项目根目录下创建vue.config.js

module.exports = {
 ? ?devServer: {
 ? ? ? ?proxy: { // 设置代理
 ? ? ? ? ? ?'/api': {
 ? ? ? ? ? ? ? ?target: 'http://127.0.0.1:3000', // 请求的目标服务器接口
 ? ? ? ? ? ? ? ?changeOrigin: true, // 在本地会创建一个虚拟服务端,然后发送请求的数据,并同时接收请求的数据,这样服务端和服务端进行数据的交互就不会有跨域问题
 ? ? ? ? ? ? ? ?pathRewrite: { // 重写请求
 ? ? ? ? ? ? ? ? ? ?'^/api': '/api' // 替换target中的请求地址,也就是说在请求http://127.0.0.1:8888/XXXXX这个地址的时候直接写成/api即可。
 ? ? ? ? ? ? ?  }
 ? ? ? ? ?  }
 ? ? ?  }
 ?  }
}

#如果使用前端解决跨域问题,则请求接口地址有变化

this.$axios({
? ? ??????? method: 'get',
? ? ??????? url: 'api/users'
? ? ????? }).then(response => {
? ? ??????? this.msg = response.data
? ? ??????? console.log(response.data)
? ? ????? }).catch(error => {
? ? ??????? console.log('error:' + error)
? ? ????? })
? ? ??? }

语法校验问题

#去除eslint验证

#在myapp根目录下的.eslintrc.js文件中将 parser: 'babel-eslint' 注释掉即可

#如果找不到.eslintrc.js文件,可以在package.json文件中找到 parser: 'babel-eslint' ,将其注释

#在创建项目的时候有一个询问配置信息的存放位置,这里应该选择 Indedicated config files

module.exports = {
  root: true,
  env: {
 ?  node: true
  },
  'extends': [
 ?  'plugin:vue/essential',
 ?  'eslint:recommended'
  ],
  rules: {
 ?  'no-console': process.env.NODE_ENV === 'production' ? 'error' : 'off',
 ?  'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off'
  },
  parserOptions: {
 ?  // parser: 'babel-eslint'
  }
}
?

启动项目

#进入app-api,运行app.js

node app.js

#浏览器浏览http://localhost:3000/api/users

#进入myapp,启动配置

npm run serve

#浏览器浏览http://localhost:8080

? ? ?

  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2021-11-26 08:46:34  更:2021-11-26 08:47:11 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/21 4:49:16-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码