Vue.js组件开发从0到1

美团外卖平台vue.js实战项目(完整) vue.js实战项目:美团外卖平台 第1章 课程简介 1-1 课程简介 1-2 课程安排 第2章 Vue.js介绍 2-1 Vuejs介绍-近年来前端开发趋势 2-2 Vuejs介绍-MVVM框架 2-3 Vuejs介绍-什么是Vuejs及Vuejs生态 2-4 Vuejs介绍-对比Angular、React 2-5 Vuejs介绍-Vuejs核心思想 第3章 Vue-... 阅读详情

前言

Vue.js凭借简洁高效易用的特点迅速被前端开源社区接受,并借助weex覆盖移动开发场景,逐步演变成一个完整的生态圈,未来充满想象。而组件化的出现是为了确保代码高内聚低耦合并实现高效复用,从而提升开发效率和降低维护成本。Vue.js提供了组件化解决方案,本篇文章将结合开发实践先从零开始探讨组件的意义以及设计组件需要考虑的问题,再向前迈一步,讲解Vue.js组件的各种开发方式及对比。

0

从零开始,我们为什么需要组件?

换句话说,组件解决了什么问题?回想我们刚接触web开发时,通过<link>标签引入css,通过<script>标签引入js就能轻松实现简单的静态页面,而随着用户需求的逐步提高,web项目在开发人员规模和代码量两个维度上会越来越庞大,自然会产生以下问题:

  1. 代码耦合(不同人写的代码相互影响,css覆盖,js变量作用域引起的覆盖等)
  2. 代码冗余(项目里面有大量为快速实现需求而拷贝的重复代码)

为了解决这些问题,需要做到 ①限制作用域 ②抽离公共代码,这不正是组件在做的事情嘛,因此我们可以认为组件化是软件工程变得复杂后的一种解决方案。具体这种解决方案是怎么演变来了,可以参考什么叫组件化开发? - aloo的回答 - 知乎。

既然组件是为了解决代码耦合和代码复用的问题,那我们在设计一个组件的时候,需要逐步思考以下的问题:

  1. 复用:抽象出需要被复用的代码(例如一个容器,盛载不同的内容,而不需要再设计一个新的容器去盛载新的内容)
  2. 复用:怎么复用抽离后的代码(模块化引用、webpack打包)
  3. 解耦:组件与同级组件间如何保持独立(消息通信、事件回调)
  4. 解耦:父子组件怎么通信(单向数据流、消息通信)

解决方案始于问题,也止于新的问题,方案总在变化,理解背后方案背后解决的问题能加深我们对方案的认识,也有助于我们解决新的问题。

1

从0到1,如何动手打造一个合适的组件?

第一个简单的Vue组件

前面简单了解了组件的出现是为了解决哪些具体问题,这个时候是不是好奇Vue的组件怎么写?学习资料首推Vue官方文档-组件,既简单又全面。为了保持阅读连贯性,这里举个简单的例子。没接触过Vue的同学建议先去看Vue官方文档-入门。

<!-- /components/hello.vue -->
<template>
  <div>{{ msg }}</div>
</template>
<script>
export default {
  data() {
    return { msg: 'Hello Vue.js' }
  }
}
</script>
<style scoped>
  div { font-size: 20px; }
</style>

<!-- App.vue -->
<template>
  <!-- 组件使用 -->
  <hello></hello>
</template>
<script>
// 组件引用
import Hello from '/components/hello.vue';
export default {
  // 组件注册
  components: {
    Hello
  },
}
</script>

上面我们实现了一个Hello组件来显示”Hello Vue.js”,Hello组件采用单文件的形式(借助webpack打包,具体配置可参考Vue脚手架工具:vue-cli生成的项目)来组合组件相关的模板、样式以及逻辑,实现代码层面的高内聚。这时候我们就能在任意地方使用Hello组件(需引用,局部/全局注册,使用)。

Vue组件的实现方式

这里假设大家通过浏览Vue官方文档-组件后了解了:

  1. 传递数据 - prop
  2. 事件绑定
  3. 插槽 - slot
  4. VNode引用 - ref

现在是不是特别想动手写自己第一个组件,用于实际业务中?在接触到新的技术时,我也有这种想法和冲动,但写码实在太自由了,实现同样一个小功能,可以有千万种写法(夸张),从多种写法中挑选出大家认可的,实际业务场景检验过的写法,就叫“最佳实践”,因此在动手写码前,不妨来看看Vue.js组件的“最佳实践”或者说主流写法,这常常会帮助我们省去一些填坑的时间。

在阅读一些博客后,我决定去看饿了么Vue组件库 mint-ui源码,最后总结出Vue组件的使用场景以及对应的实现方式,如下表:

序号使用场景实现方式举例
1不需要返回js引用对象,纯粹是渲染内容单Vue文件,例如上面的Hello组件Button
2-1需要返回js引用对象,例如控制弹窗开关单Vue文件 + js封装对外接口Dialog
2-2需要返回js引用对象,例如控制弹窗开关单Vue文件 + refs引用局部Dialog
2-3需要返回js引用对象,例如控制弹层单Vue文件 + refs引用 + 挂载引用对象到全局全局Toast

下面就逐一详细地和大家讲解各种使用场景和对应的实现方式。

PS:在这里特别感谢《Vue组件的三种调用方式》这篇博客给了我启发,不要先去写组件再考虑怎么使用组件,而应该从使用场景出发去设计组件。

场景1 - 不需要返回js引用对象,纯粹是渲染内容

这应该是开发中最普遍的场景,三部曲:①import引用组件 ②components注册组件 ③<template>中使用组件,并通过数据传递和事件绑定将组件需要的信息传递过去,完事。这里举一个比上面的Hello组件复杂一些的例子:

①业务需求

卡片背景
上面是某个业务需求的视觉稿,咋一看是四个不同样式的卡片,但还是能找到一些共同点:①背景色一致;②阴影一致;③右上角有几种角标;④卡片两侧有缺口;我们对这四个共同点进一步整理和抽象:这是一个背景为白色、带阴影、右上角有不同角标、两侧可能有缺口的容器。下面就是愉快的编码时间啦。

②具体实现

<!-- 

功能说明:

1. 抽象了阴影,间距,右上角提示
2. 提供content插槽

使用说明:

1. 接口
status: default、unqualified、expired、gift
semiCircle: true、flase

2. template
<card-container :status="status" :semiCircle="true">
    <div slot="content"></div>
</card-container>
-->
<template>
<div class="card-container">
    <slot name="content"></slot>
    <div v-if="status === 'default'"></div>
    <div v-else-if="status === 'unqualified'" class="tips unqualified">未达领取资格</div>
    <div v-else-if="status === 'expired'" class="tips expired">已过期</div>
    <div v-else-if="status === 'gift'" class="tips gift">平台赠送</div>
    <div v-if="semiCircle">
        <div class="semi-circle"></div>
        <div class="semi-circle right"></div>        
    </div>
</div>
</template>

<script>
export default {
  data () {
    return {}
  },
  props: ['status', 'semiCircle']
}
</script>

<style scoped>
  /* 样式不是重点,忽略 */
</style>

卡片容器实现比较简单,这里使用了插槽 - slot来将内容装载在容器内,再通过props传参来控制容器自身的形态。

③分析

“不需要返回js引用对象,纯粹是渲染内容”覆盖了业务绝大部分场景。如果不嫌麻烦,应该也能覆盖所有的场景。例如,一个Toast,我们期望是Toast.show('hello world')的方式调用,其实也能这样写:

<!-- /components/toast.vue -->
<template>
  <div v-if="show">{{ msg }}</div>
</template>
<script>
export default {
  data() {
    return {}
  },
  props: ['show', 'msg']
}
</script>

<!-- App.vue -->
<template>
  <!-- 组件使用 -->
  <toast :show="toastShow" :msg="toastMsg"></toast>
</template>
<script>
// 组件引用
import Toast from '/components/toast.vue';
export default {
  data() {
        return {
            toastMsg: '',
            toastShow: false
        };
    },
  // 组件注册
  components: {
    Toast
  },
  methods: {
    showToast: function(msg) {
      this.toastMsg = msg;
      this.toastShow = true;
    }
  }
}
</script>

虽然上面同样实现了Toast.show('hello world')的需求,但试想我们在多个页面里都需要用到Toast,每个页面都需要配置toastMsg、toastShow变量,showToast方法,远没有Toast.show('hello world')用得爽。下面我们来探讨新的解决方案。

场景2-1 - 需要返回js引用对象: 单Vue文件 + js封装对外接口

上面已经用代码示例和大家展示用配置的方法来实现一个弹窗的开关过程是多么“傻”。有些时候我们需要操作对应的组件对象来完成一些交互,这里还是以Toast.show('hello world')为目标,看看怎么去满足这种业务场景。

①Show me the code

<!-- /components/toast.vue 单Vue文件实现组件逻辑-->
<template>
  <div v-if="showView">{{ msg }}</div>
</template>
<script>
export default {
  data() {
    return {
        showView: false,
        msg: ''
    }
  },
  methods: {
    show: function(msg) {
        this.msg = msg;
        this.showView = true;
    },
    close: function() {
      this.showView = false;
    }
  }
}
</script>
/* /components/toast.js 对上面的Vue组件进行封装,对外暴露接口 */
import Toast from '/components/toast.vue';

export default {
  // install为Vue定义的插件引入规范
  // 具体可以参考:https://cn.vuejs.org/v2/guide/plugins.html
  install(Vue) {
    // 由单Vue组件扩展成组件构造器
    const constructor = Vue.extend(Toast);

    function toast(msg) {
      // 实例化
      let toast = new constructor();
      toast.show(msg);
      // 挂载到DOM树上,没有考虑DOM节点复用的问题
      if (!toast.$el) {
        // 挂载虚拟DOM
        let vm = toast.$mount();
        document.querySelector('body').appendChild(vm.$el);
      }
      // 如果需要进一步操作,可返回组件实例
      return toast;
    }
    // 将toast构造方法挂载在Vue上
    Vue.toast = toast;
  }
}
<!-- 使用组件 -->
<template>
  <div></div>
</template>
<script>

import Vue from 'vue'
import Toast from './index.js'
// 全局注册
Vue.use(Toast)

export default {
  mounted: function() {
    const toast = Vue.toast('Hello world');
    toast.close();
  }
}
</script>

②基本思路 - 从开源项目源码中总结得来:

  1. 用单Vue文件的形式组织组件内容,实现组件逻辑;
  2. 新建一个js文件,对前面的Vue组件进行封装,将构造函数挂载在Vue对象中:
    1. 利用Vue.extent将Vue组件扩展成组件构造器;
    2. 设计构造函数(新建实例,将构造函数的参数传给实例,将实例挂载到真实DOM节点上,返回实例对象以便后续操作)
    3. 将构造函数挂载在Vue对象中
  3. 利用Vue插件机制全局注册组件;
  4. 在需要用到组件的时候,调用步骤2中挂载在Vue对象中的构造函数;

按照上面的操作,我们已经能全局使用Vue.toast('Hello world')。有时候我们的.vue文件里并没有import Vue from 'vue',因此我们可以更改一下上面的步骤2,将构造函数挂载在window对象中,调用方法就变成toast('Hello world')。

至此,我们已经知道如何返回组件实例操作对象供交互使用,但回顾一下整个解决方案,我们需要额外多写一个封装组件对外暴露构造方法的js文件,对于Vue新人来说这个过程会稍微有些复杂。

怎么理解复杂的事情?抽象是一个好方法。

③额外的思考

剥去外壳,直击本质,使用组件其实是将组件挂载到视图上并与组件进行逻辑交互的一个过程。基于这个本质,我们只用考虑两个问题:

  1. 怎么挂载组件?
  2. 怎么进行逻辑交互?

由这个思考,针对场景2(需要返回js引用对象),产生了下面2-2、2-3两种稍微不一样的方案。

场景2-2 - 需要返回js引用对象: 单Vue文件 + refs引用

Vue在<template>标签里已经给我们提供挂载组件的能力,同时利用VNode引用 - ref我们能获取到组件实例,有了组件实例,就能调用组件的方法进行各种交互。稍微改造一下之前的代码:

<!-- /components/toast.vue 单Vue文件实现组件逻辑-->
<template>
  <div v-if="showView">{{ msg }}</div>
</template>
<script>
export default {
  data() {
    return {
        showView: false,
        msg: ''
    }
  },
  methods: {
    show: function(msg) {
        this.msg = msg;
        this.showView = true;
    },
    close: function() {
      this.showView = false;
    }
  }
}
</script>

<!-- App.vue -->
<template>
  <!-- 组件使用 -->
  <toast ref='myToast'></toast>
</template>
<script>
// 组件引用
import Toast from '/components/toast.vue';
export default {
  // 组件注册
  components: {
    Toast
  },
  mounted: function() {
    // 获取组件引用
    const toast = this.$refs.myToast;
    // 调用组件方法实现逻辑交互
    toast.show('Hello world');
    toast.close();
  }
}
</script>

利用<template>来挂载组件省去了我们使用Vue API来构建组件,挂载组件的麻烦,同时通过ref引用我们能快速获取组件实例,完成需要的逻辑交互。需要注意的是ref只能获取子组件的引用,因此只能在当前挂载作用域使用,在别的文件里访问不了this.refs.myToast,更进一步,如果我们需要一个全局使用的组件呢?。

场景2-3 - 需要返回js引用对象: 单Vue文件 + refs引用 + 全局挂载

说不定大家都已经猜到了,把上面的this.refs.myToast挂载在window对象不就实现了全局调用接口吗?代码和上面及其相似就不展示了,这里再温习一遍操作流程:

  1. 在根节点(通常是App.vue)中import引用Toast组件;
  2. 在根节点中<template>挂载<toast ref='myToast'></toast>;
  3. 通过this.refs.myToast获取组件引用;
  4. 将组件引用挂载到window对象供全局使用;

自此,大家可以开始结合自己的需求,挑选合适的方案来设计适合自己的组件了,欢迎来到组件化时代。

最后

刚开始写的时候博客标题是《Vue.js组件开发从0到1到100》,后来写着写着发现从0到1内容就很多了,故拆开,后续会有《Vue.js组件开发从1到100》,分享内容可能有:
1. 组件的基本逻辑复用 - mixin
2. 你并不总需要组件 - 指令
3. 组件库的技术架构
4. 高阶组件 - 内置的transition组件分析
5. 复杂项目中的状态管理
6. 组件与SSR

欢迎大家关注。

好久不见,我又回来啦。过去17年探索了很多新的领域,希望18年能收收心,一专多长,加速成长。期待与大家共同进步。

FPGA远程升级避坑指南:用AXI Quad SPI IP读写N25Q128 Flash的完整流程 本文详细介绍了FPGA远程升级过程中使用AXI Quad SPI IP读写N25Q128 Flash的完整流程,包括IP核配置、Flash操作指令集、双镜像备份设计及生产级远程升级协议。通过最佳实践和避坑策略,帮助开发者实现可靠的镜像更新方案,提升系统可靠性和可维护性。 阅读详情

相关推荐

Bartender 2021破解版安装教程:手把手教你从下载到激活(附详细步骤图)

本文详细介绍了BarTender 2021专业版的安装与高效应用指南,从基础配置到高级条码设计,帮助用户快速掌握标签设计与打印技术。内容涵盖安装步骤、标签模板创建、数据连接与批量打印技巧,以及高级功能如安全策略与自动化集成,适合零售、物流、制造等行业用户提升工作效率。

p4q5r6s7t的博客 2620

Vue从0到1快速搭建

vue从0到1快速搭建

m0_73505556的博客 1594

宝塔面板磁盘扩容后不生效?5步搞定Linux服务器磁盘空间更新(附详细命令)

本文详细解析了Linux服务器磁盘扩容后宝塔面板显示不生效的常见问题。通过理解磁盘、分区、文件系统三层逻辑,提供5步解决方案:检查磁盘状态、安装growpart工具、扩展分区、使用resize2fs命令扩展文件系统,并最终验证结果。文中附有详细命令和针对XFS、LVM等进阶场景的指南,帮助用户彻底解决磁盘空间更新问题。

weixin_29271263的博客 127

搭建VUE从零到一

记录工作中如何搭建一个vue项目的步骤整理 一.安装node环境 1.官网下载node,下载地址为https://nodejs.org/en/ 2.右键打开命令窗,输入node -v 查看node版本以及查询是否安装成功,结果如果出现版本号,则表示安装node环境成功。 3.补充一点:npm安装由于受网络等各种因素影响,会比较慢,所以我们需要再安装一下cnpm(淘宝镜像)来进行提高效率。 淘宝的镜像:http://npm.taobao.org/ 命令框中输入 npminstall -g cn...

Ningmengmanong的博客 788

centos7 python3.12.1 报错 No module named _ssl,坑我几个小时

网上的教程很多,但几乎是无效的,跟着我这教程,可以完美解决。

Amio_的博客 1万+

快速理解STLink引脚图中复位引脚作用

深入讲解STLink引脚图中复位引脚的实际用途,帮助开发者快速掌握其在调试与下载过程中的关键作用,结合stlink引脚图理解更高效。

weixin_32324637的博客 1326

开发JavaScript组件(完整示例)

使用JavaScript,按照面向对象的思想来构建组件。 现以构建一个TAB组件为例。 从功能上讲,组件包括可视部分和逻辑控制部分;从代码结构上讲,组件包括代码部分和资源部分(样式、图片等)。 组件的特点:高内聚,低耦合(不与其他代码逻辑交叉,可以继承,包含);封装性(隐藏私有方法和变量);可重用性(可反复多次使用,用来组装更复杂的应用)。 <html> <head> <meta http-equiv="Content-Type" content="text/html.

1120

揭秘cocos-mcp:如何用AI助手提升CocosCreator游戏开发效率

本文深入介绍了cocos-mcp工具,它作为连接AI助手与CocosCreator编辑器的桥梁,遵循MCP协议,能显著提升游戏开发效率。通过自然语言指令,开发者可让AI直接查询场景结构、批量修改属性或生成上下文代码,将重复操作变为智能调度,实现从“手动操作者”到“指令指挥官”的工作流变革。

weixin_29001683的博客 1048

整理 Vue 项目 从 0 到 1 搭建

​整理 Vue 项目 从 0 到 1 搭建 目录 1、开发项目流程 2、开发环境 3、初始化项目 图形界面 UI创建项目 4、ElmentUI安装与配置 5、网络请求 6、富文本编辑器 7、Vue 中的 @ 符 提示 文件配置 8、自动化 导入 路由 配置 文件 : 9、自动化 导入 Vuex 模块化配置 文件 : 10、项目目录层级 11、项目环境配置

Mr.小灰狼_随笔 5841

西门子S7-1200PLC与FANUC机器人进行PROFINET IO通信的具体方法和步骤详解

西门子S7-1200PLC与FANUC机器人进行PROFINET IO通信的具体方法和步骤详解

Robot_PLC_HMI_Automation 1万+

92. SAP ABAP 系统里长文本 Long Text 的设计和读取函数 READ_TEXT 的详细讲解

SAP ABAP中的长文本(Long Text)是指在SAP系统中存储和管理较长文本信息的一种机制。长文本通常用于存储描述性信息、注释、说明等,这些文本信息可能超过了标准数据库表字段的长度限制。 长文本的作用主要有以下几点: 1. 更多的信息存储:长文本允许您存储和显示比标准表字段允许的更多信息。例如,产品描述、用户注释、维护计划等可能需要大量的文本来详细描述。 2. 更好的可读性:长文本提供了更好的文本格式化选项,可以改善可读性。用户可以使用段落、列表、字体样式等格式化文本,以便更容易地理解和阅读。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1996

从0到1创建一个Vue项目

创建前先了解几个知识点: node.js Node是一个让JavaScript运行在服务端的开发平台,使用JavaScript也可以开发后台服务,说明白就是它仅仅是一个平台,我们使用Vue开发必须要安装Node.js。 npm npm是Node.js官方提供的包管理工具,它已经成了Node.js包的标准发布平台,用于Node.js包的发布、传播、依赖控制。npm提供了命令行工具,使你可以方便地下载、安装、升级、删除包,也可以让你作为开发者发布并维护包。我们可以直接...

linyin_666的博客 2870

大模型部署指南:SGLang 框架

本文介绍使用 SGLang 框架部署大模型

举世誉之而不加劝,举世非之而不加沮,定乎内外之分,辩乎荣辱之境,斯已矣。 1611

从0到1:Astro+Vue.js组件化开发超全指南

你还在为多框架整合头痛?想让静态站点拥有Vue的交互能力却不知从何下手?本文将带你一步步实现Astro与Vue.js的无缝集成,掌握组件化开发的核心技巧,读完你将能够:搭建混合框架项目架构、开发响应式Vue组件、优化渲染性能,以及解决常见集成问题。 ## 项目准备与环境配置 Astro作为新兴的全栈框架,以其独特的组件岛(Component Islands)架构著称,允许在静态页面中嵌入交互式...

gitblog_00070的博客 621

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

超赞VUE模板materiovuetifyvuejsadmintemplateprov1.0.2介绍:构建高质量管理系统的理想选择

超赞VUE模板materiovuetifyvuejsadmintemplateprov1.0.2介绍:构建高质量管理系统的理想选择 去发现同类优质开源项目:https://gitcode.com/ 在众多VUE模板中,materio vuetify vuejs admin template pro v1.0.2以其卓越的性能和丰富的功能脱颖而出,成为开发高质量后台管理系统的首选。 项目介绍 mat...

gitblog_06752的博客 361

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

Vue-bus:Vue.js 的事件总线解决方案

Vue-bus:Vue.js 的事件总线解决方案 Vue-bus 是一个为 Vue.js 提供事件总线功能的开源项目,主要使用 JavaScript 编程语言开发。该项目的目的是为了在 Vue 组件之间提供一个简单且高效的事件通信机制。 项目基础介绍 Vue-bus 是一个轻量级的事件总线插件,支持 Vue 1.0 和 2.0 版本。它允许开发者在不同组件之间进行解耦的事件传递,而不需要依赖于父子...

gitblog_00335的博客 277

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

vue echarts组件_Vue.js的ECharts组件

vue echarts组件 Vue-ECharts (Vue-ECharts) ECharts component for Vue.js. Vue.js的ECharts组件。 Built upon ECharts 3.x & Vue.js 1.x. Vue-ECharts may not directly work in Vue.js 2.0. 基于ECharts 3.x和Vue.js...

cuk5340的博客 253

vue日期组件,支持vue1.0和2.0

vue-datetime使用vue编写的时间组件,小巧实用,支持vue1.0,vue2.0v1.0 功能: 1.支持同时展开多个日期选择框 2.支持单击选中和取消,可配置单选和多选 3.支持双击启动连续选择,支持正向连续,逆向连续和跳跃不可选日期 4.支持在日期选择框内直接切换月份 5.支持初始化不可点击日期(剩余的可选择) 6.支持初始化已选择日期(已选择日期高亮) 7.支持初始化可选择日期(剩余

Stephen 1万+

从0到1搭建一款Vue可配置视频播放器组件(Npm已发布)

前言 话不多说,这篇文章主要讲述如何从0到1搭建一款适用于Vue.js的自定义配置视频播放器。我们平时在PC端网站上观看视频时,会看到有很多丰富样式的视频播放器,而我们自己写的video标签样式却是那么丑。其实像那些网站都是基于原生video标签进行开发的,只不过还得适当加工一下,才会有我们所看到的漂亮的视频播放器。 开发 在具体开发之前,我们需要明确我们需要做什么? 封装一个可配置的视频播放器; 适用于Vue.js; 应用于PC端网站; 视频播放器常用的功能必须要有; 发布到Npm; 好,明确了以上几

主要领域:前端开发 2312

vue.js 移动端组件库_Vue.js的移动组件

vue.js 移动端组件库 维梅 (vue-mui) mobile components for Vue.js 1.0.* Vue.js 1.0。*的移动组件 演示 (demo) 翻译自: https://vuejsexamples.com/mobile-components-for-vue-js/vue.js 移动端组件库...

cuk5340的博客 304

SDXL 1.0电影级绘图工坊:Vue.js前端展示系统开发

本文介绍了如何利用星图GPU平台自动化部署🎨 SDXL 1.0 电影级绘图工坊镜像,并基于此构建一个Vue.js前端展示系统。该系统能够高效管理和展示由SDXL 1.0生成的高质量AI绘画作品,实现图片画廊、风格筛选与在线预览等功能,为个人作品集或线上画廊提供专业解决方案。

weixin_42465140的博客 112

js过渡效果_Vue.js高仿开发饿了么外卖App课程下载

第1章 课程简介介绍课程的学习目标和学习内容。1-1 课程简介1-2 课程安排第2章 Vuejs介绍从前端开发趋势分析开始,引入 MVVM 开发框架和 Vue.js,接着对比流行框架Angular 和 React,最后详细介绍 Vue.js 的核心思想-数据驱动和组件化。2-1 Vuejs介绍-近年来前端开发趋势2-2 Vuejs介绍-MVVM框架2-3 Vuejs介绍-什么是Vuejs...

weixin_39978257的博客 210

vue结合饿了么_Vue.js 高仿饿了么外卖app 全套_IT教程网

资源名称:Vue.js 高仿饿了么外卖app 全套资源目录:vue仿饿了么视频全套全套资源│ files.txt│ project.zip│ resource.zip│├─第01章 课程简介│ 1-1 课程简介.mp4│ 1-2 课程安排.mp4│├─第02章 Vue.js介绍│ 2-1 Vuejs介绍-近年来前端开发趋势.mp4│ 2-2 Vuejs介绍-MVVM框架.mp4│ 2-3 V...

weixin_39785970的博客 193

Vue 组件库 HeyUI@1.16.0 更新日志

开发四年只会写业务代码,分布式高并发都不会还做程序员? >>> HeyUI :一个基于Vue.js的...

测试 330

vue echarts组件_基于Vue.js 2的ECharts组件

vue echarts组件 Vue-ECharts (Vue-ECharts) ECharts component for Vue.js. Vue.js的ECharts组件。 Built upon ECharts v4.0.1+ and depends on Vue.js v2.2.6+. 建立在ECharts v4.0.1 +之上,并依赖于Vue.js v2.2.6 +。 View de...

cuk5340的博客 2425

vuejs心法和技法

注意:本文记录作者在学习和使用vuejs开发中的点点滴滴,从vuejs1.0开始直到现在的vuejs2.0以后的版本。期中部分1.0的内容已经过时,仅作各位朋友参考,建议重点关注2.0相关的内容,会随着我对vuejs有了更多的体会后不断维护更新,也欢迎朋友们批评指正共同学习提高。 所有的vuejs组件都是被扩展的vue实例; var MyComponent = Vue.extend({ ...

weixin_33724570的博客 1443
上一篇: 前端工程:apis接口封装实践
下一篇: Vue.js组件开发从1到100
Sheldon_Law
博客等级 码龄11年 44粉丝 32原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值