vue新手入门实践教程

news2024/11/27 2:21:00

介绍vue运行环境的搭建、vue项目的初步构建与运行、使用element-ui组件构建页面内容、使用页面模块与路由设置等。基于此教程,可以初步实现一个静态网页,并对vue项目由一定理解。

1、基本环境安装

vue项目的编译运行依赖nodejs环境,故需要下载安装。地址:https://nodejs.org/zh-cn
下载时选18.16稳定版,安装时一直使用默认选项即可,安装完后重启一下电脑(怕环境变量设置没有生效)。
在这里插入图片描述

1.1 npm设置

验证vue运行环境,同时按win+r,输入cmd,打开终端,然后输入npm -v,输出版本号即表示vue运行环境安装成功了。npm命令可以用于安装各种vue工具,类似于python的pip。

C:\Users\Administrator>npm -v
9.5.1

设置淘宝源

使用npm安装包时,通常到国外下载,国内用户可以设置淘宝源

npm config set registry https://registry.npm.taobao.org/

npm命令简介

npm install <Module Name> #使用npm安装包,默认为本地安装
npm install <Module Name> -g   # 使用npm安装包,全局安装
npm uninstall <Module Name> # 使用npm卸载已经安装的包
npm list -g # 查看所有安装的包
npm --registry https://registry.npm.taobao.org install express #指定安装时从淘宝下载包(单个包安装,express 为某个具体包名)

1.2 安装vue

npm install vue
npm install --global vue-cli

1.3 安装vscode

访问 https://code.visualstudio.com/,下载并安装vscode即可

2、构建基本项目

2.1 构建项目

逐行执行代码即可启动默认的模板项目

# 创建一个基于 webpack 模板的新项目
vue init webpack my-project  #该命令会输出很多选项,一直按回车,使用没人配置即可
cd my-project
npm run dev

启动后输出如下,在浏览器输入http://localhost:8080即可

C:\Users\Administrator\my-project>npm run dev

> my-project@1.0.0 dev
> webpack-dev-server --inline --progress --config build/webpack.dev.conf.js

(node:1484) [DEP0111] DeprecationWarning: Access to process.binding('http_parser') is deprecated.
(Use `node --trace-deprecation ...` to show where the warning was created)
 12% building modules 24/27 modules 3 active ...\Administrator\my-project\src\App.vue{ parser: "babylon" } is deprecated; we now treat it as { parser: "babel" }.
 95% emitting

 DONE  Compiled successfully in 2099ms                                                                          20:00:04

 I  Your application is running here: http://localhost:8080

打开后的页面效果如下所示
在这里插入图片描述

2.2 项目查看

使用vscode打开目录 C:\Users\Administrator\my-project,并安装vue项目插件
在这里插入图片描述
项目结构如下其中node_modules是本项目所依赖的包的存储路径,package.json记录了这些包的属性信息。App.vue与main.js设置了整个项目的入口(这两个文件通常是不用修改的)
在这里插入图片描述
只需要将App.vue的内容保持为以下即可,即为所有的页面都设置一个通用的router-view组件,可以看到该页面的内容与我们在网站首页看到的不一样,这是因为vue的路由设置,其为router-view组件设置了内容模板。

<template>
  <div id="app">
    <!--img src="./assets/logo.png"-->
    <router-view/>
  </div>
</template>

router/index.js是用于设置vue的路由信息的,其默认内容如下,可见其为’/'路径设置的组件为HelloWorld,故我们在访问网站根目录时看到的内容就是HelloWorld.vue里面的。注:这里import包时,如果时自己写的(在src目录下),则起始符号为'@/',否则vue会到node_modules目录下查找组件

import Vue from 'vue'
import Router from 'vue-router'
import HelloWorld from '@/components/HelloWorld'

Vue.use(Router)

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

components目录下(可以自己设置目录的名称)存放着自定义的页面组件,如HelloWorld.vue,其内容比较长,下面进行了删减。可以看到一个vue页面组件由template、script和style 三大部分构成,template用于设置页面的结构元素(位置排列),script用于设置页面的数据和执行逻辑代码,style 用于设置页面的样式细节。vue项目的模板语法请参考:https://www.runoob.com/vue2/vue-template-syntax.html

这里需要注意的是export default { name: 'HelloWorld',},这里设置的name,是用于其他页面或代码import的

<template>
  <div class="hello">
    <h1>{{ msg }}</h1>
    <h2>Essential Links</h2>
  </div>
</template>

<script>
export default {
  name: 'HelloWorld',
  data () {
    return {
      msg: 'Welcome to Your Vue.js App'
    }
  }
}
</script>

<!-- Add "scoped" attribute to limit CSS to this component only -->
<style scoped>
h1, h2 {
  font-weight: normal;
}
</style>

2.3 项目设置

在config/index.js中可以设置vue项目的一些基本属性,如运行时的dev设置host、port等,导出时的build设置index、assetsRoot等

'use strict'
// Template version: 1.3.1
// see http://vuejs-templates.github.io/webpack for documentation.

const path = require('path')

module.exports = {
  dev: {

    // Paths
    assetsSubDirectory: 'static',
    assetsPublicPath: '/',
    proxyTable: {},

    // Various Dev Server settings
    host: 'localhost', // can be overwritten by process.env.HOST
    port: 8080, // can be overwritten by process.env.PORT, if port is in use, a free one will be determined
    autoOpenBrowser: false,
    errorOverlay: true,
    notifyOnErrors: true,
    poll: false, // https://webpack.js.org/configuration/dev-server/#devserver-watchoptions-

    // Use Eslint Loader?
    // If true, your code will be linted during bundling and
    // linting errors and warnings will be shown in the console.
    useEslint: false,
    // If true, eslint errors and warnings will also be shown in the error overlay
    // in the browser.
    showEslintErrorsInOverlay: false,

    /**
     * Source Maps
     */

    // https://webpack.js.org/configuration/devtool/#development
    devtool: 'cheap-module-eval-source-map',

    // If you have problems debugging vue-files in devtools,
    // set this to false - it *may* help
    // https://vue-loader.vuejs.org/en/options.html#cachebusting
    cacheBusting: true,

    cssSourceMap: true
  },

  build: {
    // Template for index.html
    index: path.resolve(__dirname, '../dist/index.html'),

    // Paths
    assetsRoot: path.resolve(__dirname, '../dist'),
    assetsSubDirectory: 'static',
    assetsPublicPath: '/',

    /**
     * Source Maps
     */

    productionSourceMap: true,
    // https://webpack.js.org/configuration/devtool/#production
    devtool: '#source-map',

    // Gzip off by default as many popular static hosts such as
    // Surge or Netlify already gzip all static assets for you.
    // Before setting to `true`, make sure to:
    // npm install --save-dev compression-webpack-plugin
    productionGzip: false,
    productionGzipExtensions: ['js', 'css'],

    // Run the build command with an extra argument to
    // View the bundle analyzer report after build finishes:
    // `npm run build --report`
    // Set to `true` or `false` to always turn it on or off
    bundleAnalyzerReport: process.env.npm_config_report
  }
}

3、使用element-ui构建页面

3.1 安装element-ui

在vscode中打卡终端
在这里插入图片描述
然后输入以下命令安装element-ui 库

npm install element-ui -S

3.2 引入 Element

内容参考自https://element.faas.ele.me/#/zh-CN/component/quickstart

在main.js进行以下修改,即可实现对Element的全局引入

import Vue from 'vue'
import App from './App'
import router from './router'
import ElementUI from 'element-ui';  //-----add-----
import 'element-ui/lib/theme-chalk/index.css';//-----add-----

Vue.use(ElementUI);  //-----add-----
Vue.config.productionTip = false

/* eslint-disable no-new */
new Vue({
  el: '#app',
  router,
  components: { App },
  template: '<App/>',
  render: h => h(App) //-----add-----
})

当运行vue的终端报错提示以下信息时,可将其关闭

 ✘  http://eslint.org/docs/rules/no-trailing-spaces  Trailing spaces not allowed
  src\components\HelloWorld.vue:35:1

然后打开config/index.js,找到useEslint,将其设置为false,然后在执行npm run dev 重新启动vue服务。

3.3 使用Element页面组件

打开HelloWorld.vue,用以下内容进行替换

<template>
  <el-container>
    <el-header>Header</el-header>
    <el-container>
      <el-aside width="200px">Aside</el-aside>
      <el-container>
        <el-main>Main</el-main>
      </el-container>
    </el-container>
      <el-container>
        <el-footer>Footer</el-footer>
    </el-container>
  </el-container>
</template>

<script>
export default {
  name: 'HelloWorld',
  data () {
    return {
      msg: 'Welcome to Your Vue.js App'
    }
  }
}
</script>

<!-- Add "scoped" attribute to limit CSS to this component only -->
<style scoped>
 .el-header, .el-footer {
    background-color: #B3C0D1;
    color: #333;
    text-align: center;
    line-height: 60px;
  }
  
  .el-aside {
    background-color: #D3DCE6;
    color: #333;
    text-align: center;
    line-height: 200px;
  }
  
  .el-main {
    background-color: #E9EEF3;
    color: #333;
    text-align: center;
    line-height: 300px;
  }
  
  body > .el-container {
    margin-bottom: 40px;
  }
  
</style>

打开浏览器可以看到以下内容,这就是elementui中容器布局
在这里插入图片描述
elementui所提供的页面组件是极其丰富的,具体可以查看https://element.faas.ele.me/#/zh-CN/component/

4、页面模板与路由

4.1 页面创建

在components目录下创建Login.vue,内容如下。该页面不使用页面模板


<template>
    <el-form :model="ruleForm" status-icon :rules="rules" ref="ruleForm" label-width="100px" class="demo-ruleForm">
    <el-form-item label="用户名" >
      <el-input type="text" v-model="ruleForm.name"></el-input>
    </el-form-item>
    <el-form-item label="密码" prop="pass">
      <el-input type="password" v-model="ruleForm.pass" autocomplete="off"></el-input>
    </el-form-item>
    <el-form-item>
      <el-button type="primary" @click="submitForm('ruleForm')">登录</el-button>
      <el-button @click="resetForm('ruleForm')">重置</el-button>
    </el-form-item>
  </el-form>

</template>
  <script>
    export default {
    name: 'login',
      data() {
        var validatePass = (rule, value, callback) => {
          if (value === '') {
            callback(new Error('请输入密码'));
          } else {
            if (this.ruleForm.checkPass !== '') {
              this.$refs.ruleForm.validateField('checkPass');
            }
            callback();
          }
        };
        return {
          ruleForm: {
            checkPass: '',
          },
          rules: {
            pass: [
              { validator: validatePass, trigger: 'blur' }
            ]
          }
        };
      },
      methods: {
        submitForm(formName) {
          this.$refs[formName].validate((valid) => {
            if (valid) {
              //进入后台主页
              this.$router.push({name:'main'});
            } else {
              console.log('error submit!!');
              return false;
            }
          });
        },
        resetForm(formName) {
          this.$refs[formName].resetFields();
        }
      }
    }
  </script>

在components目录下创建main.vue,内容如下。该页面作为页面模板,由其中的设置子页面的位置,并定义了to_url函数绑定特定按钮的点击事件。

<template>
  <el-container>
    <el-header>Header</el-header>
    <el-container>
      <el-aside width="200px">
        <el-aside width="200px" style="background-color: rgb(238, 241, 246)">
    <el-menu :default-openeds="['1']">
      <el-submenu index="1">
        <template slot="title"><i class="el-icon-message"></i>可用导航</template>
        <el-menu-item-group >
          <el-menu-item index="1-1" v-on:click="to_url('showimg')">显示图片(默认页面)</el-menu-item>
          <el-menu-item index="1-2" v-on:click="to_url('showtable')">显示表格</el-menu-item>
          <el-menu-item index="1-2" v-on:click="to_url('login')">退出</el-menu-item>
        </el-menu-item-group>
      </el-submenu>

      <el-submenu index="2">
        <template slot="title"><i class="el-icon-menu"></i>导航二</template>
        <el-menu-item-group>
          <template slot="title">分组一</template>
          <el-menu-item index="2-1">选项1</el-menu-item>
          <el-menu-item index="2-2">选项2</el-menu-item>
        </el-menu-item-group>
        <el-menu-item-group title="分组2">
          <el-menu-item index="2-3">选项3</el-menu-item>
        </el-menu-item-group>
        <el-submenu index="2-4">
          <template slot="title">选项4</template>
          <el-menu-item index="2-4-1">选项4-1</el-menu-item>
        </el-submenu>
      </el-submenu>
    </el-menu>
  </el-aside>

      </el-aside>
      <el-container>
        <el-main>
          <router-view/>
        </el-main>
      </el-container>
    </el-container>
      <el-container>
        <el-footer>Footer</el-footer>
    </el-container>
  </el-container>
</template>

<script>
export default {
  name: 'main',
  data () {
    return {
      msg: 'Welcome to Your Vue.js App'
    }
  },
  methods: {
    to_url: function (url) {
      this.$router.push({name:url});
    }
  }
}
</script>

<!-- Add "scoped" attribute to limit CSS to this component only -->
<style scoped>
 .el-header, .el-footer {
    background-color: #B3C0D1;
    color: #333;
    text-align: center;
    line-height: 60px;
  }
  
  .el-aside {
    background-color: #D3DCE6;
    color: #333;
    text-align: center;
    line-height: 200px;
  }
  
  .el-main {
    background-color: #E9EEF3;
    color: #333;
    text-align: center;
    line-height: 300px;
  }
  
  body > .el-container {
    margin-bottom: 40px;
  }
  
</style>

在components目录下创建showimg.vue,内容如下。该页面使用mian.vue作为页面模板

<template>
    <div class="demo-image">
    <div class="block" v-for="fit in fits" :key="fit">
        <span class="demonstration">{{ fit }}</span>
        <el-image
        style="width: 100px; height: 100px"
        :src="url"
        :fit="fit"></el-image>
    </div>
    </div>
  </template>
  
  <script>
  export default {
    name: 'showimg',
    data() {
      return {
        fits: ['fill', 'contain', 'cover', 'none', 'scale-down'],
        url: 'https://fuss10.elemecdn.com/e/5d/4a731a90594a4af544c0c25941171jpeg.jpeg'
      }
    }
  }
  </script>
  
  <!-- Add "scoped" attribute to limit CSS to this component only -->
  <style scoped>
  .block{
    width:200px;
    float: left;

  }
  </style>

在components目录下创建showtable.vue,内容如下。该页面使用mian.vue作为页面模板

<template>
    <el-table
      :data="tableData"
      style="width: 100%">
      <el-table-column
        prop="date"
        label="日期"
        width="180">
      </el-table-column>
      <el-table-column
        prop="name"
        label="姓名"
        width="180">
      </el-table-column>
      <el-table-column
        prop="address"
        label="地址">
      </el-table-column>
    </el-table>
  </template>

  <script>
    export default {
    name: 'showtable',
      data() {
        return {
          tableData: [{
            date: '2016-05-02',
            name: '王小虎',
            address: '上海市普陀区金沙江路 1518 弄'
          }, {
            date: '2016-05-04',
            name: '王小虎',
            address: '上海市普陀区金沙江路 1517 弄'
          }, {
            date: '2016-05-01',
            name: '王小虎',
            address: '上海市普陀区金沙江路 1519 弄'
          }, {
            date: '2016-05-03',
            name: '王小虎',
            address: '上海市普陀区金沙江路 1516 弄'
          }]
        }
      }
    }
  </script>

最终目录效果如下
在这里插入图片描述

4.2 路由设置

打开router/index.js,填入以下内容,设置各个组件之间的属性和关系。path用于设置组件对应的url地址,name用于设置组件的名称用于this.$router.push({name:'<name>'});,component用于设置具体的组件。children用于设置组件的子模块内容,其子模块显示位置由当前模块内所决定。

import Vue from 'vue'
import Router from 'vue-router'
import main from '@/components/main'
import showimg from '@/components/showimg'
import showtable from '@/components/showtable'
import login from '@/components/Login'

Vue.use(Router)

export default new Router({
  routes: [
    {
      path: '/',
      name: 'login',
      component: login
    },
    {
      path: '/main',
      name: 'main',
      component: main,
      //redirect:showimg,  //默认打开showimg组件
      children:[
				{
					path:"/showimg",
          name: 'showimg',
					component:showimg
				},
				{
					path:"/showtable",
          name: 'showtable',
					component:showtable
				}
			]
    }
  ]
})

在这里的代码设置中,main组件为后台模块页面,showimg组件和showtable组件为套用后台模块的子页面。

4.3 页面效果

http://localhost:8080/#/
在这里插入图片描述
http://localhost:8080/#/main
在这里插入图片描述
http://localhost:8080/#/showimg
在这里插入图片描述
http://localhost:8080/#/showtable
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/651114.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

使用rasterio计算tif文件中两点之间的物理实际距离

假设有一张含有地理坐标信息的tif格式的图片及其对应的jpg或者png格式的普通图片 如下图所示&#xff1a; 其中第一张为tif格式的地理信息图&#xff0c;第二张为按照一定比例下采样之后转换得到的普通jpg图片 如何计算jpg图片中任意两点之间的实际距离呢&#xff1f; 比如&a…

终于等到你:期待已久的CAD .NET 15 Crack

期待已久的CAD .NET 15 现已推出&#xff01;新包包括一个.NET 6 框架构建。目前&#xff0c;它仅与 Windows 兼容&#xff0c;但我们计划在未来的版本中添加对 Linux 的支持。 我们还进行了一系列更改以增强库的稳定性并改进其导入和导出功能。他们来了&#xff1a; 改进了 DW…

Scala--03

第6章 面向对象 Scala 的面向对象思想和Java 的面向对象思想和概念是一致的。 Scala 中语法和 Java 不同&#xff0c;补充了更多的功能。 6.1类和对象详解 6.1.1组成结构 构造函数: 在创建对象的时候给属性赋值 成员变量: 成员方法(函数) 局部变量 代码块 6.1.2构造器…

详解c++---map的介绍

目录标题 map容器的介绍pair的介绍map的构造函数insert函数make_pair函数find函数map的[ ]重载multimap map容器的介绍 通过之前的学习想必大家对set容器的理解应该非常的深刻了&#xff0c;我们知道他的底层是一个k结构的搜索二叉树&#xff0c;可以对数据进行去重并排序&…

Redis实现分布式锁详解

Redis实现分布式锁详解 一 分布式锁简介二 Redis实现分布式锁核心思路三 Redis实现分布式锁实践3.1 锁的基本接口3.2 加锁解锁逻辑3.3 修改业务逻辑3.4 单元测试观察结果 四 Redis分布式锁误删情况4.1.Redis分布式锁误删情况逻辑说明&#xff1a;4.2 解决Redis分布式锁误删问题…

当心健身跑步应用悄悄泄露用户住址

据BleepingComputer 6月11日消息&#xff0c;美国北卡罗来纳州立大学罗利分校的研究人员发现 Strava 应用程序的热图功能存在隐私风险&#xff0c;可能导致攻击者识别出用户的家庭住址。 Strava 是一款流行的跑步伴侣和健身追踪应用程序&#xff0c;在全球拥有超过 1 亿用户&a…

2个月“我“从功能测试进阶到自动化测试,offer收到麻了...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 自动化测试是将人…

C++【STL】之vector模拟实现

C vector类模拟实现 上一篇讲解了vector的使用&#xff0c;这一篇接着介绍vector的模拟实现&#xff0c;这里依然是讲解常用接口的模拟实现&#xff0c;话不多说&#xff0c;正文开始&#xff01; 文章目录&#xff1a; C vector类模拟实现1. 成员变量2. 默认成员函数2.1 构造…

使用lcov生成覆盖率报告

使用lcov生成覆盖率报告 1- 需要准备的东西1.1 工具lcov1.2 需要用到中间脚本 gcno gcda1.3 源文件 2- 生成覆盖率报告2.1 step1: 编译阶段2.2 step2: 数据收集与提取阶段2.3 step3: 报告形成阶段2.4 step4: lcov生成覆盖率报告结果info文件2.5 step5: genhtml 命令生成网页版的…

给定一个字符串比如“abcdef”,要求写个函数变成“defabc”,位数是可变的。

首先可以使用字符串切片的方法来实现这个需求。 具体做法是&#xff1a;① 定义一个整数变量 n 表示要切割的位置&#xff0c;本实例中为 3 。 ② 将字符串按照 n 分割成两个字串&#xff0c;即 “abc” 和 “def”。 ③ 将两个字符串颠倒顺序&#xff0c;即 “cba” 和 “fed…

数据结构 栈和队列

栈和队列基本概念 栈&#xff08;Stack&#xff09;和队列&#xff08;Queue&#xff09;都是常见的数据结构&#xff0c;用于存储和操作一组元素。它们在结构和操作方式上有所不同。 栈的基本概念&#xff1a; 栈是一种线性数据结构&#xff0c;具有后进先出&#xff08;L…

CentOS GCC 离线升级 编译安装 8.3.0

从系统自带的 gcc-4.8.5 版本升级至 gcc-8.3.0 版本 目录 下载源代码&#xff1a; 下载依赖&#xff1a; 编译&#xff08;约一个小时&#xff09; 重开控制台确认是否生效 下载源代码&#xff1a; https://ftp.gnu.org/gnu/gcc/gcc-8.3.0/gcc-8.3.0.tar.gzhttps://ftp.gn…

Nacos和Feign

Nacos配置管理 统一配置管理实现 1.引入Nacos的配置管理客户端依赖 <!--nacos的配置管理依赖--><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId></dependency…

国产开源中文大语言模型再添重磅玩家:清华大学NLP实验室发布100亿参数规模的开源可商用大语言模型CPM-Bee

5月27日&#xff0c;OpenBMB发布了一个最高有100亿参数规模的开源大语言模型CPM-BEE&#xff0c;OpenBMB是清华大学NLP实验室联合智源研究院成立的一个开源组织。该模型针对高质量中文数据集做了训练优化&#xff0c;支持中英文。根据官方的测试结果&#xff0c;其英文测试水平…

Python零基础入门(二)——IDE介绍以及Python+PyCharm的安装

系列文章目录 个人简介&#xff1a;机电专业在读研究生&#xff0c;CSDN内容合伙人&#xff0c;博主个人首页 Python入门专栏&#xff1a;《Python入门》欢迎阅读&#xff0c;一起进步&#xff01;&#x1f31f;&#x1f31f;&#x1f31f; 码字不易&#xff0c;如果觉得文章不…

docker容器介绍及安装

Docker介绍 Docker 起源于2013年。 Docker 是一个开源的应用容器引擎&#xff0c;基于 Go语言开发&#xff0c;Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中&#xff0c;然后发布到任何流行的系统。 优点&#xff1a; 可以用来快速交付应用。加…

SQL 的window开窗函数简单使用

背景&#xff1a; 开窗函数不论是spark的还是clickhouse的在日常的查询中是一个很常用的功能&#xff0c;特别是他想要解决的问题和group by的很类似&#xff0c;这两种容易引起混淆&#xff0c;本文就简单的描述下开窗函数的简单用法 使用详解 首先窗口函数和group by是完全…

caj文件在线转换成pdf方法,看这个就会了!

当需要将Caj文件转换为PDF格式时&#xff0c;有多种方法可供选择。本文将介绍三种常用的方法&#xff0c;以帮助您完成这个任务。 第一种方法&#xff1a;使用记灵在线工具 一种常用的方法是利用记灵在线工具&#xff0c;它是一款提供免费文件转换服务的在线工具。以下是使用…

消息队列RabbitMQ

1. 消息队列 RabbitMQ 消息队列是一种在应用程序之间发送和接收消息的方法&#xff0c;可以实现异步通信、解耦应用、提高系统性能等效果。RabbitMQ 是一款常用的开源消息中间件&#xff0c;它实现了 AMQP 协议规范&#xff0c;并提供了可靠性、灵活性、易用性等优秀特性。本文…

DBSyncer安装_配置postgresql和mysql_sqlserver_oracel全量增量同步---数据全量增量同步之DBSyncer001

国内做开源的大神做的,用了一下还可以,就是不能和Phoenix这种操作hbase等数据库一起用, https://gitee.com/ghi/dbsyncer#postgresql 这个是官网,下载安装非常简单,官网也有中文详细说明. 直接下载安装包: 然后解压到某个地方,主要要用unzip dbsyncer.zip -d /opt/module这样…