Vue-----day2

Node.js

概念

  • JS如果只是运行在浏览器上的话,用于控制HTML元素的行为。

  • 如果有一个能够脱离浏览器,也能解析JS的运行环境,就能通过JS进行服务端的开发。

  • 浏览器之所以能够解析JS,是因为每个浏览器都有一个解析JS的引擎。

  • 其中效率最高的是谷歌浏览器的V8引擎。

  • Node.js是一个基于V8引擎的JavaScript运行环境。

  • Node.js类似与Java的JVM。

使用

下载安装

  • 建议下载LTS长期维护版https://nodejs.org/zh-cn

  • 旧版本https://nodejs.org/zh-cn/download/releases

  • 安装成功后,在控制台输入"node -v",显示当前Node.js版本

在这里插入图片描述

  • 可以新建一个.js文件,通过"node js文件"命令来执行该js文件

    console.log("hello world");
    

    在这里插入图片描述

Vue工程创建

1.安装Node.js

2.安装npm

npm是Node.js的默认包管理器,用于管理js文件。类似于Java中的Maven管理jar文件。

安装了Node.js后,自动会安装npm,这里只需更改其下载js的路径即可

控制台输入npm -v查看npm版本

控制台输入npm config get registry查看js下载地址

3.修改npm默认下载资源的地址

方式一:直接修改npm默认下载地址

改为国内站点:淘宝npm镜像,在控制台输入

npm config set registry https://registry.npmmirror.com

方式二:额外添加一个指令,用国内站点下载

npm install -g cnpm --registry https://registry.npmmirror.com

这样不会修改原本npm的下载路径,之后通过cnpm指令使用国内站点下载

4.创建工程

1、在要创建的目录里,进入控制台

在这里插入图片描述

2、输入npm create vue@latest,会弹出创建工程的选项,可以通过左右键选择

在这里插入图片描述

3、创建成功后的这三句话表示

  • cd vue3-demo 进入目录

  • npm install 下载工程所需的js文件

  • npm run dev 启动工程

在这里插入图片描述

4、启动工程后,保持控制台界面开启,在浏览器中输入localhost:5173即可进入创建好的Vue3工程。

在这里插入图片描述

使用VSCode管理Vue工程

VSCode是一款热门主流的编辑器,可以安装丰富的插件,实现对各种语言的支持。

常用插件和设置

1、插件

在这里插入图片描述

2、中文
在这里插入图片描述

3、Volar

在这里插入图片描述

4、IDEA快捷键方案

在这里插入图片描述

5、内置浏览器

在这里插入图片描述

设置

1、自动保存

在这里插入图片描述

2、主题

在这里插入图片描述

将创建好的Vue工程目录,整体拖入VSCode中即可

运行Vue工程

在这里插入图片描述

如果创建好Vue工程后,直接使用VSCode管理时,还需输入npm install安装js文件,如果已经安装,直接输入npm run dev后,打开浏览器输入localhost:5173

Vue工程目录结构

在这里插入图片描述

在创建好的Vue工程中自定义页面访问

1.在views的目录下,新建一个.vue文件

.vue文件类似于.java文件,需要编译后生成最终页面

.vue文件中有三个根标签

  • template:用于定义页面中的标签

    • vue2.x版本中,template下只能有一个根标签
    • vue3.x版后,template下没有标签的限制
  • style:页面中的css代码

  • scrip:页面中的js代码

在这里插入图片描述

<template> 
    <!-- 定义页面中的节点 -->
    <h1>我的页面</h1> 
</template> 
<!-- scoped表示样式只能在当前页生效 -->
<style scoped> 
    /* 控制节点的CSS样式 */
    h1 {
        color: red; 
    }
</style> 
<!-- lang="ts"表示支持ts setup是对于setup()函数的简写--> 
<!-- <script setup>中的代码会在每次组件实例被创建的时候执行 --> 
<script setup lang="ts"> 
    // JS代码 
    console.log("hello vue3");
</script>
  1. 设置页面的请求映射
import { createRouter, createWebHistory } from 'vue-router'
// 方式一中导入某个.vue文件的代码 
import HomeView from '../views/HomeView.vue' 
// import MyPage from '../views/MyPage.vue' 
// 路由表 
// 用于决定某个.vue页面使用什么映射访问
// 设置访问方式一:先导入.vue页面,让其成为一个组件,再在routes中使用该组件 
// 设置访问方式二:在routest中直接导入某个.vue页面
const router = createRouter({ 
    history: createWebHistory(import.meta.env.BASE_URL),
    // 通过对象数组的形式定义访问映射
    routes: [ 
        // path表示访问映射,name没有限制,component为上方import的某个组件 
        //这里表示可以通过/访问../views/HomeView.vue页面 
        { 
            path: '/', 
            name: 'home', 
            component: HomeView 
        },{
            path: "/myPage",
            name: 'myPage',
            // component: MyPage 先导入,再引入 
            component: () => import('../views/MyPage.vue')//直接导入并引入
        },{ 
            path: '/about', 
            name: 'about',
            component: () => import('../views/AboutView.vue') }
    ] 
})export default router

3.在首页中设置访问的链接

<template> 
    <header> 
        <img alt="Vue logo" class="logo" src="@/assets/logo.svg" width="125" height="125" />
        <div class="wrapper">
            <HelloWorld msg="You did it!" />
            <nav> 
                <RouterLink to="/">Home</RouterLink>
                <RouterLink to="/about">About</RouterLink>
                <RouterLink to="/myPage">我的页面</RouterLink> 
            </nav> 
        </div>
    </header> 
	<RouterView /> 
</template>

在App.vue中有两个核心标签

  • 用于显示.vue页面的容器

  • 用于访问指定的path对应的.vue页面

vue文件详解

每一个.vue文件中,至少需要template或script标签。

  • 在template中定义页面中出现的标签。

  • script中定义js。

表示页面加载后开始执行其中定义的内容。

onMounted()函数

当每次访问页面时,都会执行onMounted()函数,通常用于访问后端接口。

<script setup lang='ts'> 
    import {onMounted} from 'vue'; 
	onMounted(()=>{ 
        //页面加载时要执行的内容
    });
</script>

页面中定义数据

一、ref函数和reactive函数

这两个函数都需要先引入后使用。

引入:import {ref,reactive} from ‘vue’

  • ref()函数

    • 可以定义任意类型的数据
    • 在函数中使用时,需要通过.value才能获取值
  • reactive()函数

    • 不能定义简单类型的数据,如字符串、数值
    • 在函数中直接使用
    • 属于ref()的子集,当使用ref()定义复杂类型的数据时,实际也是使用reactive()函数
<template> 
    //template中使用定义的数据,直接使用 
    <h3>{{msg}}</h3> 
    <h3>{{person.name}} </h3> 
    <ul>
        <li v-for="(item,index) in list">{{item}}</li>
    </ul> 
</template> 
<script setup lang='ts'> 
    import {ref,reactive} from 'vue'; 
    //声明值 
    //const 常量名 = ref(任意值)/reactive(非简单类型值); 
    const msg=ref('普通字符串'); 
    const count=ref(123); 
    const person=reactive({ 
        name:'ez',
        age:20 
    });
    const list = reactive([123,2,33,4]) ;
</script>

二、页面中定义函数

  • const 函数名 = function(){}

  • const 函数名 = ()=>{}

<template> 
	<button @click="addCount()">{{count}}</button> 
	<button @click="addAge()">{{person.age}}</button> </template> 
<script setup lang='ts'> 
    import {ref,reactive} from 'vue'; 
    const count = ref(0); 
    const person = reactive({ 
        name:'ez',
        age:20 
    });
    const addCount=function(){ 
        //count是ref定义,需要.value
        count.value++;
    };
    const addAge=()=>{
        //age是person的属性,由reactive定义,不需要.value
        person.age++; 
    } 
</script>

使用Axios访问后端接口

这里通过.json文件模拟后端接口

axios是一个http请求组件,类似于ajax。

一、安装到项目中

  • 在项目中新建终端

  • 输入npm install axios

在这里插入图片描述

二、在页面中使用

先导入axios组件

  • import axios from ‘axios’

  • axios.get(“url”);表示使用axios通过get请求访问指定的url

  • axios.get(“url”).then(res=>{res表示访问的结果,数据保存在res.data中});表示访问后的回调函数,通常用于获取访问的结果

<template>
    <table>
        <tr v-for="(item, index) in state.personInfo">
            <td>{{ item.id }}</td> 
            <td :title="item.sign">{{ item.username }}</td> 
            <td>{{ item.sex }}</td> <td>{{ item.email }}</td> 
        </tr> 
    </table>
</template>
<style scoped> 
    table { 
        border: 1px solid red;
        width: 100%; 
        border-collapse: collapse;
    }
    td {
        border: 1px solid skyblue; 
    } 
</style>
<script setup lang="ts">
    
    import { onMounted, reactive } from 'vue'; 
    // 导入axios工具 import axios from 'axios'; 
    //定义state的值,用于保存当前页面中可能要用到的数据 
    const state = reactive({ 
        personInfo: [], 
        msg: '', 
        count: 0 
    }); 
    //通过访问json文件来模拟访问后端接口。在访问该页面时访问json文件。
    onMounted(() => { 
        //通过类似于ajax的axios访问.json文件
        //axios.get("后端接口路径"); axios.get("http://192.168.125.3/appName/xxxx"); 
        //axios.get("url").then(ref=>{这里的res就是返回结果,访问后的数据在其中的data属性里}); 获取请求后的返回值 
        axios.get("../../public/data.json").then(res => {
            //res.data就是json文件中的所有内容 
            // res.data.data就是json文件中的名为data的属性
            state.personInfo = res.data.data;
        });
    }); 
</script>

请求方法的别名

Axios还针对不同的请求,提供了别名方式的api,具体如下:

方法描述
axios.get(url [, config])发送get请求
axios.delete(url [, config])发送delete请求
axios.post(url [, data[, config]])发送post请求
axios.put(url [, data[, config]])发送put请求

我们目前只关注get和post请求,所以在上述的入门案例中,我们可以将get请求代码改写成如下:

axios.get("http://yapi.smart-xwork.cn/mock/169327/emp/list").then(result => {
    console.log(result.data);
})

post请求改写成如下:

axios.post("http://yapi.smart-xwork.cn/mock/169327/emp/deleteById","id=1").then(result => {
    console.log(result.data);
})

vue组件库

饿了么公司推出的element是常用的主流vue组件库

  • vue2.x版本,使用element-ui

    • https://element.eleme.cn/2.13/#/zh-CN
  • vue3.x版本,使用element-plus

    • https://element-plus.org/zh-CN/

使用ElementPlus

1、在项目中新建终端,输入npm install element-plus --save

在这里插入图片描述

2、创建一个空白的Vue3工程

  • 按创建Vue3工程的流程,使用VSCode打开。

  • 删除

    • component目录下的所有内容
    • views目录下的所有内容
    • assets目录下的所有内容
    • main.ts中的引入样式
import { createApp } from 'vue' 
import App from './App.vue' 
import router from './router'
const app = createApp(App) 
app.use(router) 
app.mount('#app')
  • router目录下的index.ts文件中涉及到.vue文件的内容
import { createRouter, createWebHistory } from 'vue-router'

const router = createRouter({ 
    history: createWebHistory(import.meta.env.BASE_URL), 
    routes: [ 
        /* {
        path: '/about', 
        name: 'about',
        component: () => import('../views/AboutView.vue')
        } */ 
    ] 
})export default router
  • App.vue中删除所有,重新定义跟标签
<template>

</template> 

<style>

</style> 

<script setup lang="ts">
    
</script>

3、在main.ts中粘贴

要注意app.mount(‘#app’)要在最后

import { createApp } from 'vue' 
import App from './App.vue'
import router from './router' 
// elementplus相关 
import ElementPlus from 'element-plus' 
import 'element-plus/dist/index.css' 

const app = createApp(App) 

app.use(router) 
app.use(ElementPlus)

app.mount('#app')

图标的使用

建议先全局引入所有图标组件,再使用图标标签即可

在main.ts中加入

import * as ElementPlusIconsVue from '@element-plus/icons-vue' 
for (const [key, component] of Object.entries(ElementPlusIconsVue)) { 
    app.component(key, component) 
}

在要使用图标的地方,复制图标代码即可

<el-icon><Promotion /></el-icon>

导航切换页面

1.在view目录下自定义.vue页面,在router下index.ts(路由表)中设置访问该页面的path

2.复制导航条的代码

  • el-menu标签中,如果添加router属性值后,就能让index的值与router下index.ts(路由表)中的path相对应
<el-menu default-active="1-3" router class="el-menu-vertical-demo">
    <el-sub-menu index="one"> 
        <template #title>
            <el-icon> 
                <location />
             </el-icon>
		<span>Navigator One</span> 
        </template>
        <el-menu-item index="myPage">
            <el-icon> <Promotion /> </el-icon>
            菜单一 
        </el-menu-item> 
        <el-menu-item index="1-2">item 2</el-menu-item> 
        <el-menu-item index="1-3">item 3</el-menu-item> 
    </el-sub-menu> 
    <el-menu-item index="2"> 
        <el-icon> <Promotion /> </el-icon> 
        <span>Navigator Two</span> 
    </el-menu-item> 
</el-menu>

3.在适当的位置添加容器用于显示vue页面

<el-main> 
    <!-- 显示vue页面的容器 --> 
 	<RouterView /> 
</el-main>
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值