使用 Vue.js 和 Semantic-UI 做一个简单的愿望清单
一、前言
2021年第一个周末,祝各位读者朋友平安顺利。
以前读过一句话:“当你穿过暴风雨的时候,你就不是原来那个人了。”
但他没有说,我们要如何穿过暴风雨。
2020刚开始的时候,我曾觉得冬天无比漫长,似乎没有尽头。到了六月的时候,才发觉时间过得比想象更快。而现在,2020年已经过去了,想来总觉得有些恍惚,那些时间那些岁月到底是怎么流逝的呢?那么,我们到底是如何穿过暴风雨的呢?
只有在这么一个时刻,才能明白,让我们穿越暴风雨的,不过是每一天的平凡生活。
当我们的生活日夜旋转不休,眼前的景象朦胧一片时,我们唯一能做的只是努力看清了脚底下的路,并且决定一步步慢慢前行。
我想是这样的,从没有一蹴而就的事,只有每一天努力前行。
直到某天乌云散去,回过头看,才能知道自己走了多远。
因为人生没有白走的路,每一步都算数。
周末用 Vue.js 和 Semantic-UI 做了一个简单的愿望清单,记录以后想和喜欢的人一起做的事,疲惫的生活里总要有些温柔的梦想吧。
二、Vue.js介绍
官方文档传送门:https://cn.vuejs.org/v2/guide/installation.html
Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式框架。与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用。Vue 的核心库只关注视图层,不仅易于上手,还便于与第三方库或既有项目整合。另一方面,当与现代化的工具链以及各种支持类库结合使用时,Vue 也完全能够为复杂的单页应用提供驱动。
仿照官网案例的项目,主要为了熟悉 Vue.js 的基本用法,通过这个案例能吸收到基本的 Vue.js 操作

重构此项目可以学到以下知识点:
- 基本的数据绑定语法
- 计算属性
- Class 绑定
- 条件渲染
- 列表渲染
- 方法与事件绑定
- 表单空间绑定
- 自定义指令
额外还能学习到 LocalStorage 的简单用法,可以说通过详细学习此例子可以完成 Vue.js 最基本的入门操作, 完全熟悉不太容易, 主要是感受下 Vue.js 的强大和基本的使用,那么好的框架当然是越学越香,更多详细使用可以参考官方文档。

三、Semantic UI介绍
官方文档传送门:https://zijieke.com/semantic-ui/introduction/getting-started.php

在 HTML 中包含 (Include in Your HTML):
运行 gulp 构建工具将会在你的项目中编译出 CSS 和 Javascript 文件。把编译出的文件和最新的 jQuery 一起包含到 HTML 中就可以使用 Semantic UI了,更多详细使用可以参考官方文档。
<link rel="stylesheet" type="text/css" href="semantic/dist/semantic.min.css">
<script
src="https://code.jquery.com/jquery-3.1.1.min.js"
integrity="sha256-hVVnYaiADRTO2PzUGmuLJr8BLUSjGIZsDYGmIJLv2b8="
crossorigin="anonymous"></script>
<script src="semantic/dist/semantic.min.js"></script>
- 1
- 2
- 3
- 4
- 5
- 6
四、实现愿望清单界面
index.html
<html data-framework="vue">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<title>TODOS - A wish list</title>
<link href="static/semantic.min.css" rel="stylesheet">
<link href="static/style.css" rel="stylesheet">
</head>
<body>
<div id="todos" class="ui text container" style="background: #F3F3F4;padding: 0 14px; min-height: 100%;">
<h1 class="ui centered grey header" style="font-size: 5em;">
<span class="pink text">A Wish List</span>
</h1>
<div class="ui stacked segment" style="padding: 14px;">
<div class="ui fluid right action input">
<input type="text" placeholder="想和喜欢的人一起做点什么?"
v-model="newTitle"
autofocus autocomplete="off"
@keyup.enter="addTask">
<button class="ui teal icon button"
@click="addTask">
<i class="plus icon"></i>
</button>
</div>
<div class="ui huge middle aligned divided selection list"