vue3使用记录

npm运行时WAEN提示

使用vue首先安装node.js,下载地址
安装16.15.1 ,为长期支持版本
安装后,在命令行执行npm命令,发现会提示异常
在这里插入图片描述
该异常是因为node.js 自带的npm配置文件和npm版本不匹配。新版的npm不再支持参数 -g作为全局参数,需要改为–location=global
找到node.js的安装目录,把npm.cmd文件中的prefix -g 修改为 prefix --location=glocal 保存后,再次打开命令窗口,执行npm命令不再提示异常

基本插件说明

建议以手动方式创建vue项目,这样可以把基本的插件都选择上,之后会自动安装。
若选择了自动安装vue项目,这需要手动配置和安装插件,比较麻烦

以手动方式创建vue,可以勾选需要的配置,红框中的配置不需要,其他的都选上
在这里插入图片描述
bable、typescript
这两个都是一个js编译器,可以把高版本的js文件,如ts,编辑为普通js文件,以便在所用浏览器顺利执行。各有各的好处,可以只安装其中一个,或者都安装

webpack
上面选项中没有webpack,是因为vue项目脚手架中已经内置了webpack的安装,因为如果webpack是vue项目的核心。
webpack是一个打包工具,打包js、css、图片、html等,它可以分析整个项目的文件结构,确认文件之间的依赖,将文件合成、压缩、加入hash等,生成最终一个js项目文件,较少了网络请求次数。
webpack内置只能处理js,但是它可以加载很多的loader处理css,img,ts,vue等其他文件,最终输出js文件。webpack的配置文件中,可以配置laoder选项的编译器是使用babel还是typescript

Eslint
一路回车后,到linter后需要选择一个检测级别
在这里插入图片描述
选第一个就行,其他的检测规则太多,会检测各种位置是否需要和不需要空格

vue中安装依赖模块

使用vue-cli创建项目后,在项目中引入模块,在项目根目录执行npm命令
npm install 模块名 -S,该命令把模块下载到node_module文件夹,并在package.json的dependencies 中添加该模块
npm install 模块名 -D,该命令把模块下载到node_module文件夹,并在package.json的devDependencies中添加该模块

dependencies 是在生产环境中要用到的依赖
devDependencies是在开发环境中要用到的依赖
举个栗子:
构建工具:webpack是用来压缩代码,打包等需要的工具,程序实际运行的时候并不需要,就要放在dev中所以要用 -D。
项目插件:例如bootstrap、mint-ui这种插件要在运行中使用的,就要放在dep中所以就用 -S。

安装依赖时,npm由于版本关系,对模块会有严格检查,会报错,如下
在这里插入图片描述

可在最后添加相关参数规避报错,如下

npm install element-plus -S --legacy-peer-deps

vue3 语法和规范

  • 以后缀vue结尾的组件文件,命名尽量使用驼大峰方式。大于两个单词

  • 组件定义时,prop属性定义和在模板中使用时,用小驼峰写法。引用组件时,v-bind后需要跟属性的用小写,使用-连接

  • ts语法问题
    在这里插入图片描述
    ts语法中使用this.data 获取属性值会报错,Property ‘id’ does not exist on type
    这是因为Typescript在执行代码检查时,如果该对象没有定义相应属性的类型,就会产生该报错。
    可以用类型断言来强制通过TS的编译,如下
    在这里插入图片描述
    当script中使用的组件没有ts语法时,我们可以直接去掉script中的ts标签,不使用ts编译即可

  • vue中,ref和reactive变量都使用const声明即可,不需要使用let

  • 定义和使用全局变量
    方法一,使用provide和inject
    只能在setup中使用inject获取全局变量
    在这里插入图片描述
    使用,需要在setup中调用,不能在setup中定义的方法内调用,和globalPropertie类似
    在这里插入图片描述

方法二,使用config.globalPropertie
在main.js中,createApp创建实例成功后,调用该方法如下

const app = createApp(App)
app.config.globalProperties.$wpy = 'wang'

在其他地方使用,在模板中使用时,可以直接{{KaTeX parse error: Expected 'EOF', got '}' at position 4: wpy}̲} 在组件中使用时,this.wpy

当在setup中使用时,因为setup没有生成组件实例,不能使用this
我们可以使用getCurrentInstance 获取内部组件实例,如下

import {  getCurrentInstance } from 'vue'
const Wpy = getCurrentInstance().appContext.config.globalProperties.$wpy

在这里插入图片描述

  • 使用import引入模块或文件
    使用import 导入时,若不加相对路径如 ./ 或…/ ,会自动从node_module目录中查找模块或文件
    若加了@/,则从src目录中查找文件或模块。@的路径在webpack配置中设定
    若导入的是一个模块,没有指定文件名,则自动加载该模块下的index js或ts文件
  • vue3中引入图片
    如果图片在public目录下,可以直接写图片的路径,不加public和/
    如果图片在src目录下,则需要使用import来引入图片

axios跨域设置

服务器端配置

在服务器段设置allow-origin

vue设置代理

首先,在vue.config.js中,设置devServer参数,如下

const { defineConfig } = require('@vue/cli-service')
module.exports = defineConfig({
  transpileDependencies: true,
  devServer: {
    // open: true, //启动应用时是否打开浏览器
    port: 9090   // vue服务的端口号
    // 设置跨域代理
    proxy: {
       '/api': { // 代理名称,可随意填
         target: 'http://127.0.0.1:8080/', // 接口地址host地址
         ws: true, // 是否开启websocke跨域
         changeOrigin: true,
         pathRewrite: {
           '^/api': ''
         }
       }
     }
  }
})

然后在axios初始化时,把代理名称填写到baseUrl即可,如下

const $axios = axios.create({
  baseURL:'/api',// 设置代理后,这里填写代理的名称
  // baseURL: 'http://127.0.0.1:8080/',// 不使用代理时,填写接口host地址
  timeout:2000,
  // withCredentials:true // 跨域请求时是否携带cookie验证,。当该值为ture时,服务器中的allow-origin不能设置为*,需要指定为确定的host
})

做完以上配置后,要终止vue,然后再重新开启。vue的热重启是加载不到这些配置的

element-plus使用

使用中发现,element组件中有些有些属性是一个静态值,不需要绑定动态数据时,但是使用时还是需要进行绑定,否则无效
比如

 <el-col :span="24"><div class="grid-content ep-bg-purple-dark" /></el-col>

span指定了一列占用的栏数,是个固定的数字,为什么还要用冒号绑定呢。
仔细查看文档后发现,span 需要传入一个数字型值,我们此处传递的是一个字符串。
如果我们不使用冒号绑定,该属性是无效的。但是绑定后,vue认为后面传入的是一个变量名或者表达式,会自行转换为数字。

除了字符串类型的属性,其他类型的参数,我们最好加上冒号,以避免属性不生效。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值