(Vue-cli)一、初始Vue-cli(安装&创建组件&父子组件之间传值&安装使用Element-UI&安装使用Echarts)

Vue-cli文档 =>火速一键进入学习

一、初始Vue-cli

1.介绍&安装

Vue-cli就是Vue的开发者工具(脚手架工具)
电脑中打开cmd,首先先检查node及npm是否安装,用node -v 及 npm -v来检测版本号

首先在全局cmd中安装 npm install -g @vue/cli
后使用vue --version来检测版本号是否正确,需4.5.以上的版本。

如何创建项目: 使用vue create +项目名(名称内不能有中文及大写字母)例如vue create demo,选择Default Vue2,即可创建完成。
其中
public是静态目录,
src为代码目录
(其中assets为静态资源目录,一般项目中的样式,字体,图标都放在assets中;components为组件存放的包;App.vue是全局组件;main.js是入口文件,main.js中的#app实例在public的index.html中),
node_modules是项目依赖(包),
babel.config.js是es6转es5的文件,
package.json是包的描述文件。
如何运行网页:首先跳转到根目录,再 npm run serve 指令。

components中每个文件就是一个组件,每个组件由三个部分组成;
xxx.vue是vue的单文件组件,template放置模板内容,script里面放置js代码,style里面放置样式代码。一般习惯组件的首字母大写。


2.创建组件

① 单文件组件
单文件组件:把一个组件全部内容汇合到一个文件中,文件名字是以 .vue 结尾,这个文件就是单文件组件。
xxx.vue是vue的单文件组件。
每个vue的单文件组件由三个部分组成:template里面放置模板内容,script里面放置js代码,style里面放置样式。

<template>
  <div>
  </div>
</template>

<script>
  export default {
    name:'Child'
  }
</script>

<style>
</style>

② 使用组件的步骤
(1)导入组件:

import Child from './components/Child.vue'

(2)注册组件:

export default {
  // name选项定义组件的名称
  name: 'App',
  components:{
    Child
  }
}

③ 使用组件

  <div id="app">
    <Child></Child>
  </div>

3.父子组件之间传值

(1) 子组件

子组件通过props定义属性,接收父组件传过来的数据。

props中定义的属性是只读、不可修改的,不过可以在data中对父组件传递过来的值进行中转,以修改data中的数据。如果属性是一个对象,可以通过 obj.属性名 修改对象的属性值。
子组件通过$emit()触发自定义事件,将最新的数据作为事件对象传回去。

    <div class="child">
        <h3>{{title}}</h3>
        <hr>
        <p>车名:<input type="text" v-model="car.name"></p>
        <p>车价:<input type="text" v-model="car.price"></p>
        <hr>
        <p>飞机名称:<input type="text" v-model="myPlaneName"></p>
        <p>飞机价格:<input type="text" v-model="myPlanePrice"></p>
    </div>
// 每个组件,其实就是一个导出的对象
export default {
    name:'Child',
    props:['car','planeName','planePrice'],
    // 注意:组件里面的data一定要是一个方法,由方法返回一个对象
    data() {
        return {
            title:'我是Child组件',
            // 中转父组件传递过来的值
            myPlaneName : this.planeName,
            myPlanePrice : this.planePrice
        }
    },
    watch:{
        myPlaneName(val){
            this.$emit('updatePName',val)
        },
        myPlanePrice(val){
            this.$emit('updatePPrice',val)
        }
    }
}

(2) 父组件
父组件可以通过绑定属性,将数据传给子组件。
父组件通过绑定自定义事件,更新数据。

  <div id="app">
    <h2>{{title}}</h2>
    <p>汽车信息:{{car}}</p>
    <p>飞机信息:{{planeName}}-{{planePrice}}</p>>
    <Child :car="car" :planeName="planeName" :planePrice="planePrice"
    @updatePName="planeName=$event" @updatePPrice="planePrice=$event"></Child>
  </div>
import Child from './components/Child.vue'
export default {
  // name选项定义组件的名称
  name: 'App',
  // data选项定义组件的数据
  data() {
    return {
      //定义一辆车的信息
      car:{
        name:'奔驰',
        price:'50W'
      },
      //飞机信息
      planeName:'波音747',
      planePrice:'10Y'
    }
  },
  components:{
    Child
  }
}

4.如何在脚手架的环境中,使用第三方组件库 =>>> Element-UI组件库导入并使用

ElementUI用法
(1) 安装 npm i element-ui -S
(2) 在main.js文件中:
导入ElementUI组件库import ElementUI from ' element-ui'
导入ElementUI组件库的样式import 'element-ui/lib/theme-chalk/index.css'
由于ElementUI组件库是插件,所以必须要use一哈 Vue.use(ElementUI)
后续将第三方组件库中的代码及data数据引入componetns文件中

(1) 安装

npm i element-ui -S

(2) 导入

// 导入element-ui组件库
import ElementUI from 'element-ui';
// 导入element-ui组件库的样式
import 'element-ui/lib/theme-chalk/index.css';
// 注意:element-ui组件库,是一个插件,所有的插件都要由Vue去use
Vue.use(ElementUI);

(3) 使用

<template>
  <div class="el">
    <h3>Element-UI组件库</h3>
    <el-pagination background layout="prev, pager, next" :total="1000">
    </el-pagination>
  </div>
</template>

<script>
export default {
  name: "Element"
};
</script>

<style>
.el {
  border: green solid 1px;
  padding: 10px;
  margin-top: 10px;
}
</style>

=>> 一键进入 Element-UI官方


5.如何在vue的工程化的环境中去使用可视化Echarts呢

(1) 在创建的项目demo安装

npm install echarts --save

(2) 在需要使用图表库的组件中导入echarts对象

import * as echarts from 'echarts';

(3) 在需要使用图表库的组件中准备容器

  <div class="charts">
    <h3>在vue项目中使用ECharts</h3>
    <div id="main"></div>
  </div>

(4) 选择示例图

在官网找到想要的示例,下载示例。

(5) 引入 ECharts

基于准备好的dom初始化echarts实例,绘制图表。因为该项目是基于vue,所以需要在mounted生命周期中进行这一步(获取dom,需要在页面挂载完成后进行)。

  • 柱状图实例
    在需要使用ECharts图表库的组件(components下的xxx.vue)中export default对外输出本模块变量
export default {
  name: "Charts",
  data(){
      return {
          list:[
              {
                  title:'衬衫',
                  sale:5,
                  stock:9
              },
              {
                  title:'羊毛衫',
                  sale:20,
                  stock:19
              },
              {
                  title:'雪纺衫',
                  sale:36,
                  stock:55
              },
              {
                  title:'裤子',
                  sale:10,
                  stock:2
              },
              {
                  title:'高跟鞋',
                  sale:10,
                  stock:5
              },
              {
                  title:'袜子',
                  sale:20,
                  stock:35
              },
          ]
      }
  },
  mounted() {
    // 基于准备好的dom,初始化echarts实例
    var myChart = echarts.init(document.getElementById("main"));
    // 绘制图表
    myChart.setOption({
      title: {
        text: "产品销售信息",
        subtext:'2021-12-18'
      },
      legend:{
          
      },
      tooltip: {},
      xAxis: {
          // 获取x轴的数据
        data: this.list.map(r=>r.title)
      },
      yAxis: {},
      // 获取系列数据
      series: [
        // 第一个系列显示销量信息
        {
          name: "销量",
          type: "bar",
          data: this.list.map(r=>r.sale)
        },
        // 第二个系列显示库存信息
         {
          name: "库存",
          type: "bar",
          data: this.list.map(r=>r.stock)
        },
      ],
    });
  },
};
</script>

然后在App.vue中三部曲1.导入组件 2.注册组件3.使用组件

import Charts from './components/Charts.vue'
export default {
  name: 'App',
  data() {
    return {
    }
  },
  components:{
    Charts
  }
}
<div id="app">
    <Charts></Charts>
</div>

彳亍,结束

以下是正经的丁老师的代码了( ̄▽ ̄)~■干杯□~( ̄▽ ̄):通过axios获取后台数据。(注意:axios需要先安装,再导入)

// 导入axios
import axios from "axios";
export default {
  name: "Test",
  data() {
    return {
      // 定义一份数据
      list: [],
    };
  },
  methods: {
    // 加载数据的方法
    async getList() {
      // 向后台发送请求,获取一份数据
      let {data} = await axios.get("data/data2.json");
      this.list = data
      this.showdata()
    },   
    // 渲染数据的方法
    showdata() {
      // 基于准备好的dom,初始化echarts实例
      var myChart = echarts.init(document.getElementById("main"));
      // 绘制图表
      myChart.setOption({
        title: {
          text: "产品销售信息",
          // 副标题
          subtext: "2021-12-08",
        },
        // 图例组件
        legend: {},
        tooltip: {},
        // X轴信息
        xAxis: {
          // 产品名称数据作为X轴信息展示
          data: this.list.map((r) => r.title),
        },
        // Y轴信息
        yAxis: {},
        // 系列
        series: [
          {
            name: "销量",
            type: "bar",
            data: this.list.map((r) => r.xl),
          },
          {
            name: "库存",
            type: "bar",
            data: this.list.map((r) => r.kc),
          },
        ],
      });
    },
  },
  // 页面挂载完成
  mounted() {
    this.getList();
  },
};

数据:

[
    {
        "title": "衬衫",
        "xl": 5,
        "kc": 9
    },
    {
        "title": "羊毛衫",
        "xl": 20,
        "kc": 19
    },
    {
        "title": "雪纺衫",
        "xl": 36,
        "kc": 55
    },
    {
        "title": "裤子",
        "xl": 10,
        "kc": 2
    },
    {
        "title": "高跟鞋",
        "xl": 10,
        "kc": 5
    },
    {
        "title": "袜子",
        "xl": 20,
        "kc": 35
    }
]

ps:
export主要用于对外输出本模块变量的接口,一个文件就可以被理解为一个模块。export就是导出。
import就是在一个模块中加载另一个含有export接口的模块, import就是导入。
export default和export都能导出一个模块里面的常量,函数,文件,模块等,在其它文件或模块中通过import来导入常量,函数,文件或模块。这样就可以使用它们了。但是,在一个文件或模块中,export,import可以有多个,export default却只能有一个。
通过export方式导出,在导入的时候需要加{}大括号,export default 就不需要{}
原文链接


ps:可以在pachage.json 里off 掉半吊子提示(改了之后必须CTRL+C退出终端,重新npm run serve

Echarts是一个基于 JavaScript 的开源可视化图表库。
=>> 一键进入 Echarts官方
=>> 文档-查看API手册....去旧版本

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

推荐阅读更多精彩内容