从事前端有4年多了,经历了不少坑,也摸索了一些经验。既然是随笔,那就随便写写了。

按照农药的等级,依次是青铜、白银、黄金、铂金、钻石、星耀、王者。

以我现在的能力也就是黄金到铂金。那么写到哪算哪把。

既然这篇是青铜篇,那就是前端基础中的基础——HTML、CSS、JavaScript。

这应该算是前端入门必须的条件了。当然,如果只写静态页面,然后交给jsp、php。那么HTML、CSS基本就够了。

HTML是什么呢。官方说是超级文本标记语言(HyperText Markup Language)。用人话说,就是可以被浏览器读出来的编程语言。

如果你没有编程基础的话,打开这个连接http://www.w3school.com.cn/html/index.asp,从<head>、<title>、<body>这些基础标签学起。
当然,还有HTML5规范的新标签。比如<section>、<header>、<footer>等等

其实,HTML是个很容易入门的语言,HTML是骨架、CSS是皮肤、JavaScript是大脑。

 1 <html>
 2
 3 <head>
 4 <title>我的第一个 HTML 页面</title>
 5 </head>
 6
 7 <body>
 8 <p>body 元素的内容会显示在浏览器中。</p>
 9 <p>title 元素的内容会显示在浏览器的标题栏中。</p>
10 </body>
11
12 </html>

这个就是骨架,上面代码来自http://www.w3school.com.cn/tiy/t.asp?f=html_basic

接着、再说说皮肤的CSS吧。

打开这个连接http://www.w3school.com.cn/css/index.asp开始学习吧。

CSS官方名称是层叠样式表(Cascading Style Sheets)

我的理解是,CSS是“静态化”的属性设置。为什么这么说呢。其实就是,对一个元素(比如一个div标签)的各种属性设置,通过一系列键对值(比如设置背景色属性为黄:background-color: yellow),让浏览器读这个设置,从而让这个元素(比如一个div标签)“渲染”(render)成这个元素对应的属性设置的样子。我为什么把“渲染”(render)这个词单拎出来呢。render这个单词会出现在现今所有的框架中,render就代表着把元素变成我们设置的那样。

前面说了,如果只编写静态页面的话,HTML、CSS基本就够了。如果涉及到交互(比如点击、按键等等操作)了,用什么捕捉或者说这些操作怎么和页面结合呢。

对,用的就是JavaScript。教程看这里http://www.w3school.com.cn/js/

如果有点编程基础的人看到这个名字,会猜想是不是和Java类似呢。答案是 X。JavaScript这个名字是跟风的,不明白的百度一下。

比如一个页面我们有个按钮要点击,点击后要有反馈。怎么实现呢。

来源于这里http://www.w3school.com.cn/jsref/event_onclick.asp

 1 <html>
 2 <body>
 3
 4 Field1: <input type="text" id="field1" value="Hello World!">
 5 <br />
 6 Field2: <input type="text" id="field2">
 7 <br /><br />
 8 点击下面的按钮,把 Field1 的内容拷贝到 Field2 中:
 9 <br />
10 <button onclick="document.getElementById('field2').value=
11 document.getElementById('field1').value">Copy Text</button>
12
13 </body>
14 </html>

这段代码的意思是,通过一个按钮点击后,把第一个input标签中的值Hello World! 复制到第二个input标签里面。

onclick这个属性就是连接页面操作者(就是你)和页面的一个属性。

另外,有个名词需要注意,表单(form),对就是这个词,对新手来说,这个词是啥啊。

用人话讲,页面操作者(就是你),需要把你想要告诉服务器的数据,这些数据所对应的页面元素的集合。

举个栗子,来自于http://www.w3school.com.cn/js/js_form_validation.asp

1 <body>
2 <form action="submitpage.htm" onsubmit="return validate_form(this)" method="post">
3 Email: <input type="text" name="email" size="30">
4 <input type="submit" value="Submit">
5 </form>
6 </body>

这段代码中的 <input type="text" name="email" size="30">元素 就是表单,你想告诉服务器的数据就是<input>标签里你输入的数据。

<input type="submit" value="Submit"> 这个是提交按钮,可以算是表单的一部分,也可以不算。因为某些场景,可能不是一个按钮提交数据,可能是个按键、拖拽等等。

青铜篇的最后,隆重推出一个万恶之源,什么东西呢,是的,jQuery插件。

解释为什么是万恶之源之前,先简要说明一下jQuery插件是什么。

教程看这里http://www.w3school.com.cn/jquery/

jQuery是一个优化的JavaScript的库,肯定有人问,库是什么?库就是根据原始编程语言,经过代码转化,变成一种易读、操作简化的原始编程语言进化版。

比如,原始JavaScript中,通过id获得对应元素的话需要

var x=document.getElementById("myHeader")

来源于http://www.w3school.com.cn/jsref/met_doc_getelementbyid.asp

但是同样的操作,用jQuery就变成了

var x=$("#myHeader")

是不是感觉又好懂,有简便呢。jQuery的优势就是对DOM的操作,什么是DOM呢?简单理解为嵌套的一个个元素标签。

下面,就说明为什么是万恶之源了,

从开始接触jQuery后,就会深深的爱上它。因为它几乎可以让我们做的我们想做的一切。

可为什么是几乎呢,因为代码复用的问题,对,也就是组件化开发。

代码量少的时候,或者说,业务流程唯一的时候。没有做同样事情的操作,自然jQuery就做到了我们想要的。

可是,可是,可是

如果有代码相同的业务流程呢。仅仅是多了几个新参数的时候。jQuery就会显得非常臃肿。尤其是涉及到DOM操作的时候,还需要看到底操作了什么,两个相同的业务流程有哪些区别。

比如,我有个页面有两个栏目,

第一个栏目中,先需要下拉列表选择省、市、区,然后点击确定,出现对应列表,列表的操作还会反选下拉列表省、市、区中的数据。

第二个栏目中,先需要下拉列表选择省、市、区、学校,学校还要选择有无分校的,然后再点击确定,出现对应列表,列表的操作还会反选下拉列表省、市、区、学校中的数据。

看,这两个业务流程有相同的部分,下拉列表选择省、市、区,这部分如果做成组件的话,这个组件可以输出省、市、区三个数据;

同样,把省、市、区三个数据输入到这个组件,下拉列表显示对应的省、市、区。

因为涉及到DOM操作,所以没有组件化的操作,就需要把数据和下拉列表元素对应起来。数据不能传错。而且代码冗长。

对的,每次需要把数据放在下拉列表元素中,都需要单独写一段单独的代码。你要修改这块,就需要通读整篇代码,把对应的代码都改才行。维护困难啊。这就是代码耦合性。

所以,组件化开发是成熟的编程方式。

对于JavaScript来说,

面向对象编程

就是这种成熟的编程方式。

面向对象技术:http://www.w3school.com.cn/js/pro_js_object_oriented.asp

面向对象编程:https://www.liaoxuefeng.com/wiki/001434446689867b27157e896e74d51a89c25cc8b43bdb3000/001434499763408e24c210985d34edcabbca944b4239e20000

也是白银篇的开始。

转载于:https://www.cnblogs.com/lt666/p/9403825.html

前端-进击的巨人-青铜篇相关推荐

  1. 前端进击的巨人(四):略知函数式编程

    系列更文前三篇文章,围绕了一个重要的知识点:"函数". 函数调用栈.函数执行上下文.函数作用域到闭包.可见不理解函数式编程,代码都撸不好. 函数是一等公民 函数与其它数据类型一样, ...

  2. 前端进击的巨人(二):栈、堆、队列、内存空间

    面试经常遇到的深浅拷贝,事件轮询,函数调用栈,闭包等容易出错的题目,究其原因,都是跟JavaScript基础知识不牢固有关,下层地基没打好,上层就是豆腐渣工程,新人小白,踏实踩土才是关键. 打地基第二 ...

  3. ie9无法获取未定义或 null 引用的属性“indexof”_前端JS基础篇(二)JS基本数据类型和引用数据类型及检测数据类型方法...

    JS中的数据类型 (一).基本数据类型(值类型) 1.number:数字 -12.12.5.-12.5 0这些数字都是number: js中增加了一个number类型的数据:'NaN' typeof ...

  4. 前端总结·基础篇·CSS(二)视觉

    前端总结系列 前端总结·基础篇·CSS(一)布局 前端总结·基础篇·CSS(二)视觉 前端总结·基础篇·CSS(三)补充 前端总结·基础篇·JS(一)原型.原型链.构造函数和字符串(String) 前 ...

  5. 前端工具--less篇

    前端工具–less篇 less 中文网http://www.bootcss.com/p/lesscss/ 常见错误及解决: sublime text 3 安装less2css保存less出现错误 未安 ...

  6. 前端总结·基础篇·CSS

    前端总结·基础篇·CSS 1 常用重置+重置插件(Normalize.css,IE8+) * {box-sizing:border-box;}  /* IE8+ */body {margin:0;}  ...

  7. web前端研发工具篇

    web前端研发工具篇 一.常见前端开发IDE 1.Visual Studio Code 2.hbuilder 3.sublime text3 4.WebStorm 5.Atom 6.Dreamweav ...

  8. 前端进击的巨人(六):知否知否,须知this

    常见this的误解 指向函数自身(源于this英文意思的误解) 指向函数的词法作用域(部分情况) this的应用环境 1. 全局环境 无论是否在严格模式下,全局执行环境中(任何函数体外部)this都指 ...

  9. 前端进击的巨人(三):从作用域走进闭包

    进击的巨人第三篇,本篇就作用域.作用域链.闭包等知识点,一一击破. 作用域 作用域:负责收集并维护由所有声明的标识符(变量)组成的一系列查询,并实施一套非常严格的规则,确定当前执行的代码对这些标识符( ...

最新文章

  1. 【C#串口编程计划】如何避免关闭串口时软件死锁
  2. epson机器人编程 范例_2019年机器人盘点(IREX篇)
  3. LVM管理-元数据及分区表的恢复
  4. Python系列之Collections内置模块(2)
  5. qoq是什么意思的缩写_“yjgj他的pyq很zqsg”,90后从未觉得自己老,直到看到00后缩写的那一秒……...
  6. ubuntu的Unity功能安装
  7. 如何使用开源SFU构建RTC云服务
  8. Activity的回调机制---Activity学习笔记(三)
  9. [Android] Android学习手记(二)
  10. python中如何比较两个列表_python中如何比较两个列表
  11. jpa 自定义sql if_SpringBoot整合JPA实现多数据源及读写分离
  12. finalshell连接超时怎么解决_vncviewer连接超时,vncviewer连接超时怎么解决
  13. 职场中相信“付出总有回报”的人,后来都怎么样了?
  14. Win10更换壁纸一直跳到纯色背景问题解决记录
  15. JMeter下载及安装详细教程
  16. Vue 中如何引入第三方 JS 库
  17. 科学计算机怎么算四分位数,科学网—四分位数间距 - 贺小星的博文
  18. 网站URL被劫持怎么办?
  19. Spring In Action 学习 第一章 Spring之旅
  20. memmove函数c语言实现,【C语言】实现memcopy、memmove函数

热门文章

  1. 互联网商业模式有哪些?
  2. 浅谈机器人基础概论--运动控制算法
  3. 【翻译】为什么你需要一个API网关来管理对你的API的访问?
  4. IDEA web项目代码改动了却不更新解决
  5. Threes.js入门篇之5 - 场景操纵器Trackball
  6. 1-3 MATLAB符号变量的使用、符号变量转为匿名函数、向量值匿名函数、符号变量转为向量值函数、结构体批量提取数据
  7. 服务消息驱动:Stream
  8. swoolephp加密_6种php加密解密方法
  9. 谷歌浏览器开发者工具 preserve log
  10. 最近工作生活总结——环环相扣