• 说说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的闭包。

     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/

      

  • 相关阅读:
    【Codeforces Round#279 Div.2】B. Queue
    210
    回溯
    HuffmanTree && HuffmanCode
    (转)STL
    2013 ACM/ICPC 长沙现场赛 A题
    不是数据库中的列,而是查询结果集中的列
    又出现新问题,所以又发现了之前的一些问题 (关于修改表单地址,要不要改回来的问题) 原因已经解决
    MyEclipse导入jquery-1.8.0.min.js等文件报错的解决方案
    为什么突然 选择删除的按钮失效???
  • 原文地址:https://www.cnblogs.com/RunForLove/p/4573016.html
Copyright © 2020-2023  润新知