基于Vue的快速入门web开发

0. 目标读者

本教程适合读者是有一定成熟的后端开发经验,对后端了解较为清晰。但是不熟悉前端开发的初等,中等水平后端开发者。由于目标用户是Linux后端开发者,所以使用的多为shell指令,但实际上windows下只是换成cmd输入相同的指令即可,大体上逻辑一致。

本文会以能够简单的开始写为目的介绍,背后逻辑和机理只会解释到能动手开发为主,底层技术不会涉及我才不会告诉你我也没研究

本文会涉及HTML,CSS,JavaScript。但都不会讲的特别深,都按照能入手开发为目的进行讲解。

0.1 预备知识:Html 结构

Html 本质和 markdown 等语法类似,目的是为了用一套格式化的语法来达到呈现图形的效果。与 XML,JSON 等主要是为了展示数据结构或者为了持久化的目的不同,HTML 本质是为了呈现数据的,这是一个用以显示为目的的语言。HTML 的实现中使用了 XML 的思想,但对其进行了扩充和特例化。

如同 MarkDown 中 # ##表示的一级二级标题一样, html 中只是用

等来表示标题而已,

这里引用一句别的博客的话:

HTML 是网页的结构,就比如工人盖房子一样,首先要用砖把房子的结构搭建起来,有了房子结构才能在其基础上再进行其他作业,HTML 就类似于房子的大框架结构。HTML 有很多标签组成,不同的标签语义不同,所有的标签内容组合在一起就构成了网页的结构内容。HTML 中写了什么内容被浏览器渲染后网页中就有什么内容,这些内容是原生态的无任何修饰。只有当网页中有了这些原生态的内容后才可以在其基础上添加样式进行修饰,让网页变得更美观,用户体验更好。所以 HTML 就如同整个网页的灵魂,不可或缺。

Html 使用 xml 的方式来表示数据结构,常见的 html 中的元素如下图所示:

基于Vue的快速入门web开发_第1张图片

0.2 Vue做了什么

先放一段官网的话:

Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式框架。与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用。Vue 的核心库只关注视图层,不仅易于上手,还便于与第三方库或既有项目整合。另一方面,当与现代化的工具链以及各种支持类库结合使用时,Vue 也完全能够为复杂的单页应用提供驱动。

实际上更简单的理解是,框架通过实时变化HTML文件中的每一个组件,达到渐进式的效果。也就是实际上从始至终一般都是一个HTML文件,框架不停的修改这个文件里面的HTML文件节点和文件的属性和值。这种应用在前端属于里叫单页Web应用SPA, single page web application。目前主流的风格是做这样的网页。

1. 环境搭建

nodejs简介
1、node 是一个基于 V8 引擎的 Javascript 运行环境,它使得 Javascript 可以运行在服务端,直接与操作系统进行交互,与文件控制、
网络交互、进程控制等。简单的说node.js就是运行在服务端的 JavaScript。
2、node.js是一个基于Chrome JavaScript运行时建立的一个平台。
3、node.js是一个事件驱动I/O服务端JavaScript环境,基于Google的V8引擎,V8引擎执行Javascript的速度非常快,性能非常好。

1.1 下载node

国内有加速镜像:

这个文件直接就是一个配置好PATH就能用的安装包:node-v14.19.0-linux-x64.tar.xz

解压到自己喜欢的路径,然后把压缩包里面的bin文件设置成PATH环境变量,就可以开始愉快的前端之旅了。Node这个引擎不光仅仅只有环境,和Python类似,除了环境以外,另一个很大的特色就是这里面有自己的“市场”。类似于Python的pip。

1.2 设置好环境变量

一样的,npm要使用很多开源组件,这些组件都在一个公用的市场里。类似于python的pip。这里也需要配置一下源。主要的目的是为了让国内可以访问node的市场,有别于Python,node的市场对于整个程序编译来说更加重要。可以理解为如果没有市场,那么一切就运行不起来。

vim ~/.npmrc

输入如下变量:

registry=https://registry.npmmirror.com/

以下,开始可以真真真真的开始建立项目了。

2. 新建一个项目

2.1 各种插件装起来

node只是提供了一种编译环境,而实际上各种前端代码需要对应的插件才能运行起来,那么开始装了。这里就来vue吧。这里提示一下,-g表示全局安装,这里提示一下,如果想偷懒可以把install写成i

npm install vue -g   #这个是vue本身
npm install @vue/cli -g   #这个是vue的脚手架,方便快速开发的
npm install -g @vue/cli-init  #这个是vue用来快速创建项目的脚手架

到这里为止,实际上已经可以基于vue开始进行前端代码开发了。

2.2 可以简单的创建一个项目了

vue建立新工程也有自己的专属命令,vue create + 项目名称注意,这里随便去一个目录都行。下面这行命令执行后,会自动新建一个以项目名称为名字的目录,并且在里面直接添加很多辅助定式文件,那些文件的作用我们现阶段可以不用理解,只需要记住,我们需要改动的东西都是在src文件夹下就行。

vue create my-first-project

实际上,如果你讨厌这种黑白的交互,vue还出了一个更加有友善的ui界面。

vue ui

在这个界面里,创建相互相关的仪表盘等信息均通过可视化的Web网页呈现出来,包括下面提到的构建运行和相关项目设置,均可以点点就能完成。

这里注意一下,为了简便快速入门,我们选择vue2.x,因为2.x目前例子很多,成熟的案例也很多,方便我们借用。3.x需要调试的地方不少,先学会了2.x转过去还是容易的。

基于Vue的快速入门web开发_第2张图片
这里需要额外注意一下,默认直接回车选的是Vue 3,我们作为一个抄作业快速搭积木的人,Vue2目前可抄的作业更多。所以这里要按一下 ↓ 。

我们进入my-first-project这个目录,直接在shell中敲击如下指令,一个默认的前端网页已经可以访问了。

npm run serve    

输入完上面指令后,整个my-first-project工程便开始编译了,类似于我们后端编译cpp文件,最终生成可执行程序类似。但前端的这个run serve模式更加等效于我们的debug模式。

更加方便的是,任何一行源代码改动,node可以自动重新构建,自动展示在浏览器上是最新的内容。包括如果把工程改挂了,浏览器上也能直接展示成报错。

现在编译完成了,已经有一个提示了,按照提示的去访问对应网页就可以看到了一个vue提供的默认网页了。

 DONE  Compiled successfully in 4556ms                                                                     下午1:53:02


  App running at:
  - Local:   http://localhost:8081/
  - Network: http://192.168.1.73:8081/

  Note that the development build is not optimized.
  To create a production build, run npm run build.

额外提示一点,如果整个项目写完了,最后运行

npm run build

之后,工程里会多一个dist目录,框架会将所有相关的代码打包成发布时候需要的版本,最后将dist目录下的所有内容放到对应的WEB服务器里,和后端程序放在一起即可。

2.2.1 为什么这样就能展示了?

这个时候细心的你可能发现了一点奇怪的地方。我们明明只写了前端代码,为什么访问8080端口还是能正常展示,浏览器也能正常显示。Amazing!

这是因为node引擎帮你处理了最简单的资源获取过程。也就是这个调试模式下,做的事情仅仅是所有的资源文件(主要包括html,图片,js脚本)。这些文件会按照http协议传输给浏览器。没有任何和后端服务器交互的逻辑协议,仅仅只是http传输,但这种模式下调试前端展示已经没有什么问题了。

2.3 开始试着自己写写前端代码了

前端代码一大抄,看你会抄不会抄。成熟的前端框架已经给我们总结了很多很多可以复用的前端组件了。组件更像是我们需要用的一个皮肤,那么现在我们选一个皮肤吧。

2.3.1 先大体了解一下Vue这个框架是按照什么逻辑展示的

这里引用一段官网的原话:

组件系统是 Vue 的另一个重要概念,因为它是一种抽象,允许我们使用小型、独立和通常可复用的组件构建大型应用。仔细想想,几乎任意类型的应用界面都可以抽象为一个组件树:

基于Vue的快速入门web开发_第3张图片

这个图里实际上也很考究,很简明的说明了Vue的整体思想。从上到下,整个页面是一个总树根,这一层下面分了3个大块(分别为横着的一条,和下面的两个大块),然后每个里面又细分了。不光只是一个随意数量的示意。实际上,HTML语言的布局也是这种思路。

2.3.2 先选一个自己喜欢的皮肤

进入my-first-project这个目录,我们选择一个最为常用的UI框架。来自我们天天点外卖的手机APP,饿了么。这里给一个链接,后面我们会经常在里面去 抄东西 找灵感。以下命令也是源自于这个网页的快速上手提示。

npm i element-ui -S

按照网页要求,我们要开始写改第一个js代码了。在src/main.js 中写入以下内容

import Vue from 'vue';
import ElementUI from 'element-ui';
import 'element-ui/lib/theme-chalk/index.css';
import App from './App.vue';

Vue.use(ElementUI);

new Vue({
  el: '#app',
  render: h => h(App)
});

按照这个要求改好后,我们后面就可以安心的开始写代码了。

2.3.3 vue文件里面有哪些东西

最初的工程里,src/componets下有一个HelloWorld.vue。我们后续绝大多数也是通过新增一些.vue文件来增加界面要展示的内容。和2.3.1里树状图那样,每一个.vue文件实际上就是一个小方块。

那么.vue文件主要写点什么,里面都有些什么东西呢?其实每个.vue文件里主要都有三个部分。

  1. 第一个部分是模板部分,也就是最后放到树上的小方块到底是个什么,是按钮,是表,或者是很多东西的组合。这段之间的代码将被插入到html中。这个部分主要需要用html语言写。
<template>
  <div class="hello">
    <p>
      For a guide and recipes on how to configure / customize this project,<br>
      check out the
      
      
    p>
    <h3>Installed CLI Pluginsh3>
    ...........
  div>
template>
  1. 第二个部分是脚本部分,主要是一些模板对应的响应动作对应的函数。例如某个按钮按下之后,要执行个什么事情、某个输入框输入了东西后要干什么等等。这部分的语言是JavaScript
<script>
// import HelloWorld from '@/components/HelloWorld.vue'
// import TableExc from '@/components/TableExc.vue'

export default {
  name: 'App',
  data() {
    return {
      Hw_seen : true
    }
  },
  components: {
    // HelloWorld
    // TableExc
  },
  methods : {
    to_deal() {
      this.$router.push('/home')
    },
    to_about () {
      this.$router.push('/about')
    }
  }
}
</script>
  1. 第三部分是样式部分,主要是负责格式相关的东西,类似于word中的段落对齐方式,字体大小,加粗,等等各种和格式排版相关的东西。这个部分主要是用css语言写。

读到这里,其实我们可以简单介绍一下vue整个工程的渲染过程,大概是这样的。

背后逻辑稍微要逻辑一下,方便后面理解vue-router

针对新建的项目,默认逻辑是有一个空的index.html文件,这个文件里有一个空的块

。这块后续会被App.vue替换。然后App.vue中又引用了一段的语句,引入了一个HelloWorld.vue

2.3.4 原有界面不好看,我想换一个

首页太简单太枯燥了,我想换一个。这里直接替换HelloWorld.vue

还是来自饿了么

这里的一个实例,好多王小虎的那个看起来很不错。下面点开还直接有代码。直接都贴过来就完事。

但是好像现在还不能跑,注意2.3.3里提到的那样,原有代码里少一个