Vue的模块化开发初探

文章目录

  • Vue的模块化开发初探
    • 一 概述
    • 二 步骤
      • 2.1 下载必须模块
      • 2.2 安装Live Server插件
      • 2.3 编写代码
      • 2.4 运行结果
    • 三 总结
    • 四 参考资料

Vue的模块化开发初探

一 概述

Vue是一个渐进式JavaScript框架,可以按需引入部分功能,而不必全量引入整个框架。

二 步骤

2.1 下载必须模块

在浏览器输入:https://unpkg.com/vue@3/dist/vue.esm-browser.js,右键另存为,保存到demo.html文件同级目录下。

2.2 安装Live Server插件

在VSCode插件市场搜索Live Server并安装,如下图:
安装 Live Server

2.3 编写代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Demo</title>
</head>
<body>
    <div id="app">
        {{ msg }}
        <hr/>
        {{ web }}
        <hr/>
        {{ number }}
    </div>
    <script type="module">
        import { createApp, reactive, ref } from "./vue.esm-browser.js"
         createApp(
            {
                setup() {
                    const number = ref(2000);
                    const web = reactive(
                        {
                            title: "demo",
                            url: "demo.com"
                        }
                    );
                    return {
                        msg: "success",
                        web,
                        number
                    };
                }
            }
        ).mount("#app")
    </script>
</body>
</html>

2.4 运行结果

在Live Server中预览:
在这里插入图片描述
运行结果:
在这里插入图片描述

三 总结

与传统开发方式不一样的是,在script标签引入了type属性,具体为: <script type="module">,在标签内使用import导入了相关函数。

createApp是vue的启动函数,返回一个应用实例。原型为:

function createApp(rootComponent: Component, rootProps?: object): App

第一个参数是根组件。第二个参数可选,它是要传递给根组件的 props。

setup() 钩子是在组件中使用组合式 API 的入口,通常只在以下情况下使用:

  • 需要在非单文件组件中使用组合式 API 时;
  • 需要在基于选项式 API 的组件中集成基于组合式 API 的代码时。

注意: 对于结合单文件组件使用的组合式 API,推荐通过 <script setup> 以获得更加简洁及符合人体工程学的语法。

**ref()**接受一个内部值,返回一个响应式的、可更改的 ref 对象,此对象只有一个指向其内部值的属性 .value。原型如下:

function ref<T>(value: T): Ref<UnwrapRef<T>>

interface Ref<T> {
  value: T
}

ref 对象是可更改的,也就是说你可以为 .value 赋予新的值。它也是响应式的,即所有对.value的操作都将被追踪,并且写操作会触发与之相关的副作用。

如果将一个对象赋值给 ref,那么这个对象将通过 reactive() 转为具有深层次响应式的对象。这也意味着如果对象中包含了嵌套的 ref,它们将被深层地解包。若要避免这种深层次的转换,请使用 shallowRef() 来替代。

reactive()​返回一个对象的响应式代理。原型为:

function reactive<T extends object>(target: T): UnwrapNestedRefs<T>
  • 响应式转换是“深层”的:它会影响到所有嵌套的属性。一个响应式对象也将深层地解包任何 ref 属性,同时保持响应性;
  • 值得注意的是,当访问到某个响应式数组或 Map 这样的原生集合类型中的 ref 元素时,不会执行 ref 的解包;
  • 若要避免深层响应式转换,只想保留对这个对象顶层次访问的响应性,请使用 shallowReactive() 作替代;
  • 返回的对象以及其中嵌套的对象都会通过 ES Proxy 包裹,因此不等于源对象,建议只使用响应式代理,避免使用原始对象。

app.mount() 将应用实例挂载在一个容器元素中。原型为:

interface App {
  mount(rootContainer: Element | string): ComponentPublicInstance
}
  • 参数可以是一个实际的 DOM 元素或一个 CSS 选择器 (使用第一个匹配到的元素)。返回根组件的实例;
  • 如果该组件有模板或定义了渲染函数,它将替换容器内所有现存的 DOM 节点。否则在运行时编译器可用的情况下,容器元素的 innerHTML 将被用作模板;
  • 在 SSR 激活模式下,它将激活容器内现有的 DOM 节点。如果出现了激活不匹配,那么现有的 DOM 节点将会被修改以匹配客户端的实际渲染结果;
  • 对于每个应用实例,mount() 仅能调用一次。

四 参考资料

4.1 Vue官方文档

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

20240324-1-集成学习面试题EnsembleLearning

集成学习面试题 1. 什么是集成学习算法&#xff1f; 集成学习算法是一种优化手段或者策略&#xff0c;将多个较弱的模型集成模型组&#xff0c;一般的弱分类器可以是决策树&#xff0c;SVM&#xff0c;KNN等构成。其中的模型可以单独进行训练&#xff0c;并且它们的预测能以某…

python安装(window环境)

1.下载安装文件 首先推荐去官网下载最新版本&#xff0c;但是我这边官网打开很慢&#xff0c;而且下载的时候也很慢&#xff0c;翻墙也不行。所以我最终选择了非官方下载。 官网&#xff1a;Download Python | Python.org 中文官网&#xff1a;Python下载 | Python中文网 官…

牛客周赛39 --- G -- 小红不想做平衡树 -- 题解

小红不想做平衡树&#xff1a; 思路解析&#xff1a; 好数组的定义为 恰好翻转一个区间是得&#xff0c;这个区间变为升序的。 那么就有五种情况&#xff1a; 1.本身数组就升序的&#xff0c; 翻转一个长度为1的区间后&#xff0c;数组仍为升序 2.本身数组就降序的&#xf…

跨框架探索:React Redux 和 Vuex 对比分析快速掌握React Redux

React Redux 和 Vuex 都是前端状态管理库&#xff0c;分别用于 React 和 Vue.js 框架。 它们都提供了一套规范的状态管理机制&#xff0c;帮助开发者更好地组织和管理应用状态。下面是它们的一些异同点&#xff1a; 相同点&#xff1a; 中心化状态管理&#xff1a;两者都提…

环形链表 II - LeetCode 热题 26

大家好&#xff01;我是曾续缘&#x1f61b; 今天是《LeetCode 热题 100》系列 发车第 26 天 链表第 5 题 ❤️点赞 &#x1f44d; 收藏 ⭐再看&#xff0c;养成习惯 环形链表 II 给定一个链表的头节点 head &#xff0c;返回链表开始入环的第一个节点。 如果链表无环&#xf…

docker部署coredns服务器

创建文件夹 mkdir /coredns/config/添加一个CoreDNS配置文件 cat >/coredns/config/Corefile<<EOF.:53 {forward . 114.114.114.114:53log}EOF启动docker docker run -d --name coredns --restartalways \-v /coredns/config:/etc/coredns \-p 53:53/udp \regist…

HarmonyOS 开发-短视频切换实现案例

介绍 短视频切换在应用开发中是一种常见场景&#xff0c;上下滑动可以切换视频&#xff0c;十分方便。本模块基于Swiper组件和Video组件实现短视频切换功能。 效果图预览 使用说明 上下滑动可以切换视频。点击屏幕暂停视频&#xff0c;再次点击继续播放。 实现思路 使用Sw…

一文了解ERC404协议

一、ERC404基础讲解 1、什么是ERC404协议 ERC404协议是一种实验性的、混合的ERC20/ERC721实现的&#xff0c;具有原生流动性和碎片化的协议。即该协议可让NFT像代币一样进行拆分交易。是一个图币的互换协议。具有原生流动性和碎片化的协议。 这意味着通过 ERC404 协议&#xf…

混淆时,编译器优化导致通过反射赋值的类被清空问题

有几个反射赋值的类&#xff0c;之前一直是 keep 整个class的&#xff0c;现在要求对class的路径进行混淆。 当我启用混淆后&#xff0c;发现整个类的内容被清空了。 // 原始的类内容public class BaseLoadData {property("config_data1")public static String dat…

R语言数据可视化:ggplot2绘图系统

ggpolt2绘图系统被称为R语言中最高大上的绘图系统&#xff0c;使用ggplot2绘图系统绘图就像是在使用语法创造句子一样&#xff0c;把数据映射到几何客体的美学属性上。因此使用ggplot2绘图系统的核心函数ggplot来绘图必须具备三个条件&#xff0c;数据data&#xff0c;美学属性…

如何开始用 C++ 写一个光栅化渲染器?

光栅化渲染器是计算机图形学中最基础且广泛应用的一种渲染技术&#xff0c;它将三维模型转化为二维图像。下面我们将逐步介绍如何使用C语言从零开始构建一个简单的光栅化渲染器。 一、理解光栅化渲染原理 光栅化是一种将几何数据&#xff08;如点、线、三角形&#xff09;转换…

视频拍摄后如何用二维码分享?在线制作视频二维码的方法

现在很多人会将拍摄的视频内容用生成二维码的方式来分享给其他人&#xff0c;与以前使用微信、QQ、网盘等形式相比&#xff0c;二维码能够更加简单快捷的将视频传递给其他人查看&#xff0c;不需要下载缓存占用扫码者的内存&#xff0c;提供更好的用户体验效果。 视频转二维码…

大语言模型及提示工程在日志分析任务中的应用 | 顶会IWQoS23 ICPC24论文分享

本文是根据华为技术专家陶仕敏先生在2023 CCF国际AIOps挑战赛决赛暨“大模型时代的AIOps”研讨会闪电论文分享环节上的演讲整理成文。 BigLog&#xff1a;面向统一日志表示的无监督大规模预训练方法 BigLog: Unsupervised Large-scale Pre-training for a Unified Log Represen…

低代码平台适合谁用?业务岗能用它做什么?开发岗能用它做什么?一文讲清!

近期&#xff0c;低代码开发平台以其独特的魅力&#xff0c;迅速引发了大众的广泛关注。众多人士纷纷寻求了解各类低代码产品&#xff0c;以探究其功能与特点。 然而&#xff0c;有些人可能因一两款产品的体验不佳&#xff0c;便对整个低代码行业产生了偏见。但我要指出的是&am…

JS 表单验证

点击注册的时候&#xff0c;渲染出来&#xff0c;验证码是自动获取出来的 html&#xff1a; <div class"div1">用户名<input type"text" id"yhm"><span id"span1"></span><br>密码<input type"…

用AI作图,使用这个免费网站,快看我画的大鹏鸟和美女

还是大剑师兰特&#xff1a;曾是美国某知名大学计算机专业研究生&#xff0c;现为航空航海领域高级前端工程师&#xff1b;CSDN知名博主&#xff0c;GIS领域优质创作者&#xff0c;深耕openlayers、leaflet、mapbox、cesium&#xff0c;canvas&#xff0c;webgl&#xff0c;ech…

C语言面试题之判定字符是否唯一

判定字符是否唯一 实例要求 实现一个算法&#xff0c;确定一个字符串 s 的所有字符是否全都不同 实例分析 1、使用一个大小为 256 的bool数组 charSet 来记录字符是否出现过&#xff1b;2、遍历字符串时&#xff0c;如果字符已经在数组中标记过&#xff0c;则返回 false&a…

Linux、Docker、Brew、Nginx常用命令

Linux、Docker、Brew、Nginx常用命令 Linuxvi编辑器文件操作文件夹操作磁盘操作 DockerBrewNginx参考 Linux vi编辑器 Vi有三种模式。命令模式、输入模式、尾行模式&#xff0c;简单的关系如下&#xff1a; i -- 切换到输入模式&#xff0c;在光标当前位置开始输入文本。&a…

代码随想录算法训练营Day48|LC198 打家劫舍LC213 打家劫舍IILC337 打家劫舍III

一句话总结&#xff1a;前两题白给&#xff0c;第三题树形DP有点难。 原题链接&#xff1a;198 打家劫舍 滚动数组直接秒了。 class Solution {public int rob(int[] nums) {int n nums.length;int first 0, second nums[0];for (int i 2; i < n; i) {int tmp Math.m…

SysTick滴答定时器 - 延时函数

SysTick定时器 Systick定时器&#xff0c;是一个简单的定时器&#xff0c;对于CM3,CM4内核芯片&#xff0c;都有Systick定时器。Systick定时器常用来做延时&#xff0c;或者实时系统的心跳时钟。这样可以节省MCU资源&#xff0c;不用浪费一个定时器。比如UCOS中&#xff0c;分…