• Vue之组件化开发(一)


    5 Vue之组件化开发

    5.1 组件【component】

    什么是组件?

    """
    组件【component】就是自定义封装代码的功能。在前端开发的过程中,经常出现多个网页就是重复的,而且许多不同页面之间,也存在同样的功能。比如说,导航条。
    
    为了在网页中实现这一功能,就需要使用html定义功能的内容结构,使用CSS声明功能的外观样式,使用js来定义功能的特效。
    
    因此,就产生了一种把一个功能相关的【html、css和js】代码封装在一起组成一个整体的代码块封装模式,我们把它称之为“组件”。
    """
    

    在Vue中的组件有两种,默认组件(全局组件)和单文件组件。

    5.1.1 默认组件

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta http-equiv="content-type" charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title>默认组件的使用</title>
        <script src="vue.min.js"></script>
    </head>
    <body>
    <div id="app">
        <calculate></calculate>
    </div>
    <script>
        Vue.component("calculate", {
            template: `<div>
                        <button @click="sub">-</button>
                        <input type="text" v-model="num" />
                        <button @click="add">+</button>
                      </div>`,
            data: function () {
                return { //写到这里的数据,只有当前的组件可以取使用
                    num: 0,
                }
            },
            methods: { //组件里面的方法
                sub() {
                    this.num--;
                },
                add() {
                    this.num++;
                },
            },
            watch: { // 监控num
                num() {
                    if (this.num < 1) {
                        this.num = 0
                    }
                }
            }
        });
        var vm = new Vue({
            el: '#app',
            data: {},
        })
    </script>
    </body>
    </html>
    

    5.2 Vue自动化工具的安装

    5.2.1 什么是Vue-cli

    """
    vue脚手架指的是vue-cli,它是一个专门为单页面应用快速搭建繁杂的脚手架,它可以轻松的创建新的应用程序而且可用于自动生成vue和webpack的项目模板。
    """
    

    一般情况下,单文件组件,我们运行在 自动化工具vue-CLI中,可以帮我们把单文件组件编译成普通的js代码。所以我们需要在电脑先安装搭建vue-CLI工具。

    官网:https://cli.vuejs.org/zh/

    Vue Cli 需要node.js8.9或者更高的版本(推荐 8.11.0+)。那么如果我们在同一台机器上安装了多个版本,如何来管理它们了。

    这时候,我们可以用nvmnvm_windows 在同一台电脑上管理不同的Node版本。nvm工具的下载安装

    curl -o- https://github.com/nvm-sh/nvm/v0.35.3/install.sh | bash
    

    安装记录:

    打开:https://github.com/coreybutler/nvm-windows/releases

    安装完成以后,先查看环境变量是否设置好了.

    常用的nvm命令

    nvm list                     # 列出目前在nvm里面安装的所有node版本
    nvm install node版本号         # 安装指定版本的node.js
    nvm uninstall node版本号       # 卸载指定版本的node.js
    nvm use node版本号             # 切换当前使用的node.js版本	
    

    如果使用nvm工具,则直接可以不用自己手动下载,如果使用nvm下载安装 node的npm比较慢的时候,可以修改nvm的配置文件(在安装根目录下)

    # settings.txt
    root: C:	ool
    vm    [这里的目录地址是安装nvm时自己设置的地址,要根据实际修改]
    path: C:	ool
    odejs
    arch: 64
    proxy: none
    node_mirror: http://npm.taobao.org/mirrors/node/ 
    npm_mirror: https://npm.taobao.org/mirrors/npm/
    

    5.2.2 安装Node.js

    Node.js是一个新的后端语言,它的语法与javascript相似,可以说它是属于前端的后端语言。后端语言与前端语言的区别:

    # 在运行环境上
    后端语言一般运行在服务端,而前端语言运行在客户端的浏览器上
    # 在功能上
    后端语言可以操作文件,修改数据库,而前端语言不可以。
    

    我们一般会安装长线支持版本(Long-Time Support, LTS),下载地址:https://nodejs.org/en/download/。

    Node的版本有两大分支,官方发布和社区发布的版本。

    0.xx.xx 这种版本号就是官方发布的版本,xx.xx.x 就是社区开发的版本。

    当Node.js安装完毕后,可以在终端输入以下命令,检测是否安装成功:

    C:UsersAdministrator>node -v
    v12.18.1
    

    5.2.3 npm

    在安装node.js完成后,在node.js中会同时帮我们安装一个npm包管理器npm。我们可以借助npm命令来安装node.js的包。这个工具相当于python的pip管理器。

    npm install -g 包名         # 安装模块   -g表示全局安装,如果没有-g,则表示在当前项目安装
    npm list                    # 查看当前目录下已安装的node包
    npm view 包名 engines       # 查看包所依赖的Node的版本 
    npm outdated                # 检查包是否已经过时,命令会列出所有已过时的包
    npm update 包名             # 更新node包
    npm uninstall 包名          # 卸载node包
    npm 命令 -h                 # 查看指定命令的帮助文档
    

    5.2.4 安装Vue cli

    npm install -g vue-cli
    
    # 如果安装速度过慢,一直超时,可以考虑切换npm镜像源:http://npm.taobao.org/
    

    5.2.5 使用Vue-CLI初始化创建前端项目

    • 生成项目目录

    cd 到要创建项目的目录

    vue init webpack vuedemo  # vuedemo指的项目名
    
    

    • 启动开发服务器

    终端启动开发服务器

    cd vuedemo # cd到项目的目录下
    
    npm run dev # 运行这个命令就可以启动node提供的测试http服务器
    

    pycharm启动开发服务器

    • 打开相应的项目文件

    • 设置Configurations

    5.2.6 项目的目录结构

    src          #主开发目录,要开发的单文件组件全部在这个目录下的components目录下
    
    static      #静态资源目录,所有的css,js,图片等资源文件放在这个文件夹
    
    dist         #项目打包发布文件夹,最后要上线单文件项目文件都在这个文件夹中[后面打包项目,让项目中的vue组件经过编译变成js 代码以后,dist就出现了]
    
    node_modules #目录是node的依赖包目录
    
    config       #是配置目录,
    
    build        #是项目打包时依赖的目录
    
    src/router   #路由,后面需要我们在使用Router路由的时候,自己声明.
    

    5.2.7 Vue项目的运行流程图

    6 单文件组件的要求

    组件有两种:普通组件和单文件组件

    普通组件的缺点:

    1. html代码是作为js的字符串进行编写,所以组装和开发的时候不易理解,而且没有高亮效果。
    2. 普通组件用在小项目中非常合适,但是复杂的大项目中,如果把更多的组件放在html文件中,那么维护成本就会变得非常昂贵。
    3. 普通组件只是整合了js和html,但是css代码被剥离出去了。使用的时候的时候不好处理。
    

    将一个组件相关的html结构,css样式,以及交互的JavaScript代码从html文件中剥离出来,合成一个文件,这种文件就是单文件组件,相当于一个组件具有了结构、表现和行为的完整功能,方便组件之间随意组合以及组件的重用,这种文件的扩展名为“.vue”,比如:"Home.vue"。

    6.1 创建组件文件

    6.1 template编写html代码的地方

    <template>
        <div id="Home">
          <button @click="sub">-</button>
          <input type="text" v-model="num" />
          <button @click="add">+</button>
        </div>
    </template>
    

    6.2 script编写Vue.js代码

    <script>
      export default {
        name: "Home",
        data: function () { //单文件组件里面的数据
          return {
            num: 0,
          }
        },
        methods: { //单文件组件里面的方法
          sub() {
            this.num--;
          },
          add() {
            this.num++;
          },
        },
        watch: { //监控num属性的值
          num() {
            if (this.num < 1) {
              this.num = 0;
            }
          }
        }
      }
    </script>
    

    6.3 style 编写当前组件的代码

    <style scoped>
      .sub,.add{
        border: 1px solid red;
        padding: 4px 7px;
      }
    </style>
    

    6.4 案例--加减数字

    Home.vue

    <template>
     <div id="Home">
       <button @click="sub">-</button>
       <input type="text" v-model="num"/>
       <button @click="add">+</button>
     </div>
    </template>
    
    <script>
     export default {  //export 将文件暴露给外界
       name: "Home",
       data: function () {
         return {
           num: 0,
         }
       },
       methods: {
         sub() {
           this.num--;
         },
         add() {
           this.num++;
         },
       },
       watch: {
         num() {
           if (this.num < 1) {
             this.num = 0;
           }
         }
       }
     }
    </script>
    
    <style scoped> //组件的样式
     .sub, .add {
       border: 1px solid red;
       padding: 4px 7px;
     }
    </style>
    
    

    APP.vue

    <template>
      <div id="app">
        <calculate></calculate>
      </div>
    </template>
    
    <script>
      import calculate from "./components/Home"
    
      export default {
        name: 'App',
        components: {
          calculate
        }
      }
    </script>
    
    <style>
    
    </style>
    
    

    运行效果:

    6.5 组件的嵌套

    有时候开发vue项目时,页面也可以算是一个大组件,同时页面也可以分成多个子组件。因为,产生了父组件调用子组件的情况。例如,我们可以声明一个组件,作为父组件。在components/创建一个保存子组件的目录HomeSon。

    在HomeSon目录下,可以创建当前页面的子组件,例如,是Menu.vue

    //  组件中代码必须写在同一个标签中
    <template>
        <div id="menu">
          <span>{{msg}}</span>
          <div>hello</div>
      </div>
    </template>
    
    <script>
      export default {
        name:"Menu",
        data: function(){
          return {
            msg:"这是Menu组件里面的菜单",
          }
        }
      }
    </script>
    
    

    然后,在父组件中调用上面声明的子组件。

    最后,父组件被App.vue调用.就可以看到页面效果。

    效果:

  • 相关阅读:
    HDU 3999 The order of a Tree (排序二叉树的先序遍历)
    如何从 100 亿 URL 中找出相同的 URL?
    Tomcat源码分析 | 一文详解生命周期机制Lifecycle
    SqlSession与SqlSessionFactory到底是什么关系?
    spring boot-jpa整合QueryDSL来简化复杂操作
    EasyExcel读写Excel
    如何将List集合中相同属性的对象合并
    @Data 注解引出的 lombok
    MySQL配置连接
    Django创建
  • 原文地址:https://www.cnblogs.com/surpass123/p/13164115.html
Copyright © 2020-2023  润新知