前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Vue.js 2.0 学习重点记录

Vue.js 2.0 学习重点记录

作者头像
蓓蕾心晴
发布于 2018-04-12 05:54:55
发布于 2018-04-12 05:54:55
4.1K00
代码可运行
举报
文章被收录于专栏:前端小叙前端小叙
运行总次数:0
代码可运行

Vue.js兼容性

Vue.js.js 不支持 IE8 及其以下版本,因为 Vue.js.js 使用了 IE8 不能模拟的 ECMAScript 5 特性。 Vue.js.js 支持所有兼容 ECMAScript 5 的浏览器。

Vue.js安装

安装方式有两种:

1、直接下载用script标签引入(推荐引入开发版本,压缩版本会失去错误提示和警告)

2、使用cdn方法引入

3、npm安装

   npm安装的前提需要安装了nodejs,这里推荐nvm安装nodejs

附上一小段nvm使用的命令:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ nvm install v6.10.2

   $ nvm list 

    * 6.10.2 (Currently using 64-bit executable)

   $ nvm use 6.10.2

   Now using node v6.10.2 (64-bit)

   $ node -v

   v6.10.2

   $ npm -v

   3.10.10

  

   $ npm install Vue.js

   或者:

   $ cnpm install bower

   $ bower install Vue.js

注意:可以使用淘宝定制的 cnpm (gzip 压缩支持) 命令行工具代替默认的 npm:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ npm install -g cnpm --registry=https://registry.npm.taobao.org

这样就可以使用 cnpm 命令来安装Vue.js等模块了:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ cnpm install vue

Vue.js脚手架安装

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 全局安装 Vue.js-cli

$ npm install --global Vue.js-cli

# 创建一个基于 webpack 模板的新项目

$ Vue.js init webpack my-project

# 切换到项目目录,安装依赖

# 下面出现的所有提示 直接回车则选择默认选项或者yes

$ cd my-project

$ npm install

# 运行该项目

$ npm run dev

DONE  Compiled successfully in 4388ms

> Listening at http://localhost:8080

* 这里默认8080端口,如果想要更改指定端口,找到根目录下config文件夹---index.js

dev: {  

  env: require('./dev.env'),  

  port: 8080,  

  autoOpenBrowser: true,  

  assetsSubDirectory: 'static',  

  assetsPublicPath: '/',  

  proxyTable: {},  

  cssSourceMap: false  

}  

  port可以改成我们指定的端口,这里不仅可以改变端口,还可以根据需要改变其他配置信息。

建好Vue.js项目之后,想要再次localhost:8080下运行起来,在cmd命令框,进入项目根目录文件夹路径下,然后

npm run dev,则他会运行dev-sever.js文件,之后运行成功,页面自动打开。

Vue.js起步

var app1=new Vue.js({

            el:"#app1",

            data:{

                message:"hahahha"+new Date()

            }

        });

Vue.js 实例化代码可以直接写new Vue.js,也可以赋个值,当实例化的Vue.js赋值给一个变量之后,在控制台可以直接通过改app1.message等代码,在浏览器可以直接看到页面效果。

<div id="app3">

        <ol>

            <li v-for="todo in todos">{{todo.text}}</li>

        </ol>

</div>

var app3 = new Vue.js({

           el:"#app3",

           data:{

                todos:[

                    {text:"aaa"},

                    {text:"bbb"},

                    {text:"ccc"},

                    {text:"ddd"}

                ]

           }

        });

  **这里注意:循环的列表项是加载列表标签li标签上的,不是列表盒子上,在控制台输入

  app3.todos.push({text:"eee"});  //5

  app3.todos.push({text:"fff"}); //6

页面中会直接显示push进来的列表项,控制台打印出数组的长度

var app4 = new Vue.js({

           el:"#app4",

           data:{

               message:"我要逆转了"

           },

            methods:{

                reverseMsg:function () {

                    this.message=this.message.split("").reverse().join("");

                }

            }

        });

**这里注意:methods方法要加s,否则报错:

父组件向子组件传递数据,使子组件接受一个属性:

<div id="app6">

        <ol>

            <hello v-for="item in fruits" :todo="item"></hello>

        </ol>

</div>

//定义新组件

        Vue.js.component('hello,{

            props:['todo'],

            template:"<div>{{todo.text}}</div>"

        });

        var app6 = new Vue.js({

            el:"#app6",

            data:{

                fruits:[

                    {text:"apple"},

                    {text:"apple2"},

                    {text:"apple3"},

                    {text:"apple4"}

                ]

            }

        })

**关键点:使用 v-bind 指令将属性传到每一个重复的组件中,缤纷切让它等于遍历出来的元素。

Vue.js脚手架使用

webstorm eslint配置:推荐一篇文章:http://blog.csdn.net/whitehack/article/details/52422873

src目录是我们要开发的目录:

assets: 放置一些图片,如logo等。

components: 目录里面放了一个组件文件,可以不用。

App.vue.js: 项目入口文件,我们也可以直接将组建写这里,而不使用 components 目录。

main.js: 项目的核心文件。

**使用要点:在App.Vue.js中导入components组件文件夹下写好的组件,在模板里使用组件,导出默认,导出的名字为模板最外层元素的id或者class名称,components写组件名称;单独的组件写好后也要记得导出默认,导出的名字为模板最外层元素的id或者class名称。[这些都遵循了ES6语法格式]

<script>

// 导入组件

import Hello from './components/Hello'

export default {

  name: 'app',

  components: {

    Hello

  }

}

</script>

**在我第一次使用时eslint报错:

错误1:导入的地址必须使用单引号

错误2:在从导出时components属性冒号之后要加空格,再写大括号

错误3:components属性下写组件名称,应该缩进4个空格

错误4:在Apple.vue中多写了个s[个人不细心,此类错误尽量避免]

当这些错误都修改完成之后,页面正常显示出来了:[eslint检查比较严格,如果想要关闭可以自行百度]

Vue.js具体使用

Vue.js 条件

v-if、v-else-if、v-else

条件语句的作用:通过判断不同的条件,显示不同的区块,类似php条件语句的用法,同样可以嵌套v-else-if(2.1.0新增)。

v-show

控制显示隐藏,不支持<template>语法,也不支持 v-else。

Vue.js循环

用法类似for in循环,所以指令为v-for,(这里切记循环列表项写在循环的单个项目元素上),支持template模版使用。

用法三种:

item in items

(value, key) in object

(value, key, index) in object

这里有一个特殊的用法:

可以迭代整数:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<div id="app">

  <ul>

    <li v-for="n in 10">

     {{ n }}

    </li>

  </ul>

</div>
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<script>

new Vue({

  el: '#app'

})

</script>

输出:

如果需要非常频繁地切换,则使用 v-show 较好;如果在运行时条件不太可能改变,则使用 v-if 较好。当 v-if 与 v-for 一起使用时,v-for 具有比 v-if 更高的优先级。

Vue.js 计算属性(对比angular和react的优点之一)

computed vs methods

我们可以使用 methods 来替代 computed,效果上两个都是一样的,但是 computed 是基于它的依赖缓存,只有相关依赖发生改变时才会重新取值。而使用 methods ,在重新渲染的时候,函数总会重新调用执行。

可以说使用 computed 性能会更好,但是如果你不希望缓存,你可以使用 methods 属性。

computed 默认有getter方法,可以自己定义一个setter方法

Vue.js 样式绑定

v-bind: 可以绑定如下几种:

对象语法

数组语法

Vue.js class绑定:v-bind:class=”{ }”

Vue.js style(内联样式): v-bind:style=”{ }”

示例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<div id="app12">

        <div v-bind:class="[isActive?active:'',errorClass]">我绑定了不同的class</div>

        <div v-bind:class="{active:isActive,errorClass:hasError}">我绑定了不同的class</div>

        <div v-bind:class="classObject">我绑定了不同的class</div>

        <div v-bind:class="{active:isActive}">我绑定了不同的class</div>

</div>
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var app12 = new Vue({

            el:"#app12",

            data:{

                active:"active",

                errorClass:"errorClass",

                isActive:true,

                classObject: {

                    'active': true,

                    'errorClass': true

                },

                hasError:true

            }

        });

 

**注意:

以上从上到下依次为:

u 数组绑定class,数组绑定的class,数组元素是对象的名称,在vue data里要写对象的值即真正的class名才可以

u 多个对象属性绑定class,

u 直接绑定一个对象绑定class,在vue data里写对象属性名的时候,可加引号可不加,但是有中划线的时候必须加。

u 单个对象属性绑定class,根据vue中isActive的状态改变

Vue.js表单控件绑定

v-model 会根据控件类型自动选取正确的方法来更新元素。

绑定 value

对于单选按钮,勾选框及选择列表选项, v-model 绑定的 value 通常是静态字符串(对于勾选框是逻辑值):

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<!-- 当选中时,`picked` 为字符串 "a" ,单选按钮-->

<input type="radio" v-model="picked" value="a">

<!-- `toggle`truefalse ,多选框-->

<input type="checkbox" v-model="toggle">

<!-- 当选中时,`selected` 为字符串 "abc",select选择框 -->

<select v-model="selected">

  <option value="abc">ABC</option>

</select>

但是有时我们想绑定 value 到 Vue 实例的一个动态属性上,这时可以用 v-bind 实现,并且这个属性的值可以不是字符串。

复选框如果是一个则为逻辑值,如果是多个则绑定到同一个数组。

Vue.js组件

以下实例中将 v-bind 指令将 todo 传到每一个重复的组件中:

Prop 实例

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<div id="app">

    <ol>

    <todo-item v-for="item in sites" v-bind:todo="item"></todo-item>

      </ol>

</div> 
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<script>

Vue.component('todo-item', {

  props: ['todo'],

  template: '<li>{{ todo.text }}</li>'

})

new Vue({

  el: '#app',

  data: {

    sites: [

      { text: 'Runoob' },

      { text: 'Google' },

      { text: 'Taobao' }

    ]

  }

})

</script>

注意: prop 是单向绑定的:当父组件的属性变化时,将传导给子组件,但是不会反过来。

**这里绑定todo属性是因为父组件不能直接把数据传到自定义的子组件上,需要绑定一个属性作为桥梁。

报错信息

Vue.js2.0 不支持

$index

报错:

Vue.js.js:569 [Vue.js warn]: Property or method "$index" is not defined on the instance but referenced during render. Make sure to declare reactive data properties in the data option.

(found in <Root>)

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017-06-21 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Web前端-Vue.js必备框架(三)
vue是一款渐进式javascript框架,由evan you开发。vue成为前端开发的必备之一。
达达前端
2019/07/03
1.7K0
Web前端-Vue.js必备框架(三)
典型 MVVM 前端框架 Vue
绑定 DOM 文本到数据,也可以绑定 DOM 结构到数据 没有触碰 DOM,DOM 操作都由 Vue 来处理,你编写的代码不需要关注底层逻辑。
江米小枣
2020/06/15
5K0
Vue入门
一、引入vue 方法一:下载vue.js,然后像引用jquery一样,在HTML中使用script标签引入 <script src="https://unpkg.com/vue/dist/vue.js"></script> 方法二:使用架构工具,推荐使用npm安装后,然后可以直接用作 AMD 模块 var Vue = require('Vue'); 二、声明式渲染 hello World实例(新建html将如下内容放在body中) <div id="app">{{ message }}</div> <scr
小古哥
2018/03/08
1.2K0
Vue.js学习笔记(一)
目前我司的后端主要是用PHP来写,发现我们后端的html+js没有采用组件的方式来做,导致代码之间重复率非常高,很难维护,举一个简单的粟子,比如现在我们有两个页面,创建和修改页面,这两个页面都有一个选择时间的控件(datePicker),由于我们没有采用组件化,我们需要分别在两个页面的html+js+css里分别写两遍同样的代码
kunge
2019/12/22
1.1K0
【一起来烧脑】一步学会Vue.js系统
Vuejs是一个构建数据驱动的web界面的库,通过api实现响应的数据绑定和组合的视图组件,Vue.js的核心是一个响应的数据绑定系统,它让数据与DOM保持同步非常简单,一旦创建了绑定,DOM 将与数据保持同步。
达达前端
2019/07/18
1.3K0
【一起来烧脑】一步学会Vue.js系统
开心档之Vue教程1
class 与 style 是 HTML 元素的属性,用于设置元素的样式,我们可以用 v-bind 来设置样式属性。
爱学iOS的小麦子
2023/03/02
1.9K0
【Vue.js】002-Vue.js起步
Vue.js 的核心是一个允许采用简洁的模板语法来声明式地将数据渲染进 DOM 的系统;
訾博ZiBo
2025/01/06
1600
【Vue.js】002-Vue.js起步
vue 的一些指令记录
GitHub:https://github.com/vuejs/vue star:31.6k
王小婷
2022/09/28
8810
vue 的一些指令记录
老司机读书笔记——Vue学习笔记
在默认情况下,v-model 在每次 input 事件触发后将输入框的值与数据进行同步 (除了上述输入法组合文字时)。你可以添加 lazy 修饰符,从而转变为使用 change 事件进行同步:
老司机Wicky
2018/08/22
3.5K0
老司机读书笔记——Vue学习笔记
介绍-vuejs官网学习笔记
       前言:这两天把vuejs官方文档都看了一遍(路由的文档还没看),现在回过头来再结合英文文档重新看一遍 ,为的是学下英文,然后总结性的写一下。尽管vuejs的官方文档写得详细又好,但是总觉得吧,知识这东西还是得自己跟着文档把代码手敲一遍,把要点写写,这样才能把别人的知识变成自己的。感觉自己要学的东西还有很多,长路漫漫,上下求索吧!
Ewall
2018/09/04
5.5K0
(12)打鸡儿教你Vue.js
使用 $on(eventName)监听事件 使用 $emit(eventName) 触发事件
达达前端
2019/07/03
4220
(12)打鸡儿教你Vue.js
前端之Vue.js库的使用
Vue.js是前端三大新框架:Angular.js、React.js、Vue.js之一,Vue.js目前的使用和关注程度在三大框架中稍微胜出,并且它的热度还在递增。
汪凡
2019/03/01
5.3K0
前端之Vue.js库的使用
(31)Vue安装
https://github.com/vuejs/vue-devtools#vue-devtools
达达前端
2019/07/10
1.9K0
(31)Vue安装
vue2.0教程
或者使用CDN <script src="https://unpkg.com/vue/dist/vue.js"></script>
lilugirl
2019/05/28
8730
vue2.0教程
前端MVC Vue2学习总结(一)——MVC与vue2概要、模板、数据绑定与综合示例
 一、前端MVC概要 1.1、库与框架的区别 框架是一个软件的半成品,在全局范围内给了大的约束。库是工具,在单点上给我们提供功能。框架是依赖库的。Vue是框架而jQuery则是库。 1.2、AMD与C
张果
2018/01/04
3.8K0
前端MVC Vue2学习总结(一)——MVC与vue2概要、模板、数据绑定与综合示例
Vue3.0快速入门(速查)
Vue也是基于状态改变渲染页面,Vue相对于React要好上手一点。有两种使用Vue的方式,可以直接导入CDN,也可以直接使用CLI创建项目,我们先使用CDN导入,学一些Vue的基本概念。
憧憬博客
2020/07/21
8730
Vue3.0快速入门(速查)
Web前端-Vue.js必备框架(一)
什么是Vue.js?是目前最火的框架,React是最流行的框架,打包工具Webpack,目前三大主流Vue.js,Angular.js,React.js框架。
达达前端
2019/07/03
4.1K0
Web前端-Vue.js必备框架(一)
VUE 入门基础(2)
二,起步 引用方式可以使用  vue-cli     <script src="https://unpkg.com/vue/dist/vue.js"></script>     声明式渲染       <div id="app">           {{ message }}       </div>       var app = new Vue({         el:'#app',         data: {           message:  'Hello Vue'         }
用户1197315
2018/01/22
8340
前端就业之vue介绍
是一套用于构建用户界面的渐进式框架。vue的设计可以自底层向上逐层应用。vue的核心库只关注视图层。可以为单页面应用提供驱动。
张哥编程
2024/12/19
1320
1.1、文本插值
Vue 使用一种基于 HTML 的模板语法,使我们能够声明式地将其组件实例的数据绑定到呈现的 DOM 上。所有的 Vue 模板都是语法层面合法的 HTML,可以被符合规范的浏览器和 HTML 解析器解析。
张果
2022/11/12
9K0
1.1、文本插值
相关推荐
Web前端-Vue.js必备框架(三)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验