Vue框架入门(项目搭建)

VUE文档
https://cn.vuejs.org/guide/introduction.html

SFC名词介绍

SFC即 *.vue 文件,英文 Single-File Component,简称 SFC
每一个 *.vue 文件都由三种顶层语言块构成:<template><script><style>
template​
每个 *.vue 文件最多可以包含一个顶层 <template> 块。

语块包裹的内容将会被提取、传递给 @vue/compiler-dom,预编译为 JavaScript 渲染函数,并附在导出的组件上作为其
render 选项。

script​
每个 *.vue 文件最多可以包含一个 <script> 块。(使用 <script setup> 的情况除外)

这个脚本代码块将作为 ES 模块执行。 默认导出应该是 Vue 的组件选项对象,可以是一个对象字面量或是 defineComponent
函数的返回值。

script setup​
每个 *.vue 文件最多可以包含一个 <script setup>。(不包括一般的 <script>)

这个脚本块将被预处理为组件的 setup() 函数,这意味着它将为每一个组件实例都执行。<script setup>
中的顶层绑定都将自动暴露给模板。要了解更多细节,请看 script setup 的专门文档。

style​
每个 *.vue 文件可以包含多个

一个 <style> 标签可以使用 scoped 或 module attribute (查看 SFC 样式功能了解更多细节)
来帮助封装当前组件的样式。使用了不同封装模式的多个<style> 标签可以被混合入同一个组件。

Vue目前两个API编码风格

Vue3提供了两种组件逻辑编写:选项式api和组合式api,熟悉vue2的人来说,选项式api是一个很好的选择,但Vue3提供给的组合式api对于代码复用效果更为突出。

一、选项式api

下面的代码示例是我们一个选项式子组件的,选项式api通过各个选项对象,data、methods、mounted等,明确告诉开发者,相应代码的位置

// 子组件.vue 选项式api案例
<template>
 <div>{{msg}}</div>
</template>
<script>
export default {
  data() {
    return {
      message: 'Hello World!'
    }
  },
  methods: {
    reverseMessage() {
      this.message = this.message.split('').reverse().join('')
    },
    notify() {
      alert('navigation was prevented.')
    }
  }
  mounted(){
  }
}
</script>

二、 组合式api

组合式api的组件编辑方式是Vue2.7以及Vue3以上的版本提出的全新概念,是一系列 API 的集合,使我们可以使用函数而不是声明选项的方式书写 Vue 组件。

// 子组件.vue 组合式api案例
<script>
import { ref, watchEffect } from 'vue'
setup(){
	// 响应式状态
	const count = ref(0);
	// 更改状态、触发更新的函数
	function increment() {
	  count.value++
	}
	return{
		count,
		increment
	}
}
mounted() {
    console.log(this.count) // 0
  }


</script>
<template>
  <button @click="increment">点击了:{{ count }}</button>
</template>

该方式可以很轻松地将这一组代码移动到一个外部文件中,不再需要为了抽象而重新组织代码,大大降低了重构成本,这在长期维护的大型项目中非常关键。

组合式api入口:setup() 钩子

场景:
1) 基于选项式 API 的组件中集成基于组合式 API 的代码
2) 非单文件组件中使用组合式 API

*作用:
在setup函数中,响应式API(ref,reactive)的声明会在函数返回后暴露模板和组件实例, 供其他选项通过实例对象属性获取使用

限制
setup() 自身并不含对组件实例的访问权:setup函数中无法访问组件实例(vue2的this),
如需访问需要通过data或者methods

组合式api主要包含:响应式api、生命周期钩子api 以及 依赖和注入api

单文件SFC提供的语法糖
<script setup>
import { ref, onMounted } from 'vue'

// 响应式状态
const count = ref(0)

// 更改状态、触发更新的函数
function increment() {
  count.value++
}

// 生命周期钩子
onMounted(() => {
  console.log(`计数器初始值为 ${count.value}`)
})
</script>

<template>
  <button @click="increment">点击了:{{ count }}</button>
</template>

script setup 和script标签一般不同时使用,除了以下情况:
声明无法在 script setup 中声明的选项,例如 inheritAttrs 或插件的自定义选项。
声明模块的具名导出 (named exports)。
运行只需要在模块作用域执行一次的副作用,或是创建单例对象。

企业级Vue项目搭建

一、环境准备

1、安装node.js
在这里插入图片描述
2、安装
3、配置node.js的系统环境变量路径(使用node -v命令不生效时候)
由于新版的nodejs已经集成了npm,所以之前npm也一并安装好了。同样可以通过输入 npm -v 来测试是否成功安装。

npm -v

4、第三方npm的安装速度使用淘宝镜像源

使用淘宝镜像命令(建议加上 -g 进行全局安装):

npm install -g cnpm --registry=https://registry.npm.taobao.org

二、vue环境搭建

1、安装vue-cli

npm install -g @vue/cli  //这是国外的比较慢

cnpm install -g @vue/cli   //使用淘宝镜像源
#检查是否安装成功  
vue -V 

三、创建vue项目

基于webpack构建项目

1、创建vue2项目
进入准备搭建项目的文件夹,在上方地址栏输入cmd回车打开控制台
输入vue create myvue 回车(myvue项目名称可自定义,必须英文)
在这里插入图片描述
2、自定义配置
配置介绍,带*号说明被选中,按空格键选中或取消
在这里插入图片描述
下面是我选择的配置,按需选择
代码格式校验新手先不建议,可能会出现频繁的报错
在这里插入图片描述
3、选择版本(vue2)
演示vue2
在这里插入图片描述
选好版本回车后来到这里
在这里插入图片描述
由于我之前选择了css预处理器,所以增加了选项
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
选择配置文件存在的方式,推荐整合回车确认
在这里插入图片描述
询问是否保存本次配置信息,我选择否 n
在这里插入图片描述
项目构建中
在这里插入图片描述
在这里插入图片描述
cd进文件夹
输入npm run serve运行项目

npm run serve

在这里插入图片描述
在浏览器输入地址http://localhost:8080/
在这里插入图片描述

以上基于 webpack 构建项目构建的Vue项目

基于 vite 构建项目

这里推荐使用vite构建工具

1.运行创建项目命令:

npm create vite@latest

npm create vite@latest 是一个命令,它会在您的项目中创建一个新的 Vite 项目,并安装最新版本的 Vite。

2.输入项目名称,默认是 vite-project

在这里插入图片描述
3.选择前端框架
在这里插入图片描述
4.选择项目类型
在这里插入图片描述

5.创建完毕,依次运行提示命令

cd vite-project   (进入项目文件夹)

npm install   (安装配置依赖)

npm run dev   (运行项目)

在这里插入图片描述
6. 浏览器输入地址 http://127.0.0.1:5173/
在这里插入图片描述

三、Vue目录介绍

在这里插入图片描述

components目录:存放页面组件,在此目录下创建开发新的页面组件
router目录:index.js,页面组件开发完成后,需要为组件设置访问路径

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

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

相关文章

【git学习笔记 01】打标签学习

文章目录 一、声明二、对标签的基本认知什么是标签&#xff1f;为什么要打标签&#xff1f;如何生成类似github中readme的图标 三、标签相关命令四、示例操作 一、声明 本帖持续更新中如有纰漏&#xff0c;望批评指正&#xff01;参考视频链接&#xff0c;非常感谢原作者&…

houdini 神经网络

实现个神经网络的3D可视化&#xff0c;美爆了&#xff01;-腾讯云开发者社区-腾讯云 https://vimeo.com/stefsietz GitHub - julrog/nn_vis: A project for processing neural networks and rendering to gain insights on the architecture and parameters of a model throu…

天锐绿盾透明加密防泄密系统的功能有哪些

PC端访问地址&#xff1a;www.drhchina.com 天锐绿盾透明加密防泄密系统的功能主要包括以下几点&#xff1a; 透明加解密&#xff1a;该系统采用文件过滤驱动实现透明加解密&#xff0c;这意味着用户在使用过程中完全感觉不到加密和解密的过程&#xff0c;不会影响用户的操作习…

xcode无线真机调试详细图文步骤

步骤一、 步骤二&#xff1a; 步骤三&#xff1a; 配置完到这里&#xff0c;点击真机右键&#xff0c;菜单栏并未出现connect via ip address 选项&#xff0c;也没出现无线连接的小地球图标&#xff0c;别慌&#xff0c;接着进行下一步操作即可。 步骤四&#xff1a; 1.打开…

单片机计数功能

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、计数器是什么&#xff1f;1.1 应用 二、计数器原理框图及对输入信号的要求2.1 原理框图2.2对输入信号的要求 三、使用步骤3.1 配置为计数模式3.2 装初值3.3…

进制转换(二进制、八进制、十进制、十六进制)

目录 进制转换进制有哪些&#xff1f;二进制八进制&#xff1a;十进制&#xff1a;十六进制&#xff1a; 进制转换 随便记录下&#xff0c;仅供参考。 进制有哪些&#xff1f; 进制一般就只包括&#xff1a;二进制、八进制、十进制 和 十六进制 二进制&#xff1a;逢 二 进…

力扣题:数字与字符串间转换-12.19

力扣题-12.19 [力扣刷题攻略] Re&#xff1a;从零开始的力扣刷题生活 力扣题1&#xff1a;443. 压缩字符串 解题思想&#xff1a;通过双指针进行遍历即可 class Solution(object):def compress(self, chars):""":type chars: List[str]:rtype: int"&quo…

Springboot+Mybatis入门案例

一、项目结构 1.导入依赖 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apach…

Meta与Ray-Ban合作推出了一款全新智能眼镜外观时尚,而且搭载了能够“看到“你所看到的一切的人工智能技术

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

骨传导耳机和开放式耳机有什么区别?一文读懂骨传导耳机和开放式的关系!

先说结论&#xff0c;骨传导耳机和气传导耳机两者都属于是开放式耳机&#xff0c;开放式耳机指的是开放双耳佩戴的耳机&#xff01; 开放式耳机分为两种&#xff0c;分别是骨传导耳机和气传导耳机&#xff0c;虽然两者都属于开放式耳机&#xff0c;但它们的佩戴方式和传声原理…

SpringBoot接入轻量级分布式日志框架GrayLog

1.前言 日志在我们日常开发定位错误&#xff0c;链路错误排查时必不可少&#xff0c;如果我们只有一个服务&#xff0c;我们可以只简单的通过打印的日志文件进行排查定位就可以&#xff0c;但是在分布式服务环境下&#xff0c;多个环境的日志统一收集、展示则成为一个问题。目…

Relocations for this machine are not implemented,IDA版本过低导致生成汇编代码失败

目录 1、问题描述 2、安卓app发生崩溃&#xff0c;需要查看汇编代码上下文去辅助分析 3、使用IDA打开.so动态库文件&#xff0c;提示Relocations for this machine are not implemented 4、IDA版本较老&#xff0c;不支持ARM64的指令集&#xff0c;使用7.0版本就可以了 5、…

ACM32如何保护算法、协议不被破解或者修改

ACM32具有以下几种功能&#xff0c;可以保护算法、协议不被破解或者修改。 1.存储保护  RDP读保护  WRP写保护  PCROP 专有代码读保护  MPU存储区域权限控制  Secure User Memory存储区域加密 2.密码学算法引擎  AES  HASH  随机数生成  …

Hugging Face实战-系列教程19:文本摘要建模实战1 之 数据清洗(中文商城评价数据处理方法)

&#x1f6a9;&#x1f6a9;&#x1f6a9;Hugging Face 实战系列 总目录 有任何问题欢迎在下面留言 本篇文章的代码运行界面均在Jupyter Notebook中进行 本篇文章配套的代码资源已经上传 文本摘要建模实战1 之 数据清洗 文本摘要建模实战2 之 Tokenizer处理 1 任务概述 1.1 任…

MATLAB求解微积分(代码+详细解读)

大多数实际工程问题常常简化为微分方程&#xff0c;其求解显地至关重要。 符号微积分 极限 % matlab提供的求极限函数limit(),其调用格式为 % y limit(fun,x,x0) % fun为要求解的函数&#xff0c;x为函数自变量&#xff0c;x0为函数自变量的取值&#xff0c;x趋近于x0 clc;…

用户权益保护:TikTok如何守护数字隐私

随着社交媒体的普及&#xff0c;数字隐私问题逐渐成为用户关注的焦点。在这一背景下&#xff0c;TikTok作为一款备受欢迎的短视频应用&#xff0c;怎样保护用户的数字隐私&#xff0c;成为一个备受关注的话题。本文将深入探讨TikTok在用户权益保护方面的举措&#xff0c;以及它…

13代现场实拍图

1. 2.1寸电子墨水屏显示&#xff1b; 2. 无线通信868M&#xff0c;跳频通信&#xff1b; 3. 自带1个按键及三色高亮LED指示灯指示&#xff1b; 4. 超低功耗&#xff1b; 5. 标签ID码正面显示&#xff1b; 6. 通信速率200K/50K&#xff1b; 7. 覆盖通信半径30米以上&#…

C语言求最大公约数(详解版)

1、问题描述 求任意两个正整数的最大公约数&#xff08;GCD&#xff09;。 2、问题分析 如果有一个自然数a能被自然数b整除&#xff0c;则称a为b的倍数&#xff0c;b为a的约数。几个自然数公有的约数&#xff0c;叫做这几个自然数的公约数。公约数中最大的一个公约数&#x…

DTO/DO/VO分层与拷贝

作者简介&#xff1a;大家好&#xff0c;我是smart哥&#xff0c;前中兴通讯、美团架构师&#xff0c;现某互联网公司CTO 联系qq&#xff1a;184480602&#xff0c;加我进群&#xff0c;大家一起学习&#xff0c;一起进步&#xff0c;一起对抗互联网寒冬 这一篇其实没太多实质内…

我的创作纪念日【512】

机缘 学知识 收获 沉下心来安静学习的能力 日常 创作学习 成就 只要在学习&#xff0c;没有混时间就有成就感 憧憬 早日成为一个健康、漂亮、自律的富婆。