定制软件【Vue基础篇】学习vue就像打游戏一样简单

目录


前言

🐳定制软件对于看到这篇文章的小伙伴呢!定制软件肯定是即将到达四周目Vue篇了吧,定制软件从此刻开始正式踏入Vue篇,定制软件内容绝对真实有效,定制软件本栏会细致的将Vue定制软件划分为两大模块,基础篇,进阶篇。定制软件想要顺利通关vue定制软件篇首先要拥有三剑客,定制软件当然其他的node ajax定制软件法宝也会辅佐你通关的,定制软件在学习的途中如果遇到了问题,定制软件可以试着回顾一下之前的情节,定制软件以便于更好的推进主线剧情,准备出发!

一,初入Vue大陆

1.Vue的初体验

定制软件一套用于构建用户界面的渐 进式JavaScript框架

1.Vue的特点1

1.定制软件采用的是组件化模式,定制软件提高代码复用率且让代定制软件码更好维护。

2.定制软件声明式编码,让程序猿 / 定制软件媛无需直接操作DOM,定制软件提高开发效率。

3.使用虚拟DOM和优秀的Diff算法,尽量复用DOM节点。

2.引入vue

找到官网:

点击教程

定制软件然后选择安装,(定制软件这里有俩版本,一个是开发的,一个是生产的,定制软件一般我们使用vue.js进行学习)

定制软件这俩的区别就是有无提示的问题

 定制软件下载完成之后将vue.js定制软件文件放到我们的包里面并且引入

下载Vue扩展 提取码:1127

下载成功并且开启后就会显示这个vue的图标,这个可以更好的辅助我们进行vue的相关操作 

3.可能出现的问题

问题1:控制台出现提示

如何关闭呢?(打开vue.js文件然后CTRL+f查找 productionTip ,最后再将该语句的true改为false)也可以直接 写上这串代码 Vue. config. productionTip = false;

 问题2:出现404的错误

直接去比特冲将一张图片转换为ico图标的样式并且将名称改为favicon.ico即可

 问题3:啥错误提示也没看到

打开vscode点击插件,查找一个“ Live Serve”的插件即可

4.实例

这里遵循一对一原则,一个vue实例只能操作一个容器

  1. <body>
  2. <!-- 创建一个容器 -->
  3. <div id="root">
  4. <h1>hello,{{name}}</h1> <!-- 使用插值语法用双重花括号包裹{{}} 也就是【vue模板】-->
  5. </div>
  6. <h1>{{name}}</h1><!-- 这里的Vue实例只是接管了id名为root的容器,所以只能再该容器中使用 -->
  7. <script>
  8. // 创建Vue实例,直传一个参数
  9. new Vue({
  10. el: '#root',// el用于指定当前Vue实例为那个容器服务,值一般为css选择器字符串
  11. data: {
  12. name: 'Vue小嘎鱼'
  13. }
  14. })
  15. </script>
  16. </body>

注:使用Vue的第一步就是创建实例 ,容器里的代码在符合html规范的语法基础上新增了Vue的一些特殊语法,容器里的代码被称为[Vue模板],Vue实例和容器是一 一对应的,在实际开发中有且只有一个Vue实例并且会配合着组件起使用,{{js表达式}}且js表达式可以自动读取到data中的所有属性,如果data中的数据发生改变,那么页面中所有用到该数据的地方也会自动更新

5.模板语法

1.插值语法:

功能:用于解析标签体内容

写法: {{js表达式}},且可以直接读取到data中的所有属性。

2.指令语法:

功能:用于解析标签(包括:标签属性、标签体内容、绑定事件等)

例: v- bind:href="xx"或简写为 :href="xxx", xxx同样要写js表达式且可以直按读取到data中的所有属性。

注: Vue中有很多的指令,且形式都是: v-xxx(还有v-model,v-if等)

 

6.数据绑定

Vue中有2种数据绑定的方式

1.单向绑定(v-bind):数据只能从data传入页面。

2.双向绑定(v-model):数据不仅能从data传入页面,还可以从页面传入data

3.双向绑定一 般都应用在表单类元素上(如: input、 select等)

4.v-model:value可以简写为v- model,因为v- model默认收集的就是value值。

  1. <body>
  2. <div class="inp">
  3. <!-- 单向数据绑定只能从data流向页面,而双向数据绑定可以互相流动 -->
  4. 单向数据绑定:<input type="text" :value="name"><br>
  5. <!-- 注:v-model只能应用到表单类元素上 -->
  6. 双向数据绑定:<input type="text" v-model:value="name">
  7. </div>
  8. <script>
  9. new Vue({
  10. el: ".inp",
  11. data: {
  12. name: '山鱼'
  13. }
  14. })
  15. </script>
  16. </body>

7.连接容器的方法

  1. <body>
  2. <div class="one">
  3. <h1>你好,{{name}}</h1>
  4. </div>
  5. <script>
  6. const a= new Vue({
  7. // el:'.one', 第一种写法
  8. data:{
  9. name:'shanyu'
  10. }
  11. })
  12. a.$mount('.one')// 第二种写法
  13. </script>
  14. </body>

直接使用el更简单

 使用 实例使用对象原型里面的$mount也可以实现绑定 ,名.$mount('容器名')的方法更灵活

8.data的写法

分别为对象式函数式

  1. <script>
  2. new Vue({
  3. el: '.one',
  4. // 第一种对象式
  5. data: {
  6. name: '山鱼'
  7. },
  8. // 第二种函数式
  9. // 这里不可以使用箭头函数,箭头函数自身木有this
  10. data() {
  11. return {
  12. name: '山鱼'
  13. }
  14. }
  15. })
  16. </script>

二,模型

为什么要了解MVVM模型?其实Vue的尤大大也是收到了MVVM的启发,但并不完全使用MVVM,我们也可以在官网上看到这段话

vm

那MVVM到底代表着什么呢?

其中:M(model模型):其实就是data中的数据,V(View试图):模板,也就是DOM的页面,VM(试图模型ViewModel):Vue实例

其中的vm就是这个b蓝色框内的也就是ViewModel,他身上的所有属性方法vm都可以使用,包括原型对象内的属性方法也可以使用

三,数据代理

这里的数据代理为何物呢?通过一个对 象代理对另一个对 象中属性的操作(读/写)

1.Vue中的数据代理:通过vm对象来代理data对象中属性的操作

2.Vue中数据代理的好处:更加方便的操作data中的数据

3.基本原理:通过0bject . defineProperty( )把data对象中所有属性添加到vm上。为每一个 添加到vm上的属性,都指定个getter/setter,在getter/setter内部去操作(读/写) data中对应的属性。简单来说就是把data的属性全部都复制给了_data了一份,可以让vm进行使用

Object.defineProperty方法(给对象添加属性方法的一个方法)这个方法会传入三个参数分别是对象名,属性名,配置项。

  1.    <script>
  2.    let person = {
  3.        name:'山鱼',
  4.        sex:'男',
  5.   }    
  6.    Object.defineProperty(person,'address',{
  7.        value:18
  8.   })
  9.    console.log(person);
  10.    </script>

在这里我们可以看到,这个颜色稍微的有点变化(这里就是使用Object.defineProperty方法进行添加的,这里的address是不可以进行枚举的,即不参与遍历)

这里可以使用Object.keys()进行验证一下,结果的确没有拿到这个address(使用for....in也可以)

  1. <script>
  2. let person = {
  3. name:'山鱼',
  4. sex:'男',
  5. }
  6. Object.defineProperty(person,'address',{
  7. value:18
  8. })
  9. for(k in person){
  10. console.log(k);
  11. }
  12. console.log(Object.keys(person));
  13. console.log(person);
  14. </script>

如何让address参与遍历?【这里就使用了之前学过的 enumerable 只要将它的值改为true即可 】

enumerable : true (是否可以被枚举)

writable:true(是否可以修改属性)

configurable: true(是否可以删除改属性)

这四个基本配置项 的内容(包括value)他们的默认值为false

1.对数据进行读取和修改

这里用到了两个方法,get和set

  1. <script>
  2. let number = 19;
  3. let person = {
  4. name: '山鱼',
  5. sex: '男',
  6. }
  7. Object.defineProperty(person, 'address', {
  8. //当有人读取person的address属性时,get函 数(getter)就会被调用,且返回值就是age值
  9. get() {
  10. console.log('address属性已被读取');
  11. return number;
  12. },
  13. //当有人修改person的address属性时,set函数(setter)就会被调用,且 会收到修改的具值
  14. set(value) {
  15. console.log('address属性已被修改');
  16. number = value
  17. }
  18. })
  19. </script>

 2.事件修饰符

1.prevent:阻止默认事件(常用)

2.stop: 阻止事件冒泡(常用)

3.once:事件只触发一次(常用)

4.capture: 使用事件的捕获模式

5.self: 只有event.target是当前操作的元素是才触发事件

6.passive: 事件的默认行为立即执行,无需等待事件回调执行完毕

  1. <div id="user">
  2. <h1>欢迎来到{{name}}的博客之家</h1>
  3. <!-- 1,阻止默认事件 -->
  4. <a href="http://baidu.com" @click.prevent = "showInfo">点我不跳转</a>
  5. <!-- 2,阻止事件冒泡 -->
  6. <div class="one" @click = 'showInfo'>
  7. <button @click.stop = 'showInfo'>点我</button>
  8. </div>
  9. <!-- 3,事件只触发一次 -->
  10. <button @click.once = 'showInfo'>只能点一次哦</button>
  11. </div>
  12. <script>
  13. const vm = new Vue({
  14. el:'#user',
  15. data:{
  16. name:'山鱼',
  17. },
  18. methods:{
  19. showInfo(e){
  20. alert('泥嚎!同学')
  21. }
  22. }
  23. })
  24. </script>

3.

常用的按键别名:

回车=> enter ,删除=>delete(捕获“删除”和“退格”键) ,退出=> esc ,空格=> space ,上=>up ,下=> down ,左=> left ,右=> right

特殊的按键别名:

1.换行=> tab (特殊,必须配合keydown使用)

2.系统修饰键 ctrl,alt,shift,meta(meta就是win键也就是windows徽标)

注:配合keyup使用:按下修饰键的同时,再按下其他键,随后释放其他键,事件才被触发。配合keydown使用:正常触发事件。

  1. <div class="user">
  2. <h1>欢迎加入{{uname}}</h1>
  3. <!--.enter 就是按下回车触发事件,也成为按键别名-->
  4. <input type="text" placeholder="按下回车提示输入" @keyup.enter = 'showInfo'>
  5. <!--删除 del -->
  6. <input type="text" placeholder="按下del提示输入" @keyup.delete = 'showInfo'>
  7. <!-- 退出esc -->
  8. <input type="text" placeholder="按下ESC提示输入" @keyup.esc = 'showInfo'>
  9. <!-- 特殊按键别名 -->
  10. <input type="text" placeholder="一同按下ctrl+‘其他按键’并释放提示输入" @keyup.ctrl = 'showInfo'>
  11. <!-- 自定义别名 -->
  12. <input type="text" placeholder="按下回车提示输入" @keyup.huiche = 'showInfo'>
  13. </div>
  14. <script>
  15. // 也可以自定义按键别名
  16. Vue.config.keyCodes.huiche = 13;
  17. const vm = new Vue({
  18. el:'.user',
  19. data:{
  20. uname:'山鱼社区'
  21. },
  22. methods:{
  23. showInfo(e){
  24. console.log(e.target.value);
  25. }
  26. }
  27. })
  28. </script>

写在最后

点赞👍:您的赞赏是我前进的动力!收藏⭐:您的支持我是创作的源泉!

评论✍:您的建议是我改进的良药!山鱼🦈社区:欢迎大家加   !

我依旧是小山🐟并且依然在逐渐成长,励志成为大撒鱼,感谢大家的一路支持

网站建设定制开发 软件系统开发定制 定制软件开发 软件开发定制 定制app开发 app开发定制 app开发定制公司 电商商城定制开发 定制小程序开发 定制开发小程序 客户管理系统开发定制 定制网站 定制开发 crm开发定制 开发公司 小程序开发定制 定制软件 收款定制开发 企业网站定制开发 定制化开发 android系统定制开发 定制小程序开发费用 定制设计 专注app软件定制开发 软件开发定制定制 知名网站建设定制 软件定制开发供应商 应用系统定制开发 软件系统定制开发 企业管理系统定制开发 系统定制开发