【九层之台】Web开发教程:6. VueCli

2024-03-18 22:30

本文主要是介绍【九层之台】Web开发教程:6. VueCli,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

VueCli

目录

  • 6. VueCli
    • Nodejs & npm
    • 安装
    • 创建项目
    • VueCli项目控制台
    • VueCli项目目录
    • Vue组件
    • Vue Router
    • 组件间通信
    • 开发辅助
    • 引入组件库

6. VueCli

本章内容比较多,主要介绍VueCli的使用方法。VueCli是Vuejs团队推出的一个开发辅助工具,被我们称为“脚手架”。如果说,上一章里面用Vuejs前端框架控制网页应用的逻辑好似开高达,那么本章的VueCli可能就是坐在办公室里用程序开高达了。VueCli给我的感觉是,它已经脱离了开发辅助工具的范畴,而是发明了一种新的开发方法。下面我们就来看一看它的使用方法。

官网地址:https://cli.vuejs.org/

Nodejs & npm

在开始开发之前,我们要先介绍一些基础内容。

Nodejs是一个软件,它的功能是把JS代码运行在本地命令行上。在之前的JS章节,我们就说过网页JS是运行在浏览器上的,JS代码也是通过浏览器来解析和编译的。那么,如何让JS脱离浏览器工作呢?其中一个方法就是使用Nodejs。

以Windows操作系统为例,首先我们去Nodejs官网下载一份安装包,点击运行并安装。等它安装好以后,我们就可以打开系统命令行,输入node,然后就可以输入JS代码愉快玩耍了!如果使用node index.js命令,还可以运行一个JS脚本代码文件。

与Nodejs一起被安装的,其实还有我们最好的伙伴npm,它是Nodejs的包管理器。所有的Nodejs项目都是以“包”的形式存在的,我们把所有的代码放在一个文件夹里,附上这个项目所需要的依赖包。依赖包就是前人写好的其他“包”,大量的代码包一层一层地堆叠出一个Nodejs项目。

那么,为什么需要Nodejs呢?我们想做的事情是,写一些简单的代码,然后通过一个工具把简单的代码给打包,形成一个HTML、CSS、JS三部分代码组成的网页。我们说这个打包工具是VueCli,现在我要告诉你们,VueCli本身也是用JS代码编写的,它需要运行在Nodejs上(本地运行)。我们用一些运行在Nodejs上的代码来打包另一些代码,最后给出一份网页应用的代码,是不是很神奇?

安装

按照官网上的安装方法,打开本机命令行(Windows系统下按键盘上win + Enter并输入powershell),输入命令(并按回车):

npm install -g @vue/cli

等待命令执行完毕,VueCli就安装好啦。其实就是一个代码包被下载到了你的电脑上。让我们尝试查看一下VueCli的版本号:

vue --version

如果你可以看到版本号,说明一切正常!

创建项目

官网上的教程主要讲了命令行的方法,了解一下当然很好,但是从VueCli3开始,你就只需要记住一行命令,那就是:

vue ui

回车以后,稍等一下下就会发现你的浏览器自动打开并显示了一个页面。VueCli控制台闪亮登场!
我就喜欢这种傻瓜又直接的开发工具。
歌颂它的伟大吧!VueCli的所有功能都可以在这个控制页面上完成。

点击创建项目,取个名字,选个文件夹保存,然后一路默认。选择组件的时候(自定义)可以选一下Vue Router,也可以什么都不选创建一个最最简单的工程。

在一小段等待以后(可以在系统的命令行界面看到进度),我们的VueCli项目就创建完成啦!

VueCli项目控制台

在VueCli控制台上,可以看到左边的标签。其中大多是都很浅显易懂,例如可以通过搜索并添加依赖,来添加别人写好的组件库等等。

这里主要要介绍“任务”标签上的两个功能,serve和build。

  • serve:热更新的调试预览。通过点击serve任务的开始键,我们可以让VueCli将我们的项目临时打包,打包完成以后(前提是代码里面没有错误),可以通过“打开应用”按钮在另一个页面上预览我们网页应用的效果。如果这个时候你修改了代码,预览页面也会实时刷新。
  • build:构建。点击build任务的开始键,VueCli就会帮助我们把我们的代码打包为一个正常的网页,默认会输出到项目目录下的dist文件夹中。构建出的网页就是我们最终发布的网页文件。

我们在控制台上开启我们刚刚创建的新项目,开始serve,等它准备好以后点击“打开应用”,就可以在新的页面看到我们的项目的情况了!新创建的项目并不是完全空白的,而是有VueCli的默认项目内容。

同时,在VueCli控制台的“配置”页面上,有一些常用的配置。通常来说这些配置都不需要修改,如果有需要请自行百度!

VueCli项目目录

打开新建的VueCli项目所在的文件夹,我们来看一看项目目录下面都有些什么。项目目录下面大多数东西都是与Nodejs包有关的,例如package.json,我们只需要关注以下几个内容:

  • /public:这个文件夹存放了VueCli工程的构建模板,也就是说,VueCli工程最后构建的所有代码都带上这里的index.html作为网页的入口。通常来说我们需要在其中的body元素上新增style="margin: 0;"来取消浏览器body元素自带的边距。
  • /src:源码,也就是主要的开发内容。
    • /asset:资源,存放一些图片什么的
    • /components:组件,通常是小组件(下一节详述)
    • /router:(如果创建项目的时候选了Vue Router)路由设置(下面详述)
    • /views:视图组件
    • App.vue:主应用组件
    • main.js:应用主入口
  • vue.config.js:需要自己创建,是一些VueCLi的高级配置

简要介绍一下VueCli的文件之间的联系:

  1. 首先/src/main.js中生成的Vue对象绑定了/public/index.html中那个具有属性id="app"的块元素,所以相当于页面上所有的内容都由Vuejs框架接管。
  2. 接下来,/src/main.js中的Vue对象使用渲染函数,指定渲染为/src/App.vue中的主应用组件。简单理解起来,就是在Vuejs框架下把HTML代码中的块元素替换为了/src/App.vue组件。
  3. 通过编写/src/App.vue,并根据需求引入路由视图(见下面详述),或者直接引入/src/views中的视图组件形成用户界面的框架
  4. 通过编写/src/views文件夹中的视图组件,在其中引入/src/components文件夹中的小组件,最终形成一个复杂的应用。

下一节中我们就会详细介绍Vue组件。

Vue组件

如果说要给VueCli选一个关键词的话,那就是“组件”了。其实,不需要VueCli辅助,Vuejs框架本身就支持了组件,只不过比较难用,写起来不清晰。

在VueCli中,每一个组件都是固定的格式的.vue文件,举个例子:

<template><h1>{{ message }}</h1>
</template><script>export default {name: "MyComponent",data() {message: "Hello"}}
</script><style scoped>h1 {color: red;}
</style>

可以看得到,组件被三个HTML标签分为了三个部分:

  • template:模板部分,使用HTML代码标记该组件的内容。注意,template元素内部只能有一个子元素,如果需要有多个,请用一个块元素把它们包裹起来。
  • script:脚本部分,其中可能包含了引入其它组件,但一定包含有export default,大括号内部的内容相当于一个Vue对象的内部,但略有不同,下面详细介绍。
  • style:样式部分,使用CSS代码控制模板部分的元素的样式,和正常的CSS一样。默认情况下样式部分的CSS会应用于整个应用,这是很不方便的,如果我们需要限制样式只对当前组件生效,就需要在style的开始标签上加一个scoped,就像上面的代码里一样。

模板部分和样式部分没什么好说的,都是以前学习并熟练的内容了。接下来我们着重介绍脚本部分,特别是export default内的内容。export default内部的内容类似于一个Vue对象,但略有不同。它经常包括以下一些内容:

  • name:当前组件的名称。用于给别的组件引用的时候使用,注意,以前Vue对象中的el变量不需要写了,因为这里没有显式的绑定HTML元素,组件都是通过main.js中定义的渲染函数进行渲染的。
  • data:与Vue对象中的data对象不同,这里的data必须是一个函数,只不过这个函数返回当前组件需要使用的数据对象,就像上面的例子中一样。
  • components:在此对象中列举当前组件使用的其他组件的组件名
  • props:用于组件之间传递值(自行去官网学习)
  • computed:计算属性,与Vue对象中一样
  • methods:对象方法,与Vue对象一样

下面,举例看一看,如果另一个组件要引用这个组件,应该怎么写:

<script>import MyComponent from "@/components/MyComponent.vue";export default {name: "NewComponent",components: {MyComponent}}
</script>

可以看到,我们在这里使用import语句从一个文件当中引用了MyComponent组件。VueCli中规定引用目录@就是我们的/src目录。然后在components对象当中列举了引用的组件名,它们才真正被引用进当前组件。想要把这个组件放进当前组件的视图中,我们可以在模板部分写:

<template><div><my-component></my-component></div>
</template>

可以看到,我们的组件名会自动变成-连接的小写单词。

Vue Router

在VueCli中,不得不讲一讲Vue Router。首先,我们的VueCli构建出的网页,默认都是单页应用。也就是说,网页只有一个HTML文件index.html,其他视图的变化都是通过Vuejs框架控制的。从上一章我们知道,我们可以通过Vuejs的控制语句v-if来控制视图的选择性渲染,但是如果我们的应用需要多个不同的视图,并实现它们之间的切换,单纯通过v-if就比较麻烦。于是,VueCli提供了强大的Vue Router路由模块。

我建议大家去官网上详细学习,这里我只做简要介绍。

首先,我们发现我们在应用入口main.js当中会多一个router模块,并且App.vue主应用组件中的模板部分会出现一个奇妙的组件<router-view></router-view>。这是什么呢?这个组件的渲染控制权,会从当前的主应用组件移交到我们的router上。router会根据我们的网页URL(网址)来判断当前这个部分应该渲染为什么组件。

仔细观察我们VueCli打包的网页的URL,我们会发现网页URL都形如:http://domain/.../#/.../,一定会出现一个#,这就是VueCli的路由管理所使用的机制,#之前的内容可以是网页的相对路径(在服务器上的存放位置),但是从#开始的部分就被Vuejs读取并根据这些来控制网页上显示的组件。

通过配置router/index.js我们就可以实现对不同的路由(#后面的部分)显示不同的组件。其中还支持路由组件的懒加载(不访问不加载)和子路由等等,如有兴趣请自行学习官网教程。

Vuejs相关的官网教程还是写的非常好的。

组件间通信

对于两个组件来说,它们之间如何交换信息呢?如果用户在其中给一个组件中点击了一个按钮,如何让另一个组件知道呢?一般来说有以下几种方法:

  • props:如果是一个组件想要传递信息给它内部引用了的组件,可以使用这种方法。子组件中,props数组中的名称,可以通过在父组件的模板部分在组件标签上以属性的方式传值。例如,如果子组件有props: ["name"],那么父组件可以通过<my-component name="test"></my-component>的方式传入字符串test作为子组件中name变量(根据props自动生成的变量)的值。当然,你也可以使用v-bind让这个值动态变化。
  • emit:子组件中的事件,可以通过emit方法传递到父组件。例如,子组件的JS代码中调用了全局函数this.$emit("hey"),父组件可以在标签上监听hey事件,并连接一个处理函数:<my-component @hey="handle"></my-component>
  • 引用同一个管道模块:这是JS的方案,通过引用同一个模块(不一定是Vue组件)可以实现信息的传递,不常用,不做详述。
  • Vuex:当当当当!隆重介绍Vuex!Vuex与Vue Router一样,是官方出品的一个插件模块。因为大型的VueCli项目当中信息传递很难调度,所以诞生了Vuex。只要安装了Vuex,所有的组件都可以引入Vuex中的工具函数,并且操作Vuex中存储的数据,从而实现组件之间的数据共享。如果有兴趣,当然要去自己学习啦!看官方教程这个部分:https://vuex.vuejs.org/zh/guide/state.html (建议使用上面的mapState之类的辅助函数!)再在默认生成的Vuex默认代码上摸索一下吧!

开发辅助

首先,大多数文本编辑器都有针对VueCli开发的插件,例如Sublime中的Vue Syntax Highlight,这些插件可以大幅度减轻编写Vue组件的压力,因为默认情况下把HTML、CSS、JS写在一个文件当中,代码的颜色和高亮是很不好看的。

其次,在Google Chrome浏览器中有一个非常好用的插件Vue Devtools,它可以在分析在调试模式中的Vue应用的很多数据,显示每个组件的状态和事件等等,有条件的同学可以安装一下。

最后,必须要说一说项目目录下的vue.config.js文件,通常来说我们会在里面配置反向代理来解决前端网页调试的时候出现的跨域问题(不懂没问题,遇到的时候再回来)。例如:

module.exports = {devServer: {proxy: {'/api/': {target: 'http://url/',changeOrigin: true}}}
};

就可以转发/api/开头的网络请求到http://url/api/上,我们大概会在网络章节重新见到它。

引入组件库

如果觉得自己写所有的组件很累,又想要页面变好看,怎么办呢?当然是拿前辈们做好的组件库啦!遇到一个组件库,只要支持Vue,按照它的指南去安装,就可以在VueCli中很轻松地引入。你可以不花时间写CSS就创造出漂亮的按钮、输入框、表格,你也可以轻轻松松地快速构建出你想要的功能。

什么?要我推荐几个?下面的章节会有的!

快速、分片、通用,这就是VueCli,一个无限可能的地方。

这篇关于【九层之台】Web开发教程:6. VueCli的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/823872

相关文章

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

这15个Vue指令,让你的项目开发爽到爆

1. V-Hotkey 仓库地址: github.com/Dafrok/v-ho… Demo: 戳这里 https://dafrok.github.io/v-hotkey 安装: npm install --save v-hotkey 这个指令可以给组件绑定一个或多个快捷键。你想要通过按下 Escape 键后隐藏某个组件,按住 Control 和回车键再显示它吗?小菜一碟: <template

Hadoop企业开发案例调优场景

需求 (1)需求:从1G数据中,统计每个单词出现次数。服务器3台,每台配置4G内存,4核CPU,4线程。 (2)需求分析: 1G / 128m = 8个MapTask;1个ReduceTask;1个mrAppMaster 平均每个节点运行10个 / 3台 ≈ 3个任务(4    3    3) HDFS参数调优 (1)修改:hadoop-env.sh export HDFS_NAMENOD

Makefile简明使用教程

文章目录 规则makefile文件的基本语法:加在命令前的特殊符号:.PHONY伪目标: Makefilev1 直观写法v2 加上中间过程v3 伪目标v4 变量 make 选项-f-n-C Make 是一种流行的构建工具,常用于将源代码转换成可执行文件或者其他形式的输出文件(如库文件、文档等)。Make 可以自动化地执行编译、链接等一系列操作。 规则 makefile文件

嵌入式QT开发:构建高效智能的嵌入式系统

摘要: 本文深入探讨了嵌入式 QT 相关的各个方面。从 QT 框架的基础架构和核心概念出发,详细阐述了其在嵌入式环境中的优势与特点。文中分析了嵌入式 QT 的开发环境搭建过程,包括交叉编译工具链的配置等关键步骤。进一步探讨了嵌入式 QT 的界面设计与开发,涵盖了从基本控件的使用到复杂界面布局的构建。同时也深入研究了信号与槽机制在嵌入式系统中的应用,以及嵌入式 QT 与硬件设备的交互,包括输入输出设

OpenHarmony鸿蒙开发( Beta5.0)无感配网详解

1、简介 无感配网是指在设备联网过程中无需输入热点相关账号信息,即可快速实现设备配网,是一种兼顾高效性、可靠性和安全性的配网方式。 2、配网原理 2.1 通信原理 手机和智能设备之间的信息传递,利用特有的NAN协议实现。利用手机和智能设备之间的WiFi 感知订阅、发布能力,实现了数字管家应用和设备之间的发现。在完成设备间的认证和响应后,即可发送相关配网数据。同时还支持与常规Sof

活用c4d官方开发文档查询代码

当你问AI助手比如豆包,如何用python禁止掉xpresso标签时候,它会提示到 这时候要用到两个东西。https://developers.maxon.net/论坛搜索和开发文档 比如这里我就在官方找到正确的id描述 然后我就把参数标签换过来

Java Web指的是什么

Java Web指的是使用Java技术进行Web开发的一种方式。Java在Web开发领域有着广泛的应用,主要通过Java EE(Enterprise Edition)平台来实现。  主要特点和技术包括: 1. Servlets和JSP:     Servlets 是Java编写的服务器端程序,用于处理客户端请求和生成动态网页内容。     JSP(JavaServer Pages)

Linux_kernel驱动开发11

一、改回nfs方式挂载根文件系统         在产品将要上线之前,需要制作不同类型格式的根文件系统         在产品研发阶段,我们还是需要使用nfs的方式挂载根文件系统         优点:可以直接在上位机中修改文件系统内容,延长EMMC的寿命         【1】重启上位机nfs服务         sudo service nfs-kernel-server resta

BUUCTF靶场[web][极客大挑战 2019]Http、[HCTF 2018]admin

目录   [web][极客大挑战 2019]Http 考点:Referer协议、UA协议、X-Forwarded-For协议 [web][HCTF 2018]admin 考点:弱密码字典爆破 四种方法:   [web][极客大挑战 2019]Http 考点:Referer协议、UA协议、X-Forwarded-For协议 访问环境 老规矩,我们先查看源代码