第二篇 千里之行始于跬步【前段学习指引】【TODOapp】【web实战应用】

chapter2 千里之行始于跬步

没有什么事情是一蹴而就的,学习是需要一个学习曲线的,因此 掌握我们的学习规律制定合适的学习计划 是非常必要的,那么这一篇文章就是 开发一个TodoApp 来帮助我们记录分析我们的学习曲线。

✅TODO

一个好的 TODO LIST 可以让我们更好的掌握自己的每日进度⌚️,记录我们的完成度📝,跟踪和统计我们的进度🛰️。

1.📚专业技术准备

首先我们需要了解一下,作为一个前端开发我们真的需要需要掌握哪些东西,那肯定是 HTML, CSS, JavaScript。当然没有这些基础也可以跟着这篇文章制做TodoApp。

你可以通过下面这个网站检验一下的能力水平,或者作为了解学习一下相关知识。

🎯如果您真的毫无任何经验,那么仅需了解一下上方的基础教程即可,你可以将这篇文章当作对您是否真的对前端感兴趣的考验。

2.💡构思我们的TodoWeb应用

在做一个自己的应用之前,我们应该思考好我们具体要做一个什么东西,它有什么功能,他应该有怎么样子的图形页面。

2.1 MVC设计模式

图1MVC.png
我们可以采用一种简单的设计模式 MVC模式。如 图1 所示,其中

  1. Model(模型) - 模型代表一个存取数据的对象。它也可以带有逻辑,在数据变化时更新控制器。
  2. View(视图) - 视图代表模型包含的数据的可视化。
  3. Controller(控制器) - 控制器作用于模型和视图上。它控制数据流向模型对象,并在数据变化时更新视图。它使视图与模型分离开。

通过这种设计模式我们可以按步就班的开始我们的程序构思。

  1. 我们可以使用 JavaScript 脚本 和 Nodejs 构建我们的控制器。
  2. 使用 DOMHTMLCSS 构建视图。
  3. 运用 Javascript Object构建模型。
2.2 简单梳理应用内容

TodoApp 是一个很简单的web程序,我们先简单考虑一下它有哪些功能,并且像我一样先将这些功能和设计简单列出来。(任何想法都可以,就是先记下来)

  • 添加 新事项📝
  • 编辑/删除/完成 事项⚙️
  • 设定周期任务⏰
  • 存储事项进度🗃
  • 追踪任务进度📅

简要罗列了一下,我们可以进行一下啊简要的分析,可见这个应用主要围绕 事项 这一实例(对象)进行操作,对 事项 进行诸如 增/删/改 的操作。

根据 2.1 MVC 模式,我们可以将 事项 作为一个 Model模型 , 而 围绕他的功能实现 作为 Controller ,然后我们需要将 这些数据渲染成UI 也就是 View视图。这就是一个简单的 MVC模式的 近似应用。

2.3 从设计稿开始

构建项目最简单最清晰就是从设计稿开始了,简单的就是从 UI设计 开始,让我们一起打开 MasterGo (如果你有一定HTML、CSS基础那可以跳过这一部分)

1.我们使用MasterGo简单的绘制一个 UI界面

方便我们对 尺寸布局 的掌控,从而快速地编写 静态页面
图2 设计图
我已经做好并分享了了,点击直接查看→项目地址

2.分割各个内容模型

我们主要分为两个部分,输入框(图内序1)和 事务列表(图内序3)这两部分。

  • 输入框:input标签 用于输入事项。
  • 事务项:根据 事务项数组 渲染 事务项视图
    图3 设计图分割
3.使用 HTML 标签编写页面。

首先 在我们的 VScode 里面创建一个 index.js 文件。
在里面输入下方代码(🍧如果不是很了解html可以好好看看注释)

<!DOCTYPE html>
<html>

<head>
    <!-- 下面的内容是 页面的编码格式 -->
    <meta charset="UTF-8">
    <!-- 下面的目前用不到 以后再去学习 -->
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <!-- 下面的内容是视图的设置 -->
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <!-- 下面的 title 的内容是你网页标签上的标题 -->
    <title>Todo</title>

    <!-- 样式表 -->
    <style>
         /* 如果实在看不懂所有内容 请浏览该网址 https://developer.mozilla.org/zh-CN/docs/Learn/CSS/First_steps */
        body {
     
            background-color: #808080;
        }

        /* css 自定义属性 */
        /* 这里我们用来设置 主题 */
        :root {
     
            --main-bg-color: #FFFFFF;
            --theme-primary: #5AEBEB;
            --theme-secondary: #FFFFFF;
            --theme-list-primary: #928A8A;
            --theme-list-success: #55a068;
            --theme-danger: #9b3333;
            --theme-list-button: #D8D8D8;

        }

        .container {
     
            /* 下面第一条可以设置居中显示 */
            margin: auto;
            width: 400px;
            height: 600px;
            border-radius: 30px;
            background-color: var(--main-bg-color);
        }

        /* 顶部的样式 */
        .topbanner {
     
            position: relative;
            border-radius: 30px 30px 0px 0px;
            background-color: var(--theme-primary);
            height: 120px;
        }

        .topbanner_inputbox {
     
            position: absolute;
            left: 33px;
            top: 38px;
            width: 340px;
            height: 40px;
            border-radius: 20px;
            background: var(--theme-secondary);
        }


        .topbanner_inputbox .listInput {
     
            float: left;
            margin-left: 20px;
            box-sizing: border-box;
            border: none;
            height: 100%;
        }

        .topbanner_inputbox .round_button {
     
            border: none;
            background-color: var(--theme-list-primary);
            float: right;
            box-sizing: border-box;
            border-radius: 100%;
            width: 40px;
            height: 40px;
        }

        .topbanner_inputbox .round_button:hover {
     
            background-color: var(--theme-list-success);
        }

        /* 列表内容的样式 */
        .listitem {
     
            border-radius: 0px 0px 30px 30px;
            background-color: inherit;
            height: 100%;
        }

        .itemcon {
     
            box-sizing: border-box;
            width: 400px;
            height: 480px;
            border-radius: 0px 0px 30px 30px;
            background-color: var(--theme-secondary);
            overflow-y: scroll;
        }

        .itemcon::-webkit-scrollbar {
     
            display: none;
        }

        .itemlists {
     
            margin: 0 auto;
            width: 340px;
            height: 480px;
        }

        .itemlists .item {
     
            position: relative;
            margin-top: 20px;
            width: 340px;
            height: 48px;
            border-radius: 4px;
            background: var(--theme-list-primary);
            line-height: 48px;
            box-shadow: 0 0 12px 2px rgb(167, 167, 167);
        }

        .itemlists .item.finish {
     
            background-color: var
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值