个人笔记:Vue开发环境搭建

Vue开发环境安装:

****************

https://v3.cn.vuejs.org/guide/installation.html#%E5%91%BD%E4%BB%A4%E8%A1%8C%E5%B7%A5%E5%85%B7-cli

1、下载安装nodejs,带了npm

2、设置淘宝镜像:npm config set registry https://registry.npm.taobao.org

3、先装yarn

npm install -g yarn

4、创建项目

yarn create @vitejs/app 项目名称

然后按照提示依次执行

cd 项目名称

yarn

yarn dev

就可以在浏览器中调试网页了,修改代码后就热更新。

7、用vscode做代码编辑

*******************

增加 vue-router支持

1、yarn生成的代码components/HelloWorld.vue是组件的代码。

页面需要在src/views文件夹下,需要首先创建views文件夹,并且在views下创建一个Page1.vue,代码如下

<template> 

  <h1>{{name}}</h1>

  <h1>{{age}}</h1>

  <button @click="sayName">Page 1按钮</button>

</template>

<script lang="ts">

import {ref,computed} from 'vue'

export default {

  name: 'Page1',

  setup(){

    const name = ref('zhangsan')

    const birthYear = ref(2000)

    const now = ref(2020)

    const age = computed(()=>{

      return now.value - birthYear.value

    })

    const sayName = () =>{

      name.value = 'I am ' + name.value

    }

    return {

      name,

      sayName,

      age

    }

  }

}

</script>

ref和reactive的主要区别:

reactive主要定义复杂的数据类型;ref主要定义基本类型。ref是对reactive的二次包装。

再创建一个Page2.vue,内容稍微变一下

2、项目根目录执行:yarn add vue-router@4 添加支持

3、在src下创建route文件夹和下面的index.js:

import { createRouter,createWebHashHistory} from "vue-router";

import Page1 from "../views/Page1.vue";

import Page2 from "../views/Page2.vue";

const routes = [

  { path: "/", redirect: "/Page1" },

  {

    path: "/Page1",

name:"Page1",

    component: Page1

  },

  {

    path: "/Page2",

name:"Page2",

    component: Page2

  }

]

const router = createRouter({

  history: createWebHashHistory(),

  routes: routes

});

export default router

4、修改一下main.js

增加一个import router from './route'

再增加一个

app.use(router)

完成后main.js的内容如下:

import { createApp } from 'vue'

import App from './App.vue'

import router from './route'

const app = createApp(App)

app.use(router)

app.mount('#app')

5、在App.vue中的template中增加

  <div><router-link to="Page1">Page1</router-link></div>

  <div><router-link to="Page2">Page2</router-link>

  </div>

  <router-view />

  其中<router-view />就是显示路由内容用的。


6、通过代码做页面路由跳转的方式

需要先:import {useRouter } from 'vue-router'

点击跳转按钮的代码:

const router = useRouter();

const goto2=()=>{

router.push({name: 'Page2'});

}

useRouter()一定要放到setup中,不要放到goto2中。

7、router传递参数:

页面读取名字为id的参数值:

const router = useRouter();

var id = router.currentRoute.value.query.id;

alert(id);

1)通过代码跳转:

router.push({name: 'Page2',query:{id:6}});

2)通过router-link传递参数

<router-link :to="{path:'Page2',query:{id:8}}">Page2</router-link>

注意to要用:to这种绑定的值。要写成path:""这样的语法

8、Vue也支持多页面方式,但是坑比较多,Vue主推的就是用router实现的SPA,因此这次做项目也是用SPA,然后用vue本身的服务器端渲染机制可以支持浏览器端的多页面以及SEO。

*************************

Vue3在事件中给模型赋值,因为不直接为reactive变量赋值,而是为reactive内部的变量的变量赋值,这样才能利用响应特性。因此不建议用如下这种多个单独的对象:

const person=reactive({});

const dog=reactive({});

的方式,因为在代码中无法为person直接赋值,除非person.name="zzz";但是不能把ajax等返回的对象person=resp.data这种整体赋值。

所以,最好把所有的对象都放到一个大对象中,如下:

import {reactive,onMounted} from 'vue'

setup(){   

const state= reactive({person:{},searchRequest:{}});

onMounted(function(){

  state.person = {name:"yzk",age:18};

});

return {state};

}

和Vue2不一样,onMounted里不能使用this,结果为null,改成箭头函数也一样,因此访问模型对象直接state.person这样访问就行了,不用this.state这样访问。

为了避免错误的直接给state赋值,我们一般把state声明为const。

*******************************

Vue3中使用ajax加载数据:

1、安装:yarn add axios

2、

<template>

  <div>

<div>姓名:{{state.person.name}}</div>

<div>{{state.person.isVIP?"VIP":"普通会员"}}</div>

<div>注册时间:{{state.person.createdTime}}</div> 

  </div>

</template>

<script>

import axios from 'axios'

import {reactive,onMounted} from 'vue'

export default {

  name: 'Test',

  setup(){   

    const state= reactive({person:{},searchRequest:{}});

    onMounted(async ()=>{

      let demo1 = await axios.get( 'https://localhost:44360/api/Test/Demo1');//服务器端要启用CORS

      state.person = demo1.data;

    });

    return {state};

  }

}

</script>

*************************

vue3的常用难点:https://www.cnblogs.com/little-oil/p/14699396.html

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,029评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,238评论 3 388
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,576评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,214评论 1 287
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,324评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,392评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,416评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,196评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,631评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,919评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,090评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,767评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,410评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,090评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,328评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,952评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,979评论 2 351

推荐阅读更多精彩内容