前端开发的入门门槛其实很低,与服务器端语言先慢后快的学习曲线相比,前端开发的学习曲线是先快后慢。
HTML 甚至不是一门语言,他仅仅是简单的标记语言!
CSS 只是无类型的样式修饰语言。当然可以勉强算作弱类型语言。
Javascript 的基础部分相对来说不难,入手还算快。
也正因为如此,前端开发领域有很多自学成“才”的同行,但大多数人都停留在会用的阶段,因为后面的学习曲线越来越陡峭,每前进一步都很难。
Web前端技术有一些江湖气,知识点过于琐碎,技术价值观的博弈也难分伯仲,即全局的系统的知识结构并未成体系,这些因素也客观上影响了“正统“前端技术的沉淀!而且各种“奇技淫巧”被滥用,前端技术知识的传承也过于泛泛,新人难看清时局把握主次。因此,前端技术领域,为自己觅得一个靠谱的师兄,重要性要盖过项目、团队、公司、甚至薪水。
另一方面,正如前面所说,前端开发是个非常新的职业,对一些规范和最佳实践的研究都处于探索阶段。
总有新的灵感和技术不时闪现出来,例如CSS sprite、负边距布局、栅格布局等;
各种JavaScript框架层出不穷,为整个前端开发领域注入了巨大的活力;
浏览器大战也越来越白热化,跨浏览器兼容方案依然是五花八门。
为了满足“高可维护性”的需要,需要更深入、更系统地去掌握前端知识,这样才可能创建一个好的前端架构,保证代码的质量。
随着手持设备的迅猛发展,带动了HTML5行业标准的快速发展。web领域的技术,大概有10年都没有大的更新了!
现在市场很需要优秀的、高级的前端工程师。 一方面是因为这是一个比较新的细分行业,而且前端程序员大都自学一部分,知识结构不系统;另一方面,大学里面没有这种课程,最最重要的是:北大青鸟这类培训机构也没有专门的前端工程师的培训课程!!
吴亮在《JavaScript 王者归来》第一张的序里面说:大多数程序员认为 Javascript 过于简陋,只适合一些网页上面花哨的表现,所以不愿花费精力去学习,或者以为不学习就能掌握。
实际上,一门语言是否脚本语言,往往是她的设计目标决定,简单与复杂并不是区分脚本语言和非脚本语言的标准。
事实上,在脚本语言里面,Javascript 属于相当复杂的一门语言,他的复杂度即使放在非脚本语言中来衡量,也是一门相当复杂的语言!
我们生活在一个充满规则的宇宙里面。社会秩序按照规则运行,计算机语言几乎全部是规则的集合。计算机前辈们定义规则,规则约束我们,我们用规则控制数据。大部分时候,对数据的合理控制,来自于你对规则的掌握。
学习 HTML,CSS 应该先跟着书仔细、扎实的学一遍。然后就需要做大量的练习,做各种常规的、奇怪的、大量的布局练习来巩固、理解自己的知识。
而学习 Javascript 首先要知道这门语言可以做什么,不能做什么,擅长做什么,不擅长做什么!
如果你只想当一个普通的前端程序员,你只需要记住大部分 Javascript 函数,做一些练习就可以了。
如果你想当深入了解Javascript,你需要了解 Javascript 的原理,机制。需要知道他们的本源,需要深刻了解 Javascript 基于对象的本质。
还需要深刻了解浏览器宿主下的Javascript的行为、特性。
因为历史原因,Javascript一直不被重视,有点像被收养的一般! 所以他有很多缺点,各个宿主环境下的行为不统一、内存溢出问题、执行效率低下等问题。
作为一个优秀的前端工程师还需要深入了解、以及学会处理 Javascript 的这些缺陷。
那么一名优秀的、甚至卓越的 前端开发工程师的具备什么条件?
首先,优秀的Web前端开发工程师要在知识体系上既要有广度和深度! 做到这两点,其实很难。所以很多大公司即使出高薪也很难招聘到理想的前端开发工程师。技术非黑即白,只有对和错,而技巧则见仁见智。
在以前,会一点Photoshop和Dreamweaver的操作,就可以制作网页。
现在,只掌握这些已经远远不够了。无论是开发难度上,还是开发方式上,现在的网页制作都更接近传统的网站后台开发,所以现在不再叫网页制作,而是叫Web前端开发。
Web前端开发在产品开发环节中的作用变得越来越重要,而且需要专业的前端工程师才能做好。
Web前端开发是一项很特殊的工作,涵盖的知识面非常广,既有具体的技术,又有抽象的理念。简单地说,它的主要职能就是把网站的界面更好地呈现给用户。
其次,优秀的Web前端开发工程师应该具备快速学习能力。Web发展的很快,甚至可以说这些技术几乎每天都在变化!如果没有快速学习能力,就跟不上 Web发展的步伐。前端工程师必须不断提升自己,不断学习新技术、新模式;仅仅依靠今天的知识无法适应未来。Web的明天与今天必将有天壤之别,而前端工程师的工作就是要搞清楚如何通过自己的Web应用程序来体现这种翻天覆地的变化。
说到这里,我想起了一个大师说过的一句话:对于新手来说,新技术就是新技术。
对于一个高手来说,新技术不过是旧技术的延伸。
再者,优秀的前端工程师需要具备良好的沟通能力,因为前端工程师至少都要满足四类客户的需求。
1、产品经理。这些是负责策划应用程序的一群人。他们会想出很多新鲜的、奇怪的、甚至是不可能实现的应用。一般来说,产品经理都追求丰富的功能。
2、UI设计师。这些人负责应用程序的视觉设计和交互模拟。他们关心的是用户对什么敏感、交互的一贯性以及整体的好用性。一般来说,UI设计师侯倾向于流畅靓丽、但并不容易实现的用户界面,而且他们经常不满前端工程师造成 1px 的误差。
3、项目经理。这些人负责实际地运行和维护应用程序。项目管理的主要关注点,无外乎正常运行时间、应用程序始终正常可用的时间、性能和截止日期。项目经理追求的目标往往是尽量保持事情的简单化,以及不在升级更新时引入新问题。
4、最终用户。指的是应用程序的主要消费者。尽管前端工程师不会经常与最终用户打交道,但他们的反馈意见至关重要。最终用户要求最多的就是对个人有用的功能,以及竞争性产品所具备的功能。
在成为一个优秀的前端工程师的道路上,充满了汗水和辛劳。
- 服务器说白了就是计算机,通过安装了某些软件,就可以提供某些特定的服务器。
- 根据服务器软件的功能,名称,安装的系统这些不同的标准,可以对服务器划分成不同的类型。
- HTTP服务器主要提供网站浏览服务,通常需要结合某种编程语言进行开发,我们通常称之为服务器开发。
- 专业的服务器与计算机的区别
- 稳定性:服务器要求7*24不间断运行。
- 性能:服务器能够同时响应更多客户端的请求。
- 价格:服务器价格通常比普通计算机贵很多。
具有向服务器索取服务能力的终端,叫做客户端。
- 客户端:电脑、平板、手机安装了客户端软件,就可以称为客户端
- 客户端:安装客户端软件,索取服务的一方
- 服务器:安装服务器软件,提供服务的一方
浏览器===>索取网站服务浏览的软件
迅雷===>索取文件下载服务的软件
今日头条====>索取新闻头条服务
对于前端工程师而言,主要接触到的客户端软件就是浏览器,当然也可能会涉及大一些app开发。
以浏览器为宿主环境,结合 HTML、CSS、Javascript等技术,而进行的一系列开发,通常称之为前端开发。
软件架构可以分为BS架构与CS架构
Client/Server架构,即客户端/服务器架构。是大家所熟悉的软件体系结构。需要安装对应的客户端软件,才能获取响应的服务。
Broswer/Server架构,即浏览器/服务器架构。随着Internet的兴起,对CS结构的一种变化的结构。用户只需要安装浏览器即可。
- 不需要安装,只需要浏览器即可。
- 相比BS架构,性能相对较差,没有那么流畅和稳定。
- 不用兼容操作系统。但是需要兼容浏览器。
//思考:我写的代码,放到服务器后,同学们是如何访问到我的页面的?
|
所谓IP地址就是给每个连接在互联网上的主机分配的一个32位地址。(就像每部手机能正常通话需要一个号码一样)
通过ip就可以找到具体的某一台计算机。
例 //可以获取到京东的ip
|
localhost
,意思为本地主机。这是一个保留域名,主要用于本地测试,对应IP地址为的执行过程。
phpStudy是一个PHP调试环境的程序集成包。
退出该软件,并不能完全退出程序,如果在去启动其他类似wrap的集成软件,会启动不成功。
安装phpStudy,解压双击安装(非中文路径),其它默认安装。
推荐就安装在默认的目录下,一定不能有中文,否则肯定启动不起来。
如果phpStudy启动发生错误,参数下列几点。
如果发现服务器启动不成功,很大原因是端口被占用了,因为windows默认会有一个iis服务器,只需要把iis服务器给禁用了即可。
提示缺少vc9 库文件
在提供的ajax资料库中找到phpStudy运行库, 根据自己电脑操作系统的位数安装对应的vc9运行库即可。
如果希望自己的服务器能够被别人访问。需要关闭防火墙。
为了减少出错安装路径不得有汉字,如有防火墙开启,会提示是否信任httpd、mysqld运行,请选择全部允许。
修改网站目录与默认首页
PHP数据读写到文件(数据持久化)
程序运行过程中,数据是存储在内存中,程序结束数据会销毁,如果希望可以永久存储,可以将数据存储在硬盘上(存储在文件中); 将数据有内存 存储到硬盘的过程,称为数据的持久化;(注意文件名字不能是中文的,否则写入不进去)
// 把一个字符串写入一个文件中 // 一执行这个函数,就会将字符串存到文件中,如果没有该文件,就会创建该文件 file_put_contents('./ // 指定使用 cookie 的域。 如果此域与当前正在浏览的域不匹配,则可视为“第三方 cookie”,将被浏览 // 器拒绝。 这可以防止一个域针对不同域设置一个 cookie。
|
CORS的具体流程(了解)
- 浏览器会根据同源策略 查看是否是跨域请求,如果同源,直接发送ajax请求。
- 如果非同源,说明是跨域请求,浏览器会自动发送一条请求(预检请求 ,浏览器自身内部发送的),并不会携带数据,服务器接受到请求之后,会返回请求头信息,浏览器查看返回的响应头信息中是否设置了
header('Access-Control-Allow-Origin:请求源域名或者*');
- 如果没有设置,说明服务器不允许使用cors跨域,那么浏览器不会发送真正的ajax请求。
- 如果返回的响应头中设置了
header('Access-Control-Allow-Origin:请求源域名或者*');
,浏览器会跟请求头中的Origin:
进行对比,如果满足要求,则发送真正的ajax请求,否则不发送。
- 结论:跨域行为是浏览器行为,是浏览器阻止了ajax行为。服务器与服务器之间是不存在跨域的问题的
其他的跨域手段(没卵用)
以下方式基本不用,了解即可:
1、顶级域名相同的可以通过)
”;//让页面跳转到百度首页
【案例:定时跳转.html】
window.navigator的一些属性可以获取客户端的一些信息
history对象表示页面的历史
innerText
和innerHTML
属性都是用来获取和设置标签的内容的。但是二者还是有区别的。
innerHTML
可以用于获取和设置标签的所有内容,包括标签和文本内容
//innerHTML:内部的HTML // 获取标签内容的时候,不管标签还是文本,都能获取到 // innerHTML设置内容的时候,覆盖原来内容,标签也能生效,浏览器能解析这个标签。
|
innerText
可以用于获取和设置标签的文本内容,会丢弃掉标签
//innerText:内部 文本 // 获取标签内容的时候,只会获取文本,标签扔掉了 // 设置标签内容的时候,覆盖原来内容,对标签进行转义(目的:把标签直接当文本来用)
|
-
innerHTML
是W3C的标准属性,而innerText
是IE提出来的属性,存在兼容性问题。因此更加推荐大家使用innerHTML。
浏览器兼容性:指网页在各种浏览器上的显示效果不一致。或者是一些属性和方法在低版本的浏览器中不支持。
//1. innerText是IE提出来的属性,因此低版本的火狐浏览器不支持这个属性。 //2. 火狐有一个textContent属性,效果跟innerText一样,但是IE678不支持这个属性
|
解决浏览器兼容性的处理方式:
1. 能力检测 (常用) 2. 代理检测 (判断浏览器的类型和版本) 3. 怪癖检测 (某个浏览器具有特殊的功能)
|
//childNodes: 获取所有的子节点(包括了元素节点和其他很多类型的节点,不包括孙子节点,基本不常用) //children: 获取所有的子元素节点(类似数组的length属性一样,children也是时刻在更新的。用途很广泛) //firstChild: 第一个节点 //firstElementChild //第一个子元素 有兼容性问题 可以封装一个兼容性方法 //lastChild //最后一个节点 //lastElementChild //最后一个子元素 有兼容性问题 可以封装一个兼容性方法
|
【案例:列表的隔行变色】
//onkeydown: 监听鼠标按下事件(获取的是上一次的表单的值) //onkeyup: 监听鼠标弹起事件
|
【案例:表单校验加强版】
【案例:表单校验加强版(修复bug)】
标签不仅可以通过class
属性操作样式,还可以通过style
属性操作样。同样的DOM对象可以通过className
操作样式,也可以通过style
属性操作样。
- style属性是一个对象
- style这个对象中属性值都是字符串格式,所以在设置样式的时候,属性值一定要用引号包含,该有单位的记得带单位。
- 标签中style属性有哪些样式名,在style这个对象中就有对应的属性名。
- 标签中有一些属性带了-,比如background-color,到了style对象中,变成了驼峰命名法,backgroundColor(因为’-‘在js中不是一个合法的标识符)
- DOM中的style属性只能获取到和设置行内样式,在类样式中定义的样式通过style获取不到。
【案例:隐藏京东广告】
【案例:隐藏淘宝二维码】
【案例:让当前文本框高亮显示】
【案例:表格隔行变色+高亮】
【案例:style设置位置】
【案例:style操作层级】
- false:默认值:是浅复制,只会复制标签,节点本身,不会复制节点的孩子。
- true: 深度复制,会复制标签,还会复制标签的所有内容 常用
- 克隆出来的节点跟原来的节点没有关系了,修改了也不会相互影响。
- 如果克隆的节点带了id,我们需要给id重新设置一个值,不让id冲突
parent:调用者,父节点来调用
newChild:需要添加的那个孩子。
作用:把newChild添加到parent的孩子的最后面。
如果添加的是页面中本来就存在的元素,是一个剪切的效果,原来的就不在了。
parent:必须要父节点来调用
newChild:需要添加的那个节点
refChild:添加到哪一个节点的前面。
? insertBefore同appendChild一样如果添加的是页面中本来就存在的元素,是一个剪切的效果,原来的就不在了。
可以生成新的节点,但是不推荐使用。如果页面已经加载完成了,你还是用document.write写内容的话,会把之前的页面给覆盖掉
原理:页面从上往下加载的时候,会开启一个文档流,当页面加载完,文档流就会关闭。
document.write的本意就是在文档流上写入内容。如果页面没加载完成,文档流还是开着的,document.write直接在这个文档流上写东西
如果页面加载完成了,还是用document.write写东西,会重新开启一个新的文档流,往新的文档流上写东西,旧的文档流就被新的文档流覆盖了。
innerHTML创建节点的时候有一个特点,如果原来有内容的话,使用innerHTML会把原先的内容给干掉。
慎用:很容易出现效率问题。
作用:在内存里面创建了一个节点
功能:由父盒子调用,删除里面的一个子元素。
涉及到字符串拼接的问题:
? 字符串不能换行:js的末尾可以不写分号来表示一行的结束,因为js在换行的地方,发现没有分号的话,会自动加上分号的。
下载) 800万海量严选共享作品,20M/s 极速下载,每日更新 5000+,低至0.18元/天。
千图网提供精美好看的icon设计效果图免费下载,本次icon设计效果图是有关icon效果图,主题是 采集大赛 我所做的手机主题叫做疯狂猜图。当然,主题这种东西是不该让用户猜的,所以读图比猜图来得更适合。它的风格简单,图标有一个统一的白颜色外框,其内容由简单的图形拼凑成。简单明了,相信很多用户会喜欢,编号是,格式是png,建议使用对应的软件打开,该icon效果图大小是204.598
采集大赛 我所做的手机主题叫做疯狂猜图。当然,主题这种东西是不该让用户猜的,所以读图比猜图来得更适合。它的风格简单,图标有一个统一的白颜色外框,其内容由简单的图形拼凑成。简单明了,相信很多用户会喜欢是由icon效果图设计师
app_happy_94上传. 浏览本次作品的您可能还对 采集大赛 我所做的手机主题叫做疯狂猜图。当然,主题这种东西是不该让用户猜的,所以读图比猜图来得更适合。它的风格简单,图标有一个统一的白颜色外框,其内容由简单的图形拼凑成。简单明了,相信很多用户会喜欢。
手机ui界面 手机界面图标 界面设计模板 app界面设计
登录界面 安卓界面