详解从零搭建 vue2 vue-router2 webpack3 工程

《详解从零搭建 vue2 vue-router2 webpack3 工程》是一篇教程,它旨在帮助初学者学习如何使用 Vue 2 和 Vue-Router 2 搭建一个简单的 Web 应用程序,同时使用 Webpack 3 来处理依赖,以及使用 ES6 进行编程。以下是它的完整攻略:

介绍

在开始之前,需要了解一些前置知识:Vue.js 是一个渐进式 JavaScript 框架,用于构建用户界面。Vue-Router 2 是一个 Vue.js 的官方路由管理器,用于管理应用程序的路由。Webpack 3 是一个模块捆绑器,用于处理 JavaScript 模块。

创建项目

首先要创建一个新的 Vue.js 项目,可以使用 Vue.js 官方提供的 Vue CLI 工具来创建项目。在终端中运行以下命令来安装它:

$ npm install -g @vue/cli

安装完成后,运行以下命令来创建一个新的 Vue.js 项目:

$ vue create my-project

这个命令将会创建一个名为 my-project 的新项目,其中包含了所有必要的文件和依赖项。在本教程中,使用了默认选项来创建这个项目。

安装依赖

接下来,需要安装一些必要的依赖项。在本教程中,使用以下命令来安装这些依赖项:

$ npm install vue-router axios --save
$ npm install webpack webpack-cli webpack-dev-server html-webpack-plugin babel-loader @babel/core @babel/preset-env --save-dev

这个命令将会安装 Vue-Router、Axios 和 Webpack 的一些必要依赖项。

创建入口文件和组件

接下来,需要创建一个用于启动应用程序的入口文件。在项目的 src 目录下创建一个名为 main.js 的文件,然后将以下代码复制到该文件中:

import Vue from 'vue';
import App from './App.vue';
import router from './router';

new Vue({
    router,
    render: h => h(App)
}).$mount('#app');

这个代码将会:

  1. 引入 Vue.js、App.vue 组件和 Vue-Router 路由管理器;
  2. 创建一个新的 Vue.js 实例,将其挂载到 id 为 app 的 DOM 元素上;
  3. 将 Vue-Router 路由管理器作为实例的一个参数传递给它;
  4. 将 App.vue 组件作为实例的根组件,并使用 render 函数来渲染它。

接下来,创建一个 App.vue 组件,在该组件中包含以下代码:

<template>
    <div>
        <router-view />
    </div>
</template>

<script>
export default {
    name: 'App',
}
</script>

<style>
</style>

这个组件将会:

  1. 渲染一个包含 Vue-Router 视图实例的 div 元素。

最后,创建一个名为 HelloWorld.vue 的新组件,在该组件中包含以下代码:

<template>
    <div class="hello">
        <h1>{{ greeting }}</h1>
    </div>
</template>

<script>
export default {
    name: 'HelloWorld',
    data() {
        return {
            greeting: 'Hello World!',
        };
    },
};
</script>

<style scoped>
.hello {
    font-size: 48px;
    text-align: center;
}
</style>

这个组件将会:

  1. 渲染一个包含一个标题的 div 元素。

配置 Webpack

接下来,需要创建一个 Webpack 配置文件。在项目的根目录下创建一个名为 webpack.config.js 的文件,并将以下代码复制到该文件中:

const path = require('path');
const HtmlWebpackPlugin = require('html-webpack-plugin');

module.exports = {
    entry: './src/main.js',
    output: {
        path: path.resolve(__dirname, './dist'),
        filename: 'build.js'
    },
    module: {
        rules: [
            {
                test: /\.js$/,
                use: 'babel-loader',
                exclude: /node_modules/
            }
        ]
    },
    plugins: [
        new HtmlWebpackPlugin({
            template: './public/index.html'
        })
    ],
    devServer: {
        historyApiFallback: true,
        noInfo: true
    }
};

在该文件中:

  • entry:指定了 webpack 的入口文件。
  • output:指定了 webpack 的输出位置和文件名。
  • module:指定了 webpack 的模块加载器。
  • plugins:指定了 webpack 的插件,如 HTMLWebpackPlugin,用于生成 HTML 文件。
  • devServer:指定了 webpack-dev-server 的相关设置。

此外需要在根目录下创建一个 public/index.html 文件,将以下代码复制到该文件中:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>My App</title>
  </head>
  <body>
    <div id="app"></div>
  </body>
</html>

这个文件将会被 webpack 用于生成最终的 HTML 文件。

配置路由

接下来,将在 src 目录下创建一个 router/index.js 文件,用于配置路由:

import Vue from 'vue';
import Router from 'vue-router';
import HelloWorld from '../components/HelloWorld.vue';

Vue.use(Router);

export default new Router({
    mode: 'history',
    routes: [
        {
            path: '/',
            name: 'HelloWorld',
            component: HelloWorld
        }
    ]
})

在这个文件中:

  • 引入了 Vue、Vue-Router 和 HelloWorld 组件;
  • 创建了一个 Vue-Router 实例;
  • 配置了路由规则。

测试

现在一切准备就绪,运行以下命令来启动 webpack-dev-server:

$ npx webpack-dev-server --hot --open

然后在浏览器中打开 http://localhost:8080,就能看到一个界面,上面有一个大大的 "Hello World!" 标题。

示例1

现在,可以添加一个新的页面。创建一个名为 World.vue 的新组件,在其中包含以下代码:

<template>
    <div class="world">
        <h1>{{ greeting }}</h1>
    </div>
</template>

<script>
export default {
    name: 'World',
    data() {
        return {
            greeting: 'Hello World! I am the world page.',
        };
    },
};
</script>

<style scoped>
.world {
    font-size: 48px;
    text-align: center;
}
</style>

然后修改 router/index.js 文件,添加以下路由规则:

import World from '../components/World.vue';

// ...

export default new Router({
    // ...
    routes: [
        {
            path: '/',
            name: 'HelloWorld',
            component: HelloWorld
        },
        {
            path: '/world',
            name: 'World',
            component: World
        }
    ]
})

注意路径中包含了一个名为 world 的新路由。接下来访问 http://localhost:8080/world 就能看到一个新的页面,上面有一个标题 "Hello World! I am the world page."。

示例2

现在,可以通过网络请求来获取数据。创建一个名为 HelloWorld2.vue 的新组件,在其中包含以下代码:

<template>
    <div class="hello">
        <h1>{{ data }}</h1>
    </div>
</template>

<script>
import axios from 'axios';

export default {
    name: 'HelloWorld2',
    data() {
        return {
            data: null,
        };
    },
    mounted() {
        axios.get('https://jsonplaceholder.typicode.com/posts/1')
            .then(response => {
                this.data = response.data.title;
            })
            .catch(error => {
                console.log(error);
            });
    },
};
</script>

<style scoped>
.hello {
    font-size: 48px;
    text-align: center;
}
</style>

这个组件使用了 Axios 来获取一个 JSON 数据,然后将其显示在页面上。

然后在 router/index.js 文件中添加以下路由规则:

import HelloWorld2 from '../components/HelloWorld2.vue';

// ...

export default new Router({
    // ...
    routes: [
        {
            path: '/',
            name: 'HelloWorld',
            component: HelloWorld
        },
        {
            path: '/world',
            name: 'World',
            component: World
        },
        {
            path: '/hello2',
            name: 'HelloWorld2',
            component: HelloWorld2
        },
    ]
})

这个新路由包含一个名为 HelloWorld2 的新组件。接下来访问 http://localhost:8080/hello2 就能看到一个新的页面,上面有一个标题 "sunt aut facere repellat provident occaecati excepturi optio reprehenderit",它是从远程服务器获取的数据。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详解从零搭建 vue2 vue-router2 webpack3 工程 - Python技术站

(0)
上一篇 2天前
下一篇 2天前

相关文章

  • 用vue设计一个数据采集器

    用vue设计一个数据采集器的完整攻略: 1. 确定需求: 首先我们要明确数据采集器的需求,主要包括要采集哪些数据、如何展示这些数据、如何进行数据的上传和保存等问题。 2. 设计界面: 接下来,我们需要设计数据采集器的界面,这里建议采用UI框架,如elementUI等,大大加快开发速度。 3. 构建组件: 按照需求和设计的界面,我们可以将整个数据采集器拆分成多…

    Vue 1天前
    00
  • Vue3.0插件执行原理与实战

    下面我将为你详细讲解“Vue3.0插件执行原理与实战”的完整攻略。 前言 在Vue.js 3.0中,插件的执行原理发生了一些变化。在Vue.js 2.0中,插件是通过在Vue构造函数上调用静态方法来注册的。但是在Vue.js 3.0中,插件的注册方式更加灵活,可以通过调用应用程序实例上的方法来注册插件。 本文将详细讲解Vue.js 3.0插件的执行原理,并提…

    Vue 1天前
    00
  • 简易Vue评论框架的实现(父组件的实现)

    下面我来详细讲解一下“简易Vue评论框架的实现(父组件的实现)”: 简述 本文主要介绍如何使用Vue.js实现一个简单的评论框架,涉及组件通信、事件触发等相关知识点。本文将从父组件的实现开始,带你逐步实现一个完整的评论框架。 父组件的实现 创建父组件 首先,我们需要创建一个父组件,用于渲染整个评论区。可以先创建一个Comment.vue文件,并定义一个简单的…

    Vue 2天前
    00
  • vue element-ui里的table中表头与表格出现错位的解决

    问题描述:在使用 vue element-ui 中的 table 组件时,如果表格中的数据太多,在滚动时表头和表格容易出现错位的问题。 解决方法:有两种方法可以解决这个问题: 方法一:通过设置样式来修复 可以通过设置表格容器的样式来解决表头和表格错位的问题。具体步骤如下: 在父容器中设置样式,设置为相对定位(position: relative); 在表格容…

    Vue 1天前
    00
  • vuecli4中如何配置打包使用相对路径

    首先,在 vuecli4 中使用相对路径来打包,需要在 vue.config.js 配置文件中进行相应的设置。可以按如下步骤进行设置: 步骤1:在项目根目录中创建 vue.config.js 文件。 module.exports = { // 其他配置 } 步骤2:在 exports 内添加 baseUrl 属性,并将其设置为相对路径。 module.exp…

    Vue 1天前
    00
  • Vue3 实现验证码倒计时功能

    下面是关于“Vue3 实现验证码倒计时功能”的完整攻略: 1. 创建 Vue3 项目 首先需要创建一个 Vue3 的项目,这里使用 Vue CLI 工具来创建: vue create vue3-captcha 然后使用以下命令启动项目: cd vue3-captcha npm run serve 2. 编写倒计时组件 接下来,我们需要编写一个倒计时组件,用于…

    Vue 1天前
    00
  • 一篇文章带你了解vue.js的事件循环机制

    一篇文章带你了解Vue.js的事件循环机制 Vue.js是一种MVVM模式的前端框架,它依靠响应式系统来追踪数据和DOM的变化,并在必要的时候更新视图。Vue的响应式系统是建立在JavaScript的事件循环机制之上的,了解Vue的事件循环机制对于理解Vue的生命周期和异步行为具有重要意义。 事件循环机制概述 JavaScript是一种单线程(single-…

    Vue 1天前
    00
  • uniapp H5 https跨域请求实现

    前置知识 在开始讲解“uniapp H5 https跨域请求实现”之前,我们需要了解一些基础的知识: HTTP和HTTPS:是基于传输层协议TCP/IP协议族来传递数据的; 跨域:是指在一个网页上加载的资源请求了另外一个域名下的资源(图片、链接、JS、CSS等),浏览器为了安全性会直接拒绝这种行为,因为存在很大的安全隐患; JSONP跨域:是一种脚本注入技术…

    Vue 1天前
    00
  • Vue入口文件index.html缓存的问题及解决

    好的,下面我将详细讲解Vue入口文件index.html缓存的问题及解决。 什么是Vue入口文件index.html缓存的问题 在使用Vue进行开发时,我们通常会在index.html文件中引入Vue相关的JS和CSS文件。然而,当我们在不断地开发和发布过程中,由于浏览器的缓存机制,一些修改后的JS和CSS文件可能无法及时被浏览器正确地更新,导致我们在测试和…

    Vue 13小时前
    00
  • 使用Vue开发一个实时性时间转换指令

    好的,下面是使用Vue开发一个实时性时间转换指令的完整攻略: 1. 确定需求和功能 我们的目标是开发一个指令,可以将输入的时间字符串或时间戳转换为实时性时间。具体实现功能如下: 支持将ISO 8601格式的时间字符串(如”2022-02-01T13:01:23Z”)或时间戳(如1643737283)转换为实时性时间; 实时性时间的格式为”X分钟前”、”X小时…

    Vue 18小时前
    00