vue+node+webpack环境搭建教程

Vue + Node + Webpack 环境搭建教程

本文详细讲解如何搭建 Vue + Node + Webpack 环境,以及相关的配置和注意事项。本教程中使用的框架版本如下:

  • Vue.js:2.x
  • Node.js:8.x
  • Webpack:3.x

1. 安装 Node.js

在开始搭建前,首先需要安装 Node.js。Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境。可以前往 Node.js 官网 下载安装最新版本的 Node.js。

2. 初始化项目

我们使用 Vue-cli 脚手架工具来初始化项目,执行以下命令:

npm install -g vue-cli
vue init webpack my-project

其中 my-project 是你的项目名称。执行上述命令后会有一系列的交互式问题,包括项目名称、描述、作者、选择要使用的 Vue 版本等。选择对应的选项即可。

3. 安装 npm 包

进入项目目录执行以下命令安装依赖:

cd my-project
npm install

4. 配置 Webpack

1. 添加 webpack-dev-server

webpack-dev-server 是一个静态文件服务器,可以用来预览我们的项目。执行以下命令安装:

npm install --save-dev webpack-dev-server

接下来需要在 webpack.config.js 文件中添加相关的配置:

// webpack.config.js

module.exports = {
  // ...
  devServer: {
    contentBase: './dist',
    port: 8080,
    historyApiFallback: true
  }
}
  • contentBase:静态文件服务根目录
  • port:指定要监听的端口号
  • historyApiFallback:当访问不存在的路径时是否匹配到 index.html

2. 添加文件路径别名

webpack.config.js 文件中添加文件路径别名,可以方便快捷地引用相对路径下的文件。修改 resolve 属性的 alias 部分:

// webpack.config.js

module.exports = {
  // ...
  resolve: {
    alias: {
      '@': path.resolve(__dirname, 'src/')
    }
  }
}

这里添加了一个别名 @,指向 src/ 目录。

3. 添加 loader

  • 如果需要处理 .vue 文件,需要安装 vue-loadervue-template-compiler,执行以下命令:
npm install --save-dev vue-loader vue-template-compiler

添加 vue-loaderVueLoaderPluginmodule.rules 中:

module.exports = {
  // ...
  module: {
    rules: [
      {
        test: /\.vue$/,
        loader: 'vue-loader'
      }
    ]
  },
  plugins: [
    new VueLoaderPlugin()
  ]
}
  • 如果需要处理 ES6 或者其他语言的源代码,则需要使用 babel 进行转换,安装以下包:
npm install --save-dev babel-loader @babel/core @babel/preset-env

babel-loader 是 Webpack 打包工具所需要的一个 转译器,@babel/preset-env 是 Babel 的预设,它会告诉 Babel 需要进行哪些转换。

添加到 module.rules 中:

module.exports = {
  // ...
  module: {
    rules: [
      {
        test: /\.js$/,
        exclude: /node_modules/,
        use: {
          loader: 'babel-loader',
          options: {
            presets: ['@babel/preset-env']
          }
        }
      }
    ]
  }
}

4. 添加插件

webpack.config.js 文件中添加以下插件:

const { VueLoaderPlugin } = require('vue-loader')

module.exports = {
  // ...
  plugins: [
    new VueLoaderPlugin()
  ]
}

5. 配置 Node.js 服务

我们需要在项目中使用 Node.js 服务,需要安装一些必要的包。执行以下命令:

npm install --save express body-parser cors

这里我们用到了 expressbody-parsercors,分别代表 web 框架、处理 post 数据、跨域处理。

在项目根目录下,新建一个名为 server.js 的文件,添加以下代码:

// server.js

const express = require('express')
const bodyParser = require('body-parser')
const cors = require('cors')

const app = express()

// 跨域中间件
app.use(cors())

// 接口转发
app.use('/api', (req, res) => {
  // ...
})

// 解析 post 请求中的 json 数据
app.use(bodyParser.json())

// 监听端口
const port = 3000
app.listen(port, () => {
  console.log(`服务器启动成功:http://localhost:${port}`)
})

app.use('/api', (req, res) => {}) 的回调函数中编写接口的处理逻辑。下面是一个简单的例子:

// server.js

// 假设有一个 user 接口,根据传过来的 id 返回对应用户信息
app.use('/api/user/:id', (req, res) => {
  // 假设用户信息在数据库中
  const db = [
    { id: 1, name: '张三' },
    { id: 2, name: '李四' },
    { id: 3, name: '王五' }
  ]

  // 获取请求中的 id
  const id = req.params.id
  const user = db.find(item => item.id === Number(id))

  // 返回用户信息
  res.json(user)
})

6. 添加示例说明

示例一:vue 组件调用 Node.js 接口

  • App.vue
<template>
  <div>
    <button @click="getUser">获取用户信息</button>
    <p>{{ user }}</p>
  </div>
</template>

<script>
export default {
  data() {
    return {
      user: ''
    }
  },
  methods: {
    getUser() {
      // 调用 user 接口
      const id = 2 // 假设要查询的用户 id 为 2
      this.$http.get(`/api/user/${id}`).then(response => {
        const user = response.data
        this.user = user ? user.name : ''
      })
    }
  }
}
</script>
  • main.js
import Vue from 'vue'
import Axios from 'axios'
import App from './App.vue'

// 配置 axios
Axios.defaults.baseURL = 'http://localhost:3000'
Vue.prototype.$http = Axios

new Vue({
  el: '#app',
  render: h => h(App)
})

示例二:Node.js 服务调用外部接口

  • server.js
const express = require('express')
const Axios = require('axios')
const bodyParser = require('body-parser')
const cors = require('cors')

const app = express()

// 跨域中间件
app.use(cors())

// 接口转发
app.use('/api', async (req, res, next) => {
  try {
    const url = `https://api.example.com${req.originalUrl}` // 假设需要访问的外部接口地址为 https://api.example.com
    const response = await Axios(url, {
      method: req.method,
      headers: req.headers,
      data: req.body
    })
    res.status(response.status).json(response.data)
  } catch (error) {
    next(error)
  }
})

// 解析 post 请求中的 json 数据
app.use(bodyParser.json())

// 监听端口
const port = 3000
app.listen(port, () => {
  console.log(`服务器启动成功:http://localhost:${port}`)
})

这个示例中,我们将访问某个外部接口的请求转发到我们自己的 Node.js 服务中,目的是为了更好的控制请求,比如添加统一的请求头、鉴权信息等。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:vue+node+webpack环境搭建教程 - Python技术站

(0)
上一篇 2023年5月27日
下一篇 2023年5月27日

相关文章

  • vue3使用flv.js播放推流视频的示例代码

    下面是关于“vue3使用flv.js播放推流视频的示例代码”的完整攻略: 1. 大体思路 首先,我们需要了解一下使用 FLV.js 播放推流视频的思路。 推流视频一般使用推送协议,如 RTMP,这种协议一般是使用 Flash 直播内核来推送。而 FLV.js 是一个基于浏览器的 FLV 视频播放器,可以使用它来播放推流视频。 具体来说,在 Vue 组件中,我…

    Vue 2023年5月28日
    00
  • SpringBoot集成支付宝沙箱支付的实现示例

    下面是详细讲解“SpringBoot集成支付宝沙箱支付的实现示例”的完整攻略: 一、前置准备 注册并开通阿里云账号。 创建一个支付宝沙箱应用,获取支付宝沙箱应用 ID 和秘钥。 了解支付宝接口文档和SDK相关内容。 选择合适的开发语言和开发框架。本教程采用 SpringBoot 框架。 二、添加依赖 在 pom.xml 文件中添加 Alibaba maven…

    Vue 2023年5月28日
    00
  • 详解VUE中的插值( Interpolation)语法

    下面是“详解VUE中的插值(Interpolation)语法”的攻略: 1. 什么是插值语法? 插值是一种模板引擎语法,用于将数据绑定到文本或属性中。在Vue中,插值语法可以用双大括号{{}}来表示,可以在HTML文本中任意使用。 例如,在Vue模板中,我们可以使用插值语法将data数据绑定到html标签中: <div> {{message}} …

    Vue 2023年5月27日
    00
  • Vue 2.0 基础详细

    Vue 2.0 基础详细攻略 Vue.js是一款流行的JavaScript框架,它可以使我们更容易地编写可重用的组件以及可交互的应用程序。Vue 2.0是Vue.js的最新版本,它具有更高的性能和更好的开发体验。在本文中,我们将介绍Vue.js 2.0的基础知识和相关概念,以及如何使用Vue.js 2.0构建现代Web应用程序。 Vue.js基础 Vue.j…

    Vue 2023年5月27日
    00
  • vue使用Vue.extend方法仿写个loading加载中效果实例

    下面是详细讲解“vue使用Vue.extend方法仿写个loading加载中效果实例”的完整攻略: 1. Vue.extend方法简介 Vue.extend是Vue.js中一个全局API,它接受一个参数对象并返回一个新的组件构造函数,这个构造函数可以被像任何其它组件一样被实例化。 其主要作用是定义可复用的组件模板,这些模板可以在后面使用到。 2. 实现过程 …

    Vue 2023年5月29日
    00
  • 关于Vue3&TypeScript的踩坑汇总

    关于Vue3&TypeScript的踩坑汇总 简介 Vue3是一款非常流行的JavaScript框架,提供了许多强大的功能和工具,使得开发复杂的前端应用程序变得更加容易。与此同时,TypeScript是一种强类型的JavaScript语言,它可以提供更好的可读性和可维护性,在Vue3的开发过程中也极其有用。但是,在使用Vue3和TypeScript的…

    Vue 2023年5月28日
    00
  • 浅谈Vue 性能优化之深挖数组

    Vue 性能优化是 Vue 开发中必不可少的一部分,而数组的操作对于Vue 的性能表现有着至关重要的影响。本文将从如何深挖数组入手,多维度地对 Vue 进行优化。 1. 避免直接操作数组 我们不能直接使用 push、splice、sort 等方法操作数组,因为这些方法会直接改变源数组并且不能全局响应。 一种避免这种问题的方式是使用 Vue.set、Vue.d…

    Vue 2023年5月28日
    00
  • 基于Vue实现后台系统权限控制的示例代码

    基于Vue实现后台系统权限控制的示例代码,可分为以下几个步骤: 实现路由拦截 在Vue项目中,可以通过element-ui的router插件实现路由拦截。在路由配置文件中,通过设置meta字段的requireAuth属性来实现对需要授权的页面进行拦截。示例代码如下: import Vue from ‘vue’; import VueRouter from ‘…

    Vue 2023年5月27日
    00
合作推广
合作推广
分享本页
返回顶部