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日

相关文章

  • 基于Vue+Webpack拆分路由文件实现管理

    接下来我会为您详细讲解“基于Vue+Webpack拆分路由文件实现管理”的完整攻略。这个攻略主要分为以下几个步骤: 1. 安装和配置Webpack 首先,我们需要在本地安装Webpack和webpack-dev-server。可以通过执行下面的命令进行安装: npm install webpack webpack-cli webpack-dev-server…

    Vue 2023年5月28日
    00
  • vue如何实时往数组里追加数据

    当我们需要在 Vue 中实时往数组里追加数据时,有以下几种方法可供选择: 1. 使用 push() 方法 Vue 的数据双向绑定机制,使得当数组发生变更时,页面会自动更新渲染。因此,使用 JavaScript 原生的 push() 方法向数组中追加数据就可以实现实时更新视图的效果。这个方法会接收待添加的数据,把它添加到数组的最后位置。示例代码如下: <…

    Vue 2023年5月27日
    00
  • vue中 this.$set的使用详解

    Vue中 this.$set的使用详解 在Vue中,我们通常使用data属性来存储组建的数据,同时也可以使用this关键字来访问这些数据。然而,当我们需要动态地添加或更新对象属性时,Vue的响应式系统并不会像我们期望的那样自动更新,而是需要使用this.$set方法。 什么是this.$set 在Vue中,当一个对象被添加到Vue实例的data属性里时,Vu…

    Vue 2023年5月27日
    00
  • 详解Vue的键盘事件

    详解Vue的键盘事件 Vue.js是一个流行的JavaScript框架,它减轻了开发者在构建大型Web应用程序方面的工作负担,并将应用程序的数据和界面分离。Vue.js还提供了一些内置的事件绑定选项,其中包括与键盘事件相关的选项。 键盘事件介绍 键盘事件是用户通过打字机输入字符的过程中触发的事件。Vue.js提供了四种键盘事件: @keydown: even…

    Vue 2023年5月28日
    00
  • vue项目网页自适应等比例放大缩小实例代码

    下面是关于 vue 项目网页自适应等比例放大缩小实例代码的详细攻略。 1. CSS3实现 实现网页自适应等比例放大缩小的方式之一是利用 CSS3 的 transform 属性来实现。具体实现步骤如下: 在 head 标签中添加 viewport meta 标签,以适配不同设备。 <head> <meta name="viewpor…

    Vue 2023年5月28日
    00
  • 深入探讨Vue 3中的组合式函数编程方式

    深入探讨Vue 3中的组合式函数编程方式 在Vue 3中,组合式函数编程(Composition API)是一种新的编程方式,它支持更加灵活和复杂的业务逻辑,比以往的Options API更加直观和易用。在这篇文章中,我们将深入探讨Vue 3中的组合式函数编程方式,并给出两个示例说明。 什么是组合式函数编程? 组合式函数编程是指将一个组件中的逻辑分解成一组有…

    Vue 2023年5月27日
    00
  • vue – props 声明数组和对象操作

    当我们通过props传递数组或对象数据时,需要注意以下几点: 父组件向子组件传递数组或对象数据时,需要使用v-bind绑定数据,子组件中需要使用props接收数据。 子组件可以直接使用props接收到的数组或对象数据,也可以对其进行修改操作。但需要注意:Vue不建议直接修改props中的数据,否则可能会导致数据流不清晰,难以维护。 如果子组件需要修改prop…

    Vue 2023年5月28日
    00
  • 详解IDEA社区版(Community)和付费版(UItimate)的区别

    详解IDEA社区版和付费版的区别 介绍 IntelliJ IDEA是一款功能强大的Java集成开发工具(IDE)。它有两个版本:社区版和付费版。社区版是免费的,而付费版有更多的功能和增强的特性。 社区版和付费版的主要区别 功能 付费版具有比社区版更高级的功能。例如,付费版包括对Web和企业开发的更好支持,包括Java、Scala、Kotlin和JavaScr…

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