说说web 2.0生态圈的那些事

先来说一道面试题吧,“说一下,web 2.0 和web 1.0的区别?”

官方的解释是这样的:

  Web1.0 的主要特点在于用户通过浏览器获取信息,Web2.0 则更注重用户的交互作用,用户既是网站内容的消费者(浏览者),也是网站内容的制造者。web1.0与web2.0最大的不同就是在web2.0之中个人不再是互联网信息被动的接收者,而是作为一个主动者参与到了互联网的发展之中!用户不再是一个单纯的浏览者而是成为了互联网这块大网的编织者,使用者与传播者!由Web1.0单纯通过网络浏览器浏览html网页,模式向内容更丰富、联系性更强、工具性更强的Web2.0互联网模式的发展已经成为互联网新的发展趋势。

  再来引申说一下web 3.0,web 3.0之前的个体地位“唯中心论”。要么以门户为中心,要么以个人为中心。而web3.0的提法是完全的去中心,无中心概念。只有利益圈和利益链的概念,也就是只有起点或者甚至没有起点,如在那个例子里,博客大赛是一个利益链的起点,如果最终的终点回到博客大赛上,那就无所谓起点,每个参与方都可以算是一个利益的起点。你只要是参与进来,你就可以处于每个利益的节点,实现利益共享。

***************************互联网新贵  前端工程师*********************************

那么说到web 2.0, 我们来说说承载web 2.0 发展所需要的一些前端的技术:HTML4; HTML5; CSS; DOM; JQUERY; BOOTSTRAP; JAVASCRIPT; AJAX;下面我们就从技术角度对这些中的内容做一些整理和总结:

****************************************** HTML 5 start******************************************************

先来说说html5中的<video>标签,(取代了传统的通过插件播放Flash之类的方法)。<video>视频标签;<audio>音频标签;draggable="true"可拖放属性;标签<canvas>结合JavaScript来在网页上绘制图像。接下来我们分析一个雪花的案例源码:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<!--meta标签提供有关页面的元信息, 放在文档头部, 处于<head>标签内部-->
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width,hight=device-hight,minimum-scale=1.0,maximum-scale=1.0,ser-scalable=none"/>
<title>3D雪花飘落场景动画特效</title>
<style type="text/css">
body {
margin: 0; padding: 0; position: relative; background-image: url(images/xh.jpg);
background-position: center; /*background-repeat: no-repeat;*/
width: 100%; height: 100%; background-size: 100% 100%; }
</style>
</head> <!--
javascript作为一种脚本语言可以放在html页面中任何位置,但是浏览器解释html时是按先后顺序的,所以前面的script就先被执行。
比如进行页面显示初始化的js必须放在head里面,因为初始化都要求提前进行(如给页面body设置css等);而如果是通过事件调用执行的function那么对位置没什么要求的。
因而除了部分需要在网页中输出内容、调整显示的JavaScript必须放在<head></head>之间,
一般的JavaScript放在<head></head>和放在<body></body>之间从执行结果来看是没有区别的,但是有如下的经验规则:
1.当JavaScript要在页面加载过程中动态建立一些Web页面的内容时,应将JavaScript放在body中。 
2.定义为函数并用于页面事件的JavaScript应当放在head标记中,因为它会在body之前加载。
采用这种方法,页面就不会被脚本搞得一团糟,易于阅读,在每个页面中,总可以在同一个位置找到脚本。
-->
<body id="body" onLoad="init()">
<script type="text/javascript" src="js/ThreeCanvas.js"></script>
<script type="text/javascript" src="js/Snow.js"></script>
<script type="text/javascript">
var SCREEN_WIDTH = window.innerWidth;//
var SCREEN_HEIGHT = window.innerHeight;
var container;
var particle;//粒子
var camera;
var scene;
var renderer; var starSnow = 1; var particles = []; var particleImage = new Image();
//THREE.ImageUtils.loadTexture( "img/ParticleSmoke.png" );
particleImage.src = 'images/ParticleSmoke.png';
<!--在上面,看到这个标签<body id="body" onLoad="init()">时,会执行-->
function init() {
//alert("message3"); <!--
document.creatElement('');的用法:
创建元素‘’到当前的文档,(创建div元素到当前的文档)
-->
container = document.createElement('div');//container:画布实例; <!--
document.body.appendChild()方法, -->
document.body.appendChild(container); camera = new THREE.PerspectiveCamera( 60, SCREEN_WIDTH / SCREEN_HEIGHT, 1, 10000 );
camera.position.z = 1000;
//camera.position.y = 50; scene = new THREE.Scene();
scene.add(camera); renderer = new THREE.CanvasRenderer();
renderer.setSize(SCREEN_WIDTH, SCREEN_HEIGHT);
var material = new THREE.ParticleBasicMaterial( { map: new THREE.Texture(particleImage) } );
//alert("message2");
for (var i = 0; i < 500; i++) {
//alert("message");
particle = new Particle3D( material);
particle.position.x = Math.random() * 2000-1000; particle.position.z = Math.random() * 2000-1000;
particle.position.y = Math.random() * 2000-1000;
//particle.position.y = Math.random() * (1600-particle.position.z)-1000;
particle.scale.x = particle.scale.y = 1;
scene.add( particle ); particles.push(particle);
} container.appendChild( renderer.domElement ); //document.addEventListener( 'mousemove', onDocumentMouseMove, false );
document.addEventListener( 'touchstart', onDocumentTouchStart, false );
document.addEventListener( 'touchmove', onDocumentTouchMove, false );
document.addEventListener( 'touchend', onDocumentTouchEnd, false ); setInterval( loop, 1000 / 60 ); } var touchStartX;
var touchFlag = 0;//储存当前是否滑动的状态;
var touchSensitive = 80;//检测滑动的灵敏度;
//var touchStartY;
//var touchEndX;
//var touchEndY;
function onDocumentTouchStart( event ) { if ( event.touches.length == 1 ) { event.preventDefault();//取消默认关联动作;
touchStartX = 0;
touchStartX = event.touches[ 0 ].pageX ;
//touchStartY = event.touches[ 0 ].pageY ;
}
} function onDocumentTouchMove( event ) { if ( event.touches.length == 1 ) {
event.preventDefault();
var direction = event.touches[ 0 ].pageX - touchStartX;
if (Math.abs(direction) > touchSensitive) {
if (direction>0) {touchFlag = 1;}
else if (direction<0) {touchFlag = -1;};
//changeAndBack(touchFlag);
}
}
} function onDocumentTouchEnd (event) {
// if ( event.touches.length == 0 ) {
// event.preventDefault();
// touchEndX = event.touches[ 0 ].pageX ;
// touchEndY = event.touches[ 0 ].pageY ; // }这里存在问题
var direction = event.changedTouches[ 0 ].pageX - touchStartX; changeAndBack(touchFlag);
} function changeAndBack (touchFlag) {
var speedX = 25*touchFlag;
touchFlag = 0;
for (var i = 0; i < particles.length; i++) {
particles[i].velocity=new THREE.Vector3(speedX,-10,0);
}
var timeOut = setTimeout(";", 800);
clearTimeout(timeOut); var clearI = setInterval(function () {
if (touchFlag) {
clearInterval(clearI);
return;
};
speedX*=0.8; if (Math.abs(speedX)<=1.5) {
speedX=0;
clearInterval(clearI);
}; for (var i = 0; i < particles.length; i++) {
particles[i].velocity=new THREE.Vector3(speedX,-10,0);
}
},100); } function loop() {
for(var i = 0; i<particles.length; i++){
var particle = particles[i];
particle.updatePhysics(); with(particle.position)
{
if((y<-1000)&&starSnow) {y+=2000;} if(x>1000) x-=2000;
else if(x<-1000) x+=2000;
if(z>1000) z-=2000;
else if(z<-1000) z+=2000;
}
} camera.lookAt(scene.position); renderer.render( scene, camera );
}
</script>
</body>
</html>

2010年正式推出了HTML5,跨平台完美运行,对硬件要求非常低。代替Flash的存在。html5它不是一种编程语言,而是一种超文本标记语言。

1.html5新特性:<canvas>绘制图形。<video>和<audio>标签播放视频和音频。对本地离线存储的更好支持。新的特殊内容元素(article footer header nav section)。新的表单控件(calendar date time url email search)。

2.html5开发工具:Intellij IDEA 和web storm。

3.几点学习方法:寻求问题根源;查看参考文档;参考案例;常见问题通过搜索引擎搜索。

4.html5工程师要求掌握的技能包:xhtml、css3、javascript、jquery、jquery-UI、jquery-mobile。

5.层间在面试中被问到的三个问题:JavaScript的for循环;javascript的预编译;javascript的闭包。

说说web 2.0生态圈的那些事

Canvas是HTML中你可以绘制图形的区域;

html5的本地存储概念:很多时候我们会存储用户本地信息到电脑上,例如:比方说用户有一个填充了一半的长表格,然后突然网络连接断开了,这样用户希望你能存储这些信息到本地,当网络恢复的时候,他想获取这些信息然后发送到服务器进行存储
现代浏览器拥有的存储被叫做“Local Storage”,你可以存储这些信息。

  Cookies Local storage
客户端/服务端 客户端和服务端都能访问数据。Cookie的数据通过每一个请求发送到服务端 只有本地浏览器端可访问数据,服务器不能访问本地存储直到故意通过POST或者GET的通道发送到服务器
大小 每个cookie有4095byte 每个域5MB
过期 Cookies有有效期,所以在过期之后cookie和cookie数据会被删除 没有过期数据,无论最后用户从浏览器删除或者使用Javascript程序删除,我们都需要删除

上面是本地存储和cookie的区别。

什么是事务存储:会话存储和本地存储类似,但是数据在会话中有效,简而言之数据在你关闭浏览器的时候就被删除了。为了创建一个会话存储你需要使用“sessionStorage.variablename.”在以下的代码我们创建了一个名为”clickcount”的变量;

如果你刷新浏览器则数目增加,但是如果你关闭浏览器,“clickcount”变量又会从0开始。

1
2
3
4
5
6
7
8
if(sessionStorage.clickcount)
{
sessionStorage.clickcount=Number(sessionStorage.clickcount)+1;
}
else
{
sessionStorage.clickcount = 0;
}

****************************************** HTML 5 end *******************************************************

最后推荐几个学习前端的好的网站(互联网是最好的老师)

1.极客学院(Video):http://www.jikexueyuan.com/path/html5/ (包含以HTML5为核心生态圈所有知识点)

2.W3C(文字+在线演示):http://www.w3school.com.cn/html5/ (其余知识自己在W3C school中寻找)

3.伯乐在线 http://www.jobbole.com/

  

上一篇:使用 IntraWeb (39) - THttpRequest、THttpReply


下一篇:机器学习中梯度下降法原理及用其解决线性回归问题的C语言实现