js用途
前端三层
结构层 HTML 从主义角度描述页面的结构
样式层 CSS 从审美的角度装饰页面
行为层 JS 从交互角度提升体验
HTML 里面的 b(加粗)/i(倾斜)/u(下划线)等标签由于严重影响了这三层关系,在严格版不被推荐使用。
为什么要分为三层?使页面像人类一样,有分工,利于维护。
js用来制作web页面的交互效果,提升用户体验。
应用场景如:
轮播图(焦点图):图片左右切换。
选项卡:点击某条目出现与之相应的内容。
表单验证(ajax):
QQ浏览器的欢迎界面。
浏览器 审查 setitings general 下有个 disable javascript 可以禁用 js 。
ajax:
禁用后打开淘宝页面,下拉时不会再出现更多新的商品内容,因为他们是使用 ajax 动态加载的。
这样做可以减轻服务器压力,减少流量。当用户不需要更多内容的时候我们就不必要在页面上传输这些内容。
用户需要时再加载。
这样的技术也叫懒加载。
js在当今如果离开他那么网页将不能正常使用,比如商品无法继续加载。
js的诞生
1995年 Netscape (网景)公司的一民员工 Brendan Eich (布兰登)开发的。
1996年 首次应用在 netscape 2 浏览器上。
js的名字 当时的不叫 JavaScript ,而叫 LiveScript (活力脚本),但当时 java 语言很流行,网景公司也把名字改得像 java 一样,以增名气。
几个月后 Microsoft(微软) 随着 ie3 推出了与js基本兼容的语言 JScript。
再几个月后 Netscape 把 js 提交到 Ecma Intermational (一个欧洲标准化组织),这个组织在
1997年 发布了 ECMAScript标准第一版。
1999年 以第三版形式更新,第四版由于委员会意见不合没有推出。
2009年 发布了第五版。
2015年 6月发布第六版。
js之父——布兰登
js是布兰登在网景公司开发的,布兰登被称为js之父。
布兰登后来从网景转向火狐。本来在火狐是做CEO的,但由于他比较传统,反对公司的一些“开放”文化,没过多久就从CEO(首席执行官)降至CDO(开发总监)。
js从丑小鸭到金凤凰
2003年
广告:页面上的漂浮广告,弹窗广告。所以当时浏览器就推出一个功能,禁用广告,其实也就是禁用js。
特效:比如鼠标后面跟随着星星。当时的工程师都觉得js不用学习,各种特效使用“效果合集”一套就可以了,没有人琢磨语言特性。
2004年
谷歌首次使用 ajax ,比如谷歌推荐google suggest,搜索感应,特别能提高用户体验。
js从此被重视。很多人开始学习js。当时问世了两本js巨作《犀利书》、《高级程序设置》。
2007年
三层分离,iphone发布,人们开始注重用户体验。大家发现了js是web页面中制作交互效果的唯一语言(微软的JScript和VBscript都被市场排斥),js被提到了相应高的一个地位。招聘信息开始出现独立的“js工程师”职位,之前都是后台工程师稍微写写js。
大家都在拼js的用户体验,如查看酒店地址,酒店的地图相应展现。
2008年
chrome 浏览器发布,v8引擎加快了js的解析。之前的浏览器解析js卡顿。
2009年
jQuery 变得流行,解决了浏览器兼容问题。制作页面效果变得简单。越来越多的初学者愿意学习js。
2010年
cnavas 画布技术得到众多浏览器支持。可以用canvas替代flash,并能制作小游戏,比如偷菜、切水果。
2011年
node.js得到应用,即让js运行在服务器上。node.js是单线程非阻塞应用。能让企业用最小的成本实现后台网站。
2012年
html5+css3的流行,也带火了js。没有js,html5+css3也做不了多大的炫酷效果。
2013年
hybrid app 模式开始流行。即做手机app时,老板们发现要雇佣三队人马,iso、安卓、windows phone。花三份工资,产品还不好迭代。这时人们发明了用网页技术开发手机app的技术,叫 web app。 即hybrid app,混合app。同时结合web技术和原生开发技术,省钱,好迭代。
2015年
ecma6 发布,也叫 ecma2015 。改变较大,把语言特性做了颠覆性的增强。
js与其他语言及学习方法
好学的地方
界面效果,不像c语言。
语法来源于c和java。
是弱变量类型的语言。
运行在宿主环境中,不用关心内存,垃圾回收。
难学的地方
兼容性问题。 不怕造轮子,多写几便。
花式写法很多,抽象。 从简单入手,细细品味代码。
太多细节。 写好笔记,做好实验。
学习方法
多“品”程序,多思考内在逻辑,读懂每一行代码。
js机械重复性的劳动几乎为0,基本都是创造性的劳动(HTML、CSS基本都是重复的)。
永远不要背程序,每一个程序都必须自己会写。
js学习路线
语言核心
DOM、BOM、页面特效
jQuery
面向对象
组件开发
框架原理
PHP
Ajax
HTML5、CSS3
canvas
node.js