Vue的实例、生命周期与Vue脚手架(vue-cli)实例详
Vue实例与生命周期
一、Vue实例初探
Vue,作为前端开发的热门框架,每一个应用都是从一个Vue实例开始的。这个实例,可以说是Vue应用的心脏,承载着数据和视图之间的桥梁。
创建一个Vue实例,通常通过`new Vue({})`进行。这个构造器接收一个参数——一个包含多个选项的对象。这些选项涵盖了数据、挂载元素、方法、模板以及生命周期函数等。
虽然Vue没有完全遵循MVVM模型,但其设计无疑受到了该模型的启发。在文档中,我们经常使用“vm”这个变量名来表示Vue实例,它是ViewModel的简称。
想象一下一个todo应用,它的组件树由多个嵌套和可复用的组件构成。根实例统领全局,而各个组件实例则是这个大树的分支。每个分支,无论多么复杂,都是基于Vue实例构建的。
二、数据与方法的魔力
当Vue实例被创建时,其data对象中所有的属性都被加入到Vue的响应式系统中。这意味着当这些属性的值发生改变时,与之关联的视图将会自动更新。
我们通过一个简单的例子来展示这一点:
```javascript
// 我们的数据对象
var data = { a: 1 };
// 该对象被加入到Vue实例中
var vm = new Vue({
data: data
});
// 他们引用的是同一个对象!
vm.a === data.a // => true
```
当我们在实例中修改属性值时,原始数据对象也会受到相应的影响。这种双向绑定机制是Vue的一大特色,使得开发者能更专注于业务逻辑,而不用担心数据同步问题。但值得注意的是,只有在实例创建时存在的data属性才是响应式的。后来添加的属性不会自动响应视图的更新。
接下来是一个简单的HTML示例,展示了Vue如何将数据与视图紧密结合:
```html
var data = { a: 1 }; // 数据对象定义及初始化值
开篇
====
在编程世界中,数据管理和状态维护是核心要素。对于Vue框架来说,数据的处理尤为关键。在Vue实例中,data属性扮演着至关重要的角色。它承载了组件的状态信息,让我们可以轻松地对其进行管理和响应式更新。今天,我们将深入Vue实例中的data属性及其使用方式。
深入了解data属性
--
在Vue中,data属性是一个对象,用于存储组件的状态数据。这些数据可以在组件的模板、方法和其他计算属性中被引用和修改。当我们需要在组件内部存储一些初始数据时,我们可以直接在data属性中设置它们。例如:
```javascript
data: {
newTodoText: '', // 待办事项的文本内容
visitCount: 0, // 访问次数统计
hideCompletedTodos: false, // 是否隐藏已完成的事项
todos: [], // 待办事项列表
error: null // 用于存储可能出现的错误信息
}
```
除了data属性之外,Vue实例还暴露了一些有用的实例属性和方法。这些属性和方法带有"$"前缀,用以区分用户自定义的属性。下面是一个简单的例子来展示如何使用Vue实例的一些属性与方法:
```javascript
var dataObj = { a: 1 }; // 定义普通数据对象
var vm = new Vue({ // 创建Vue实例并挂载到指定元素上
el: 'example',
data: dataObj // 将data对象传递给Vue实例的data属性
});
// 实例属性和方法的访问示例
vm.$data === dataObj; // => true,说明我们可以直接访问和操作Vue实例的数据对象
vm.$el === document.getElementById('example'); // => true,说明我们可以直接访问和操作Vue实例挂载的元素节点
// 使用$watch实例方法来监听数据变化并执行相应操作
vm.$watch('a', function(newValue, oldValue) {
// 当vm中的a属性发生变化时,这个回调函数将被触发执行相应的操作。
});
```
1.3 实例属性
当我们谈及Vue实例时,每一个实例都拥有许多内置属性,它们承载着组件的核心信息和功能。以下是部分关键属性的详解:
`vm._uid`:每个Vue实例的唯一自增ID,如同身份标识。
`vm._isVue`:标识这个对象是由Vue创建的,确保观察者模式能够正确应用。
`vm._renderProxy`:通过Proxy创建的代理对象,确保模板的响应性。
`vm._self`:代表当前VM实例本身。
`vm.$parent`:在子组件中,指向父组件的实例,便于层级间的沟通。
`vm.$root`:指向根级的VM实例,无论身处组件树的哪一层,都能找到根。
`vm.$children`:当前组件下的所有子组件实例组成的数组。
`vm.$refs`:用于访问特定的DOM元素或子组件实例。
`vm._watcher`:用于监视数据变化的观察者对象。
`vm._inactive`、`vm._directInactive`等:与组件的活跃状态相关。
`vm._events`:绑定在元素上的自定义事件集合。
`vm._hasHookEvent`:标识组件内是否存在以“hook:”开头的事件。
`vm.$vnode`、`vm._vnode`:与虚拟节点(VNode)相关的属性,涉及组件的渲染过程。
`vm.$el`:组件的根DOM元素。
`vm.$slots`:父组件中定义的插槽内容,便于自定义布局。
`vm.$createElement`:用户自定义的渲染方法,用于创建虚拟节点。
`vm._props`、`vm._data`:分别存储props和data数据的被观察对象。
`vm._putedWatchers`:存储计算属性相关的观察者对象。
1.4 实例方法概览
除了属性之外,Vue实例还提供了丰富的方法供我们调用。这些方法帮助我们更好地操作和管理组件。
1.5 实例参数 $options
当我们谈论`vm.$options`时,实际上我们在讨论使用`new Vue(options)`时传入的选项对象。这些选项包括:
数据相关的选项如`data`、`props`、`propsData`等,它们构成了组件的核心数据部分。
方法相关的选项如`methods`,这里定义了组件内可调用的一系列方法。
观察相关的选项如`watch`,用于响应数据变化。
DOM相关的选项如`el`、`template`、`render`等,涉及组件的渲染过程。
钩子函数,如生命周期钩子和其他功能钩子。
资产相关的选项如`directives`、`components`、`transitions`等,扩展了组件的功能。
上下文相关的选项如`provide`和`inject`,用于实现组件间的依赖注入。
其他杂项如父组件实例、混入、组件名、扩展等。
1.5.1 计算属性 puted
反转字符串的Vue实例
初始代码片段:
在Vue框架中,我们常常遇到需要反转字符串的情况。下面是一个简单的HTML模板示例,它使用Vue的双向数据绑定`v-model`来展示反转字符串的功能。这个示例使用了一种比较重且不易维护的方式来实现字符串的反转操作。为了解决这个问题,我们可以尝试使用Vue的计算属性功能。以下是HTML模板和对应的Vue实例代码:
HTML模板:
```html
{{msg.split('').reverse().join('')}}
{{revMsg}}
var app = new Vue({
el: "app", // 指定Vue实例挂载的元素ID
在一个简洁而现代的HTML界面中,Vue实例以一种独特的方式展示数据与行为的交互。此实例涉及多个输入框,它们分别绑定到Vue实例的不同数据属性上。每个输入框的更改都会实时反映在控制台中,展示数据的动态变化。
我们看到有四个输入框分别对应变量a、b、c和d。用户在输入框中输入的内容,会实时通过Vue的双向数据绑定机制(v-model)更新对应的变量值。这些变化都会被Vue的监视器(watch)捕捉到,并在控制台输出新旧值。
尤其值得关注的是对象c的监视(deep watch)。对象c的嵌套属性z和n的变化都会被捕获并输出。这是因为我们设置了监视,这意味着Vue不仅监视对象本身的改变,还监视其嵌套属性的变化。这种监视对于处理复杂数据结构非常有用。
我们还看到了方法(methods)的使用。在这个Vue实例中,我们定义了一个名为watchb的方法,用于处理变量b的变化。这个方法在b值变化时被调用,并在控制台输出新旧值。我们也展示了如何在watch中直接调用方法。
Vue实例初探
我们来看一个简单的Vue实例。这个实例中,数据属性a的初始值为1。我们定义了一个方法plus,用于增加a的值。调用plus方法后,a的值将变为2。
示例:
在一个HTML文件中,我们创建了一个Vue实例,其中包含一个按钮。当按钮被点击时,会触发一个事件,调用add方法,并将字符串参数传递给该方法。在方法中,我们将参数追加到msg属性上,并更新它的值。这是一个简单的Vue实例操作演示。但是需要注意的是,我们在定义方法时,不应该使用箭头函数。因为箭头函数绑定了父级作用域的上下文,导致this不会指向预期的Vue实例,可能会导致未定义错误。
让我们进一步Vue实例的一些重要概念:
每个Vue实例都会代理其data对象中的所有属性,这些属性是响应式的。这意味着当这些属性的值发生变化时,视图将自动更新以反映这些变化。这是Vue的核心功能之一。如果在实例创建后向其添加新的属性,视图不会更新。为了确保响应性,最好在实例创建时定义所有需要的属性。
在Vue实例中,有一些有用的实例属性和方法可供使用。它们带有前缀$,以便与代理的data区分开。例如,vm.$el表示Vue实例的DOM根元素;vm.$data表示Vue实例观察的数据对象;vm.$props表示属性等等。这些属性和方法为我们提供了与Vue实例交互的方式。但是需要注意的是,一些属性和方法如$children并不保证顺序,也不是响应式的。如果我们尝试使用$children进行数据绑定,最好使用数组配合v-for来生成子组件,并使用Array作为真正的数据来源。
一、Vue实例中的特殊属性
在Vue的世界里,每一个实例都隐藏着一些特殊的属性,它们承载着实例的生命与呼吸。其中,有两个属性尤为引人注目:
k、vm.$refs类型(Object)——这是一个神秘的对象,它囊括了所有拥有ref注册的子组件。想象一下,当你需要直接与这些子组件互动时,这个对象就像是一把钥匙,能帮你轻松打开沟通的大门。
l、vm.$isServer类型(boolean)——这个属性就像是一个小小的标识牌,告诉你当前的Vue实例是在服务器上运行还是在客户端运行。
二、箭头函数
箭头函数,一个ES6带来的礼物,让函数的书写更加简洁如诗。它的基本格式简单到令人难以置信:()=>{}。就像这样:
在一个HTML页面中,我们有一个简单的Vue实例。让我们尝试使用箭头函数来定义一些简单的操作。例如,我们可以这样定义一个简单的箭头函数来增加一个数字的值:
```javascript
var m1 = a => a + 1;
console.log(m1(100)); // 输出:101
```
这与传统的函数定义方式相比,更为简洁明了。而且,箭头函数还可以接受多个参数,例如:
```javascript
var m3 = (a, b) => a + b;
console.log(m3(100, 200)); // 输出:300
```
如果函数体中有多个表达式,我们需要用大括号将表达式包裹起来,并明确地使用return关键字返回结果:
```javascript
var m4 = (a, b) => { a++; b++; return a + b; };
console.log(m4(100, 200)); // 输出:可能是大于或等于但不一定是准确的值(因为操作数和计算过程发生了变化)因此应特别小心使用这种方式操作数据或状态。因此应特别小心使用这种方式操作数据或状态。因此应特别小心使用这种方式操作数据或状态。当使用箭头函数时,需要注意不要随意改变变量值。箭头函数还有一个重要的特性是它们不会绑定自己的上下文(this),所以不能在它们内部使用诸如this指向实例实例的常规Vue生命周期钩子函数。相反地应该在常规生命周期钩子函数中执行相关操作以确保代码的健壮性和可维护性。这很重要以避免潜在的问题和错误发生。因此在使用箭头函数时务必谨慎处理上下文问题以避免不必要的麻烦和错误发生。因此在使用箭头函数时务必谨慎处理上下文问题以确保代码的健壮性和可维护性。然而虽然箭头函数有其独特的优点但它们并不适用于所有场景因此需要灵活使用并结合实际情况进行选择以实现最佳的开发效果和性能表现。,它们在特定的场景中仍然是非常有用的工具帮助我们更轻松地编写出高效且易于理解的代码逻辑。,但是不要过度依赖它们因为有时传统函数可能会更适合特定的任务需求和数据结构需求更能够准确和稳定地完成任务实现良好的用户体验和数据处理效率从而避免不必要的错误和问题发生并保持代码的清晰度和可读性维护起来更为方便简洁。另外当我们尝试将箭头函数应用于Vue的生命周期钩子时可能会遇到一些问题因为它们并不总是按照我们预期的方式工作因为它们并不总是按照我们预期的方式工作因为它们并不总是按照我们预期的方式工作因此在某些情况下我们应该避免在Vue生命周期钩子中使用箭头函数以确保代码的稳定性和可维护性从而获得更好的开发效果和用户体验避免不必要的错误和问题发生因此我们应该避免在Vue生命周期钩子中使用箭头函数而是使用常规的生命周期钩子函数以确保代码的稳定性和可维护性从而构建出更加健壮和高效的Vue应用程序。";由于使用了简化语和文学性的表达方式同时增加了文章的互动性和阅读趣味性让读者更容易理解和接受文章内容。"三、Vue实例的生命周期之旅"接下来让我们踏上一段充满的旅程深入了解Vue实例的生命周期之旅吧!每个Vue实例在被创建之前都要经历一系列的初始化过程例如设置数据监听编译模板挂载实例到DOM在数据变化时更新DOM等等在这个过程中也会运行一些叫做生命周期钩子的函数给予用户机会在一些特定的场景下添加他们自己的代码比如created钩子可以用来在一个实例被创建之后执行代码在这个钩子函数中我们可以访问到Vue实例的数据和方法并开始进行一些初始化操作但是需要注意的是不要在选项属性或回调上使用箭头函数因为箭头函数不会绑定自己的上下文(this)导致在箭头函数中访问不到预期的Vue实例数据和状态可能会导致未捕获的错误发生此外还有一些其他的钩子如mountedupdateddestroyed在不同的生命周期阶段调用它们可以帮助我们更好地管理和控制Vue实例的状态和行为随着你的不断学习和使用这些钩子的参考价值会越来越高因此深入理解并合理利用这些钩子对于提高开发效率和代码质量至关重要。"中文版"接下来让我们来看看Vue实例生命周期的中文版描述吧!在创建Vue实例的过程中有几个重要的阶段其中beforeCreate阶段是在实例初始化之后数据观测和事件配置之前进行的created阶段则是在实例创建完成后进行的在这个阶段实例已经完成了数据观测属性和方法的计算事件的回调挂载阶段还未开始$el属性目前不可见在这个阶段我们可以请求数据并进行一些初始化操作但是需要注意的是在keep-alive组件被在 Vue 的生命周期中,组件经历了一系列的阶段,每个阶段都有其特定的功能和用途。让我们深入了解这些方法及其背后的含义。
我们看到的是一个组件的方法部分:
methods 中定义了 getData 函数,它在创建阶段被调用,并设置 this.content 为 'test'。在 created 生命周期钩子中,我们再次调用 getData 函数,传递当前组件的 id 作为参数。这意味着当组件被创建时,它首先获取数据并设置内容。
接下来是 Vue 的生命周期钩子部分:
在 beforeMount 阶段,相关的 render 函数被调用,此时组件尚未挂载到 DOM 上。而到了 mounted 阶段,组件已经挂载到 DOM 上,我们可以进行对已有 DOM 节点的操作。这意味着我们可以访问和操作实际的 DOM 元素。在这个阶段之后,我们还可以进行数据的更新操作。
在数据更新时,会调用 beforeUpdate 钩子函数。在这个阶段,虚拟 DOM 会重新渲染和打补丁。我们可以在这个钩子中进行一些状态更改,而不会触发额外的重渲染过程。但是需要注意的是,当数据更新完成后会调用 updated 钩子函数,我们可以在此时执行依赖于 DOM 的操作。为了避免无限循环的更新,我们应该避免在这个阶段更改状态。
对于带有 keep-alive 的组件,当它们被激活时,会调用 activated 钩子函数;当停用时,会调用 deactivated 钩子函数。这两个钩子函数为我们提供了在组件被激活或停用时进行特定操作的机会。
在组件销毁之前会调用 beforeDestroy 钩子函数。在这个阶段,组件实例仍然完全可用。一旦组件被销毁,就会调用 destroyed 钩子函数。Vue 实例及其所有子实例都会被销毁,所有的事件监听器也会被移除。这意味着我们在 destroyed 钩子函数中执行的操作应该是清理性的,确保没有任何遗留的资源或状态需要处理。
示例一:Vue 2生命周期之旅
当打开这份Vue 2的示例代码时,仿佛进入了一个生命周期的奇幻旅程。让我们逐一看下每个阶段:
在HTML文档中,`
当我们在控制台输出“vue2生命周期开始了”,标志着这段旅程的开始。从创建前到创建后,每个阶段都有精细的console.log输出,展示了Vue实例在不同生命周期钩子的状态变化。挂载前与挂载后的日志,让我们见证了Vue如何将虚拟DOM与真实DOM相结合。每当实例更新或销毁,都会有一系列日志告诉我们发生了什么。这简直是一场关于Vue生命周期的生动展示!
示例二:深入了解Vue 2的生命周期
在这个例子中,我们有一个简单的`
手动挂载与事件调用 2.5.1:手动挂载
如果一个Vue实例在初始化时没有指定el选项,它将处于“未挂载”状态。这时,我们可以使用`vm.$mount([elementOrSelector])`来手动挂载它。这就像给没有家的Vue实例找到一个DOM容器,使其能够在这个容器内展现其魔力。当需要触发某些事件或更新数据时,我们也可以手动调用相应的方法。这一切都在我们的掌控之中,如同导演在指挥一场精彩的戏剧。
Vue.js:手动挂载与组件管理
如何使用呢?假设我们有一个名为MyComponent的Vue组件,我们可以这样操作:
```javascript
var MyComponent = Vue.extend({
template: '
})
// 在文档之外创建并渲染实例
var componentInstance = new MyComponent()
// 手动挂载到指定元素上
componentInstance.$mount('app')
```
```javascript
var ponent = new MyComponent().$mount()
document.getElementById('app').appendChild(ponent.$el)
```
在示例中,我们有一个简单的HTML页面,包含两个div元素和两个按钮。通过点击按钮,我们可以手动挂载Vue实例到不同的div元素上。通过这种方式,我们可以动态地管理和控制页面元素。
除了手动挂载,Vue还提供了其他有用的方法,如vm.$destroy()用于完全销毁一个实例,以及vm.$forceUpdate()用于迫使Vue实例重新渲染。这些方法为我们提供了更多的灵活性,使我们能够更精细地控制Vue应用的行为。
Vue还提供了一个官方命令行工具——vue-cli,它可以帮助我们快速搭建大型单页应用(SPA)。这个工具提供了现代化的前端开发工作流的开箱即用的构建配置,让我们能够更高效地开发SPA。
Vue.js提供了丰富的功能和灵活的API,使得我们可以轻松地管理和控制Vue应用的行为。无论是手动挂载实例,还是使用vue-cli快速搭建SPA,都能让我们在开发过程中更加得心应手。仅需几分钟时间,您就可以利用Vue CLI搭建一个全新的项目框架,它集成了热重载、保存时静态检查等实用功能,并可直接用于生产环境。
您需要全局安装vue-cli。打开命令行工具,输入以下命令即可快速完成安装:
```bash
npm install --global vue-cli
```
接下来,选择基于webpack模板创建一个新项目。输入以下命令并替换“my-project”为您期望的项目名称:
```bash
vue init webpack my-project
```
进入项目目录并安装依赖:
```bash
cd my-project
npm install
```
现在,您的项目环境已经搭建完毕,可以启动开发服务器了:
```bash
npm run dev
```
在此之前,请确保您对Node.js和相关构建工具有一定了解。如果你是新手,我们建议先熟悉Vue本身,再使用CLI工具。
关于环境搭建,首先您需要安装node.js。访问node.js官网下载并安装,过程简单直观。安装完成后,通过命令行工具检查node安装是否成功。
如果安装过程中遇到问题,您可以尝试将安装包解压成绿色版,并配置环境变量。安装成功后,请注意检查npm版本,确保它在3.x.x以上。
为提高访问速度,建议将npm镜像改为淘宝镜像。打开命令行工具,执行相关配置命令。
接下来,安装webpack和vue-cli脚手架构建工具。在命令行中输入相应命令即可完成安装,并通过输入特定命令验证安装是否成功。
关于项目构建,首先在硬盘上选择适合的工程目录。您可以通过两种方式进入相关目录:使用cd命令或通过在已安装git的目录右键选择“Git Bash Here”。然后,使用vue脚手架构建项目,输入命令时替换“projectName”为您的项目名称,确保不使用中文。
现在,您可以开始在这个强大的框架上构建您的Vue应用,享受热重载、保存时静态检查等实用功能带来的便捷体验。在浩瀚的编程世界中,安装Vue脚手架的命令如同启动一场奇幻旅程的魔法咒语。只需简单地输入 `$ vue init webpack exprice`,我们就能开启一个全新的Vue 2.x版本的项目。
这个命令将引导我们进入一个充满创意与技术的世界。我们被问及项目名称,毫不犹豫地输入“exprice”,就像为未来的宝藏起一个响亮的名字。接下来,我们为项目添加描述,让它在众多Vue项目中脱颖而出。然后,我们指定项目的创建者为“Datura”,这一刻,我们成为了这个项目的掌舵人。
在构建Vue项目时,我们面临多个选择。我们要决定是否需要安装Vue路由。作为单页应用,我们选择安装vue-router,以便更好地管理我们的网页路由。然后,我们需要决定是否启用ESLint来检测代码规则。在这里,我们建议选择“No”,虽然它能帮助我们遵循一些编码规范,但有时候也会限制我们的创造力。接下来,我们决定是否设置单元测试和端到端测试,以确保我们的代码质量和稳定性。
经过一系列的选择和配置,vue-cli成功生成了“exprice”项目。接下来,我们只需按照提示操作即可。使用cd命令进入创建的工程目录。然后,安装项目依赖。因为自动构建过程中已经存在package.json文件,我们只需直接安装依赖即可。在安装过程中,建议使用npm install命令而不是国内镜像pm安装,以避免缺失依赖库的问题。如果安装遇到困难,可以尝试使用pm install。
我们还需要安装vue-router和vue-resource这两个模块。vue-router是我们的导航工具,帮助我们在不同的页面之间流畅地切换;而vue-resource则是我们的得力助手,帮助我们处理网络请求,获取所需的数据。通过输入`pm install vue-router vue-resource --save`命令,我们就能轻松地将它们添加到我们的项目中。
现在,我们已经准备好了开始这个Vue冒险之旅的一切。让我们用代码书写属于我们的故事,创造属于我们的世界。exprice项目已经在我们手中,接下来,让我们共同见证它的成长和辉煌。项目结构概览与启动指南
在项目的根目录中,你可以看到一系列文件和文件夹,它们构成了这个项目的骨架。下面是项目的目录结构及其内容的简要介绍。
目录结构:
|-- build:此目录包含与项目构建(webpack)相关的代码。
|-- build.js:生产环境的构建代码,用于打包和压缩代码,生成生产环境下的代码。
|-- check-version.js:检查node、npm等版本的脚本,确保项目依赖的环境符合要求。
|-- dev-client.js和dev-server.js:与热重载相关的代码,用于开发环境下的实时预览和调试。
|-- utils.js:包含构建工具相关的实用函数和脚本。
|-- webpack..conf.js:这是webpack的配置文件,包括基础配置、开发环境配置和生产环境配置。
|-- config:此目录包含项目开发环境配置。
|-- dev.env.js、index.js和prod.env.js:分别对应开发环境、项目配置变量和生产环境的配置变量。
|-- test.env.js:测试环境的配置变量。
|-- src:源码目录,包含项目的核心代码。
|-- ponents:vue公共组件目录。
|-- store:vuex的状态管理目录。
|-- App.vue:页面入口文件,是整个项目的入口点。
|-- main.js:程序入口文件,加载各种公共组件并启动应用。
|-- static:静态文件目录,包含图片、json数据等。其中data文件夹存放群聊分析得到的数据用于数据可视化。
还有一些配置文件和工具,如.babelrc(ES6语法编译配置)、.editorconfig(定义代码格式)、.gitignore(git上传需要忽略的文件格式)、README.md(项目说明)、favicon.ico(网站图标)和index.html(入口页面)。
运行项目:
当服务启动成功时,浏览器会默认打开一幅“欢迎画面”,就像下面展示的一样。
编译完成后,您可以直接在浏览器中查看项目成果。接下来,我们将深入了解Vue-cli的一个简单实例——HelloWorld。
在默认的模板内容基础上,我们可以开始定义自己的Vue程序了。让我们从一个简单的HelloWorld开始。在src目录下创建一个Hi.vue文件,内容如下:
```html
{{msg}}
```
在script部分,我们导出默认的Vue组件,定义了一个名为Hi的组件。它包含了一个data函数,用于初始化组件的数据,这里我们定义了一个msg变量并赋值为'My First vue-cli app!'。我们还定义了一个名为sayhi的方法,用于触发一个弹出警告框的事件。
```javascript
export default {
name: 'Hi',
data() {
return {
msg: 'My First vue-cli app!'
}
},
methods:{
sayhi:function(){
alert(this.msg);
}
}
}
```
在style部分,我们定义了app1的样式,设置了字体、颜色和大小。
```css
app1 {
font-family: "microsoft yahei";
color: dodgerblue;
font-size: 20px;
}
```
接下来,我们修改main.js文件,引入Vue和刚刚创建的Hi组件。然后创建一个Vue实例,将Hi组件注册为根组件。当运行这个实例时,会展示我们定义的HelloWorld界面。
```javascript
import Vue from 'vue'
import App from './Hi'
Vue.config.productionTip = false
new Vue({
el: 'app',
template: '
components: { App }
})
编程语言
- Vue的实例、生命周期与Vue脚手架(vue-cli)实例详
- 蛇年多屏图片切换(可添加图片链接以及编辑标题
- C#.NET发送邮件的实例代码
- ThinkPHP5 框架引入 Go AOP,PHP AOP编程项目详解
- PHP实现查询手机归属地的方法详解
- 浅析php静态方法与非静态方法的用法区别
- react router4+redux实现路由权限控制的方法
- 浅谈.Net并行计算之数据并行
- vue表单验证组件 v-verify-plugin
- jQuery遍历节点树方法分析
- Dom遍历XML的一个例子,结果为树状结构
- 微信公众号生成新浪短网址的实现(快速生成)
- JavaScript动态检验密码强度的实现方法
- PHP全局使用Laravel辅助函数dd
- .net中 关于反射的详细介绍
- php实现mysql备份恢复分卷处理的方法