vue-cli3+Express本地项目搭建

一、Express 项目搭建

  1. 请先安装node.js
    安装Node.js

  2. 搭建项目

    1. 创建文件夹
      随便找一个地方,创建一个文件夹,取名为 service(名字请随意)。进入该文件终端,然后输入 npm init,初始化一个 node 项目,之后一直 enter 到结束。现在 service 文件夹里面就有一个 package.json 文件了

      image.png

    2. 安装Express
      命令行输入 npm install express --save,会自动生成一个node_modules文件夹和package-lock.json文件。

      image.png

    3. 搭建服务器
      在service文件夹里面新建一个index.js文件,并编辑:

      const express = require("express");
      const app = express();
      app.listen(5000, () => console.log('**********【服务器启动成功】**********'));
      
      image.png
    4. 启动服务器
      在终端输入node index回车,即可启动成功,并且会打印 **********【服务器启动成功】**********

      image.png

二、VUE项目构建

  1. 安装vue-cli3
    请先全局安装vue-cli3,进入终端,输入命令npm install -g @vue/cli

    注意:如果以前安装过vue-cli的其他版本,请先卸载,详情请看npm更新vue-cli3,报错问题解决

  2. vue页面构建
    找一个文件夹,进入终端,输入vue create pro-name,其中的pro-name是你的项目名称,可以随意取名。然后就是依据提示,enter下去(新手可以直接使用默认的配置,配置过的朋友可以自己选择自己需要的进行配置),安装完成后用编辑器(我使用的是VS code)打开你的pro-name项目,在终端里面运行npm install,完成后npm run serve,然后打开显示出来的网址,里面是 vue 构建的一些页面,这样 vue 单页面项目就构建成功了。

    image.png

    image.png

三、Vue 与 Express 连接

  1. vue页面配置
    pro-name文件夹里面新建一个vue.config.js文件,编辑内容:
    const host = require('ip').address()
    
    module.exports = {
        devServer: {
            // 打开网址
            open: true,
            host,
            port: 8080,
        },
    }
    
    image.png
  2. Node项目index.js(入口文件)配置
    index.js里面写入 getpost 接口:
    app.get('/user/get', (req, res) => {
        console.log('req', req)
        console.log('res', res)
        res.send('get访问成功')
    })
    app.post('/user/post', (req, res) => {
        console.log('req', req)
        console.log('res', res)
        res.send('post访问成功')
    })
    
    image.png
  3. vue项目访问get、post
    1. 安装axios,在pro-name文件夹终端输入npm install axios --save

    2. 引入和配置axios
      src文件夹下创建一个plugins文件夹,再在plugins文件夹下创建一个axios文件夹,最后在axios文件夹下创建一个index.js文件,编辑内容:

      import Vue from 'vue'
      import axios from 'axios'
      
      const instance = axios.create({
          // http://本机IP地址:端口号
          baseURL: 'http://192.168.0.102:8000',
          // 请求时长
          timeout: 15000,
      })
      
      Vue.prototype.$instance = instance
      
      image.png

      注意:本机IP地址:在终端输入ifconfig查询,端口号在你的node项目的index.js文件里面

      image.png

      image.png

      接下来在main.js文件里面引入axios里面的index.js文件:import './plugins/axios/index'

      image.png

    3. 选择一个页面访问getpost,我选择的是Home.vue页面,在script标签里面添加代码:

      // get接口
      // 模板渲染成html前调用
      created() {
          this.$instance
              .get('/user/get', {
                  params: {
                      name: 'name',
                  },
              })
              .then(res => {
                  console.log(res)
              })
              .catch(error => {
                  console.log('error: ', error)
              })
          this.$instance
              .post('/user/post', {
                  name: 'name',
              })
              .then(res => {
                  console.log(res)
              })
              .catch(error => {
                  console.log('error: ', error)
              })
      },
      
      image.png
    4. 重新运行node:node index 和 vue:npm run serce
      可能你会得到一个报错的页面,这是跨域报错

      image.png

      解决办法,在node项目的index.js文件里面添加:

      app.all('*', function (req, res, next) {
          //设置允许跨域的域名,*代表允许任意域名跨域
          res.header('Access-Control-Allow-Origin', '*')
          //允许的header类型
          res.header('Access-Control-Allow-Headers', 'content-type')
          //跨域允许的请求方式
          res.header('Access-Control-Allow-Methods', 'DELETE,PUT,POST,GET,OPTIONS')
          if (req.method.toLowerCase() == 'options') res.send(200)
          //让options尝试请求快速结束
          else next()
      })
      
      image.png
    5. 再次重新运行node:node index 和 vue:npm run serce
      得到这个结果,接口就算访问成功啦!

      image.png

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,393评论 5 467
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,790评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,391评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,703评论 1 270
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,613评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,003评论 1 275
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,507评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,158评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,300评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,256评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,274评论 1 328
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,984评论 3 316
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,569评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,662评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,899评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,268评论 2 345
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,840评论 2 339